Laden...

Forenbeiträge von romu2000 Ingesamt 291 Beiträge

19.03.2019 - 08:39 Uhr

Hallo,

habe es mit foreach hinbekommen.

Danke für die Hilfe.

Jetzt ist es nur so dass ich mein Programm währen den Abfragen nicht mehr nutzen kann !?!?
Erst nachdem alle Abfragen ausgeführt worden sind kann ich wieder auf mein Programm zugreifen.

Liegt wahrscheinlich am Thread.Sleep().

18.03.2019 - 22:10 Uhr

Hallo,

erst einmal danke für die ganzen Antworten.
Die Daten stammen aus einer Webabfrage von einem Kunden. Die 10 Sekunden Abfragezeit war nur ein Beispiel. Es können auch alle 5 Minuten eine Abfrage gestartet werden.

die Daten alss ich mir über Json Post request liefern. Es sind ca. 100 Datensätze die einmal täglich über eine SQL Datenbank eingelesen bekomme. Diese lasse ich mir dann Realtime im Datagridview anzeigen. Wir ein Wert grün in der jeweiligen Spalte weiß ich das ich persönlich etwas unternehmen muss.

Das ganze funktioniert auch soweit, in dem ich einen Button in jeder Row des Datagrids anklicke und dadurch den Webrequest ausführe.

Genial wäre es natürlich das ganze jeweils automatisiert zu einen bestimmten Zeitpunkt mit einem Abstand von z.B. 5 Minuten Reihe für Reihe durch das Datagridview abzufragen.

Nur habe ich leider keinen Anhaltspunkt wie ich das machen kann.

Der e.rowIndex liefert mit ja nur die entsprechende Reihe bei einem Klick auf selbige.

Ich habe einen Button in den ich den Code gerne einfügen würde und dann wie oben beschrieben automatisiert laufen lassen würde.

  
  
public void button2_Click(object sender, EventArgs e)  
        {  
System.Threading.Thread.Sleep(20000);  
  
            for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++)  
            {  
                  
                DataRow row = ((DataRowView)dataGridView1.Rows[e.RowIndex].DataBoundItem).Row;  
  
  
            var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://test.da?" + row[4].ToString());  
            httpWebRequest.ContentType = "application/json";  
            httpWebRequest.Method = "POST";  
  
            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();  
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))  
  
  
            {  
                var result = streamReader.ReadToEnd();  
                textBox1.Text = result.ToString();  
            }  
  
  
                if (textBox1.Text.Contains("666666"))  
                {  
                    textBox3.Text = "Test";  
                    dataGridView1[6, rowIndex].Style.BackColor = Color.Green;  
                }  
                else  
                {  
                    textBox3.Text = "Nein";  
                    dataGridView1[6, rowIndex].Style.BackColor = Color.Red;  
                }  
                      
  
  
                }  
            }   
  
  

Mit diesem Ansatz komme ich leider nicht weiter.

17.03.2019 - 13:41 Uhr

Hallo,

leider bekomme ich es nicht hin meinen Code entsprechend autmatisiert über eine foreach Schleife laufen zu lassen:


private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           DataRow row = ((DataRowView)dataGridView1.Rows[e.RowIndex].DataBoundItem).Row;

            
            var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://test.da?" + row[4].ToString());
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method = "POST";

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))


            {
                var result = streamReader.ReadToEnd();
                textBox1.Text = result.ToString();
            }

            
                if (textBox1.Text.Contains("666666"))
                {
                    textBox3.Text = "Test";
                    dataGridView1[6, e.RowIndex].Style.BackColor = Color.Green;
                }
                else
                {
                    textBox3.Text = "Nein";
                    dataGridView1[6, e.RowIndex].Style.BackColor = Color.Red;
                }

                if (textBox1.Text.Contains("55555"))
                {
                    textBox3.Text = "Test";
                    dataGridView1[7, e.RowIndex].Style.BackColor = Color.Green;
                }
                else
                {
                    textBox3.Text = "Nein";
                    dataGridView1[7, e.RowIndex].Style.BackColor = Color.Red;
                }

                if (textBox1.Text.Contains("44444"))
                {
                    textBox3.Text = "Test";
                    dataGridView1[8, e.RowIndex].Style.BackColor = Color.Green;
                }
                else
                {
                    textBox3.Text = "Nein";
                    dataGridView1[8, e.RowIndex].Style.BackColor = Color.Red;
                }

                if (textBox1.Text.Contains("3333"))
                {
                    textBox3.Text = "Test";
                    dataGridView1[9, e.RowIndex].Style.BackColor = Color.Green;
                }
                else
                {
                    textBox3.Text = "Nein";
                    dataGridView1[9, e.RowIndex].Style.BackColor = Color.Red;
                }

                if (textBox1.Text.Contains("xy"))
                {
                    textBox3.Text = "Test";
                    dataGridView1[11, e.RowIndex].Style.BackColor = Color.Black;
                }
                else
                {
                    textBox3.Text = "Nein";
                    dataGridView1[11, e.RowIndex].Style.BackColor = Color.Red;
                }

                if (textBox1.Text.Contains("xxxxxxxxxx") || textBox1.Text.Contains("Hybrid"))
                {
                    textBox3.Text = "Test";
                    dataGridView1[12, e.RowIndex].Style.BackColor = Color.Green;
                }
                else
                {
                    textBox3.Text = "Nein";
                    dataGridView1[12, e.RowIndex].Style.BackColor = Color.Red;
                }
            


        }

So funktioniert der Code durch klick auf die entsprechende Zelle.

Wie könnte ich das ganze automatisiert alle 10 Sekunden pro Row ausführen lassen?

Packe ich das ganze in eine foreach Schleife bekomme ich die Meldung das eventargs keine definition für e.rowindex enthält...
Welchen enventargs soll ich bei einem klick auf den Button weitergeben???

Über einen Ratschlag wäre ich sehr dankbar.

Beste Grüße

Ronny

19.03.2013 - 10:25 Uhr

Hallo,

vom Gedanken habe ich mir das so auch gedacht nur fehlt es mir leider bei der Umsetzung. Wie kann ich c# sagen das er mir die aktuelle Zeile mit der vorherigen abgleicht ?

Beste Grüße

19.03.2013 - 10:04 Uhr

Hallo,

ja, es handelt sich um ein DataGridView in welchem die Zeilen wie oben beschrieben gefärbt werden sollen.

Sorry für die Umstände.

Beste Grüße

18.03.2013 - 14:22 Uhr

hallo,

ja , das Problem ist, das bei jedem Kunden die Beleg ID praktisch die Auftragsnummer ist und diese wird pro Artikel vorne im Datagridview angezeigt und kann natürlich pro Auftrag variieren 😦

Grüße

18.03.2013 - 13:55 Uhr

Hallo zusammen,

ich stehe gerade wohl ein wenig auf dem Schlauch.

Gibt es eine möglichkeite in einem DataGridView spezielle Zeilen einzufärben ?

Das die Zeilen abwechselnd eine andere Farbe bekommen habe ich schon hinebkommen.

Ich möchte allerdings folgendes:

In der ersten Spalte steht die Beleg ID die ohne Probleme auch mal 10 Zeilen in Anspruch nehmen kann. Nun möchte ich die 10 Zeilen rot markieren und bein der nächsten Zeile die dann z.b. nur 5 Zeilen mit der gleichen Beleg ID nutzt die Zeilen weiss färben. Das ganze soll dann immer anhand der Beleg ID weiter gehen.

Hat da evtl. jemand einen Ratschlag für mich ?

Vielen dank im Voraus und Grüße

16.04.2010 - 14:03 Uhr

Hallo zusammen,

ich stehe hier gerade mal wieder auf dem Schlauch.

Ich möchte eine Anwendung programmieren in der man über den menustrip alles auswählen kann. Allerdings möchte ich nicht immer eine neue Form erstellen sondern verschiedenste inhalte sollen immer auf der gleichen Form angezeigt werden. Ich weiss nicht wie ich das realisieren soll ?!?! mit Panels ?

Fürher habe ich das immer mit TABControls gelöst. Das möchte ich jetzt aber nicht...

Zum besseren verständnis:
ich habe einen button aufträge und einen mit Rechnungen. Bei klick möchte ich das z.b. ein Datagrid der Aufträge angezeigt wird, bei kolick auf rechnung nur das Datagrid der Rechnungen. Das der Aufträge soll dann natürlich verschwinden. Kann man sowas mit Containern lösen ???

Grüße

ronny

01.04.2010 - 11:12 Uhr

fantastisch , 1000 DANK 😃

01.04.2010 - 10:42 Uhr

Hallo zusammen,

irgendwie stehe ich momentan total auf dem schlauch.

Ich hole mir den Benutzernamen und möchte diesen mit einem anderen vorgegebenen vergleichen.

string erlaubt = "Testdomaene\Testuser";             
string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name;             textBox1.Text = user;            
 if (erlaubt == user)            
 {                 button2.Enabled = false;           
  }

user und erlaubt sind definitiv gleich (ich habe nur wegen privatsphäre hier testdomaene/testuser gewählt).

wieso funktioniert das ganze nicht ?

Beste Grüße

ronny

17.02.2009 - 09:34 Uhr

danke Jack 😃)))))
ist wohl noch etwas zu früh heute 😃

17.02.2009 - 09:20 Uhr

Hallo nochmal,

vielen Dank für Deine Antwort.

Das mit Dialog.Result bringt schon das gewünschte Ergebnis, allerdings öffnet sich jetzt das Fenster 2 mal. Nicht sofort, sonder zuerst erscheint ein Fenster wie gewünscht. Beim Schliessen der Form wird aber noch ein Fenster erzeugt. Wenn ich das Dialog.Result rausnehme funktioniert es, allerdings wird dann auch nicht mein Timer erneut gestartet 😦


if (DateTime.Now.DayOfWeek.ToString() == "Tuesday" && (DateTime.Now.Hour < 12 || DateTime.Now.Hour > 14))
                    {
                        Idle frmIdle = new Idle();
                        timer2.Stop();
                        frmIdle.Vertreternummervonfrm1 = VTuserTextBox.Text;
                        frmIdle.ShowDialog();
                       if (frmIdle.ShowDialog() == DialogResult.Cancel)
                        {
                            lbl_Telefon_idle.Text = "0";
                            timer2.Start();
                        } 
                    } 

Komisch, komisch..... ich hatte schon versucht ein Thread.Sleep einzubauen, aber das bringt mal garnichts 😃

Anregungen hierzu sind sehr willkommen.

P.S:
Ich sollte vllt. noch dies hier erwähnen. Dadurch wird obige Anweisung ausgeführt :


private void timer2_Tick(object sender, EventArgs e)
        {
            
            timer2.Interval = 1000;
            timer2.Enabled = true;
            int value = int.Parse(this.lbl_Telefon_idle.Text) + 1;
            this.lbl_Telefon_idle.Text = value.ToString();
            
         if (lbl_Telefon_idle.Text == "10")
            {

                timer2.Stop();

..........................


Grüße

Ronny

16.02.2009 - 17:53 Uhr

hallo,

danke für die rasche antowrt, aber auch da erreiche ich nicht das gewünschte Ergebniss wenn der showdialog drunter steht.

Vllt. noch jemand eine Anregung ?

Grüße

Ronny

16.02.2009 - 17:48 Uhr

Hallo zusammen,

habe mal wieder eine kurze frage:

ich habe 2 Forms - Wenn ich Form2 schliesse soll ein Timer starten
Hier ist mein Code, allerdings funktioniert das ganze nicht wirklich.


Idle frmIdle = new Idle();
frmIdle.ShowDialog();                       
frmIdle.FormClosed += new System.EventHandler(timerausfuehren);

private void timerausfuehren(object sender, EventArgs e)
        {
            timer2.Start();
        }



kann mir evtl. jemand auf die Sprünge helfen ?

Viele Grüße

Ronny

16.02.2009 - 13:14 Uhr

SUPER !!!

1000 Dank - manchmal kanns echt sehr einfach sein 😉

Grüße

Ronny

16.02.2009 - 13:10 Uhr

hi,

funktioniert leider so auch nicht. Die messagebox wird zwar geöffnet, aber der Timer stoppt nicht !!! Es gehen viele messageboxen auf.

vllt. weiss noch jemand etwas rat ....

viele Grüße

ronny

16.02.2009 - 12:56 Uhr

Hallo nochmal , und vielen Dank für Eure Hilfe. Mit dem int parse klappts soweit wunderbar. Nur habe ich das Problem das ich den Timer nicht mehr stoppen kann 😦

Vllt. weiss ja evtl. jemand Rat.


private void timer2_Tick(object sender, EventArgs e)
        {
            
            timer2.Interval = 1000;
            timer2.Enabled = true;
            int value = int.Parse(this.lbl_Telefon_idle.Text) + 1;
            this.lbl_Telefon_idle.Text = value.ToString();
            if (Convert.ToInt32(lbl_Telefon_idle.Text) > 10)
            {
                MessageBox.Show("TATAAAA");
                timer2.Stop();
                
            }
        }

Kann es sein dass man einen Timer nicht im Timer_Tick Event stoppen kann ?
Müsste ich dann evtl. noch einen Timer3 laufen lassen der das lbl_telefonie_idle beobachtet ? Und wie siehts dann performance technisch aus wenn man mehrere Timer auf einer Anwendung laufen lässt ?

16.02.2009 - 12:22 Uhr

hi ihr beiden,

ich habs jetzt so versucht, allerdings zeigt mir das label lediglich immer die "99" an 😦


private void timer2_Tick(object sender, EventArgs e)
        {
            timer2.Interval = 1000;
            timer2.Enabled = true;
            for (int i = 0; i < 100; i++)
            {
                lbl_Telefon_idle.Text = Convert.ToString(i);
            }
        }

Vllt. hat ja sonst noch jmd. eine Idee.

Viele Grüße

Ronny

16.02.2009 - 12:04 Uhr

Hallo zusammen,

momentan streikt mein Hirn !!!!

Wie bekomme ich es hin, das mir ein Timer ein Labelinhalt jeweils um 1 erhöht ???
Ich möchte keine Uhrzeit oder sonstiges haben, lediglich ein Label das immer um eine Zahl erhöht wird.

Irgendwie bekomme ich gerade selbst sowas nicht hin !!!

Viele Grüße & Danke im Voraus

ROnny

29.01.2009 - 12:41 Uhr

hallo,

das hatte ich auch schon versucht gehabt, genauso wie mit CAST, allerdings ohne Erfolg.
Ich glaube zu wissen das convert nur in diesem Format funktionieren würde: 20080111

Fehlermeldung: Arithmetischer ÜPberlauffehler bei Konvertierung von expression in datetime
Weiss sonst evtl. noch jemand ne Lösung?

Grüße

Ronny

29.01.2009 - 12:30 Uhr

verwendetes Datenbanksystem: SQL 2005

Hallo zusammen,

ich habe in meiner Datenbank ein Feld das nennt sich datum als string mit folgendem Format: 11012008
Leider habe ich keine Möglichkeit aus diesem Feld ein normales Datumsfeld zu bekommen.

Wie kann ich dieses Feld durch eine Abfrage in ein normales Datumsfeld bekommen ? z.B: 11.01.2008

Über Hilfe würde ich mich sehr freuen.

Viele Grüße

ronny

11.12.2008 - 11:48 Uhr

die antwort lautet:

System.IO.Path.GetFileName(s)

Trotzdem Danke 😃

11.12.2008 - 11:43 Uhr

Hallo zusammen,

über DRag & Drop möchte ich gerne eine Datei in ein vordefiniertes Verzeichnis (hier C:&quot;) kopieren.


void listboxOnDragDrop(object obj, DragEventArgs dea)
        {
            if (dea.Data.GetDataPresent(DataFormats.FileDrop))
            {
                string[] dateien = (string[])dea.Data.GetData(DataFormats.FileDrop);

                foreach (string s in dateien)
                {
                    listBox1.Items.Add(System.IO.Path.GetFileName(s));
                    System.IO.File.Copy(s, "C:\\" + s );

                }  

            }
        }

Mit obigen Code passiert garnichts. Wenn ich allerdings beim Ziel zb. C:\test.exe" eingebe funktionierts.
Wie kann ich es anstellen dass mir der string, welcher ja den Dateinamen wiedergibt als ziel verwenden kann ?

Über hilfe würde ich mich sehr freuen

viele grüße

ronny

10.09.2008 - 12:15 Uhr

Hallo zusammen,

habe hier ein kleines propblemchen.

Über folgenden Code springe ich in einer Wiedervorlagenliste zum heutigen DATUM.


int heuteFound = this.wiedervorlagenlisteBindingSource.Find("wiedervorlagedatum", System.DateTime.Today);
            wiedervorlagenlisteBindingSource.Position = heuteFound;

Es gibt allerdings noch eine Spalte die nennt sich "wiedervorlagezeit".

Gibt es eine Möglichkeit über eine "UND" Bedingung dem DGV zu sagen dass er zu dem Prunkt springen soll an dem das Wiedervorlagedatum HEUTE ist und die kleinste UHRZEIT ????
Wie kann ich dass dann verknüpfen ?

Problem ist, dass ich die beiden Felder DATUM und UHRZEIT getrennt in meiner DB habe.

EDIT: Das DGV ist so aufgebaut dass das Datum und Uhrzeit aufsteigend sortiert sind. So soll es auch bleiben. So springt mir aber der Cursor dann immer zur grössten Uhrzeit.

Ich hoffe ich habe mich verständlich ausgedruckt.

Grüße

ROnny

27.08.2008 - 15:55 Uhr

weil ich nicht möchte wenn ein user auf den headerText klickt eine exception geworfen wird. Die exception kommt wirklich nur beim KLick auf die Headerüberschrift. Klicke ich daneben sortiert er mir das dgv wunderbar.

grüße

ronny

27.08.2008 - 14:49 Uhr

hallo erfinderdesrades,

danke für Deine Antwort.

das mit dem GUI und MDO hört sich für mich total schwierig an, und ich bin froh dass ich meine Anwendung jetzt soweit habe, wie Sie ist.
Aus diesem Grunde glaube ich dass es wohl von mir ein wenig zu viel verlangt wäre das ganze jetzt so zu machen wie Du es sagst.

Wie fange ich denn so ein mousedown ab ? Wie kann ich dem Programm sagen dass nur etwas passieren soll, wenn der Mauszeiger über der Schrift des Headers ist ? Wenn der Mauszeiger auf dem Pfeil rechts daneben ist funktionierts ja komischerweise.

Oder verstehe ich Dich jetzt falsch?

Grüße

ROnny

27.08.2008 - 12:08 Uhr

Hallo nochmal,

jetzt habe ich doch noch eine frage:


DataGridViewCell cell = (sender as DataGridView)[e.ColumnIndex, e.RowIndex];

wenn ich das dgv sortieren möchte erhalte ich folgende Fehlermeldung:

argumentoutofrangeexeption

Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.
Parametername: index

Der Fehler erscheint immer dann wenn ich auf die Schrift im Header klicke. Klicke ich daneben auf den Pfeil kommt keine Fehlermeldung...... Kann ich das irgendwie abfangen ?????

Weiss evtl. jemand Rat ?

Grüße

Ronny

26.08.2008 - 13:06 Uhr

super,

genau das wars.

1000dank, jetzt klappts perfekt.

grüße

ronny

26.08.2008 - 11:23 Uhr

hallo zusammen,

vielen Dank für die kurze Rundreise in den DatagridViews, aber so ganz schnall ich das ganze noch nicht.

Vllt. kann ich euch mal kurz aufzeigen was ich generell möchte:


if (angeklickterZelleninhalt =="x")
{
    Messagebox.show("X")
}

Wharscheinlich für PowerUser wie Ihr es seit absolut einfach, für mich aber ein Ding an dem ich mich jetzt schon den ganzen Morgen rumplage.

Hoffe Ihr könnt mir auf die Sprünge heöfen.

Grüße

Ronny

26.08.2008 - 10:16 Uhr

hallo kubi,

danke für deine Antwort.

Sehe ich es richtig, dass ich hier dann jeweils die Reihe UND die Zelle angeben muss ????

Ich weiss ja nicht in welche Zelle der Benutzer klickt. Und bei mehreren Zeilen wäre das ja ein unerhörter programmieraufwand.

Es geht grundsätzlich darum, die Zelle abzufangen in die der User klickt und dann mit einem Event darauf zu antworten.

Oder verstehe ich grundsätzlich mal wieder etwas falsch?

grüße

ronny

26.08.2008 - 09:34 Uhr

Hallo zusammen,

ich habe diverse CLICK events in mein DGV eingebaut.

Gibt es die Möglichkeit Zellen zu deaktivieren ? D.h. dass z.b. bei einem Mausklick auf eine Zelle nichts passiert?

Momentan mach ichs so :


if (e.ColumnIndex == neukundenaktion_KundenDataGridView.Columns["BDS"].Index)
                {
                    if (Convert.ToDateTime(dtp_NKWiedervorlageauswahl.Text) <= System.DateTime.Today.AddDays(10) | txt_NKanredeComboBox1.Text == "" | txt_NKnachnameTextBox1.Text == "")
                    {
                        MessageBox.Show("Bitte Eingaben beachten. Kein Ansprechpartner ? Wiedervorlage nicht mindestens 10 Tage grösser?");
                    }
                    
                    try
                    {
                        string strConnSQL;
                        string strSQL;
.
.
.
.
.

So kann ich ja leider nur auf ganze Spalten zugreifen. Wie kann ich es mit rows.Cell[0] schaffen , einen event abzufangen bzw. abzufeuern ?

Soll heissen, wie kann ich sagen, dass wenn in Zelle1 z.b. ein X vorkommt, eine messagebox aufgeht?


ros.cells[0] == "x" 

klappt irgendwie nicht.

sowas auch nicht:


DataGridViewRow rows = new DataGridViewRow();
                    if (rows.Cells[0].Value == "x")
                    {
                        MessageBox.Show("in progress");
                    }

p.s. mein dgv heisst "neukundendatagridview" , liegts evtl. daran?

Grüße

Ronny

25.08.2008 - 11:02 Uhr

Hallo zusammen,

hänge jetzt schon seit gestern an einem Problem bei dem ich absolut nicht weiterkomme:

hier der Code:

FOrm1:


private Neukundengewinnung NK = new Neukundengewinnung();

        private void NKuebergabe_doubleclicked (object sender, NKUebergabeEventArgs e)
        {
             DialogResult result = MessageBox.Show("Geänderte Daten werden gespeichert\r\nund die neue Adresse aufgerufen.\r\nEs werden KEINE Kontakte gespeichert.",
             "Caption", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (result == DialogResult.Yes)
                try
                {
                    Adressen_Update();

                    this.adressen21TableAdapter.FillByLinkedKdst (this.fDTELDBSQLDataSet.Adressen21, Convert.ToInt32 (e.NKKDNRuebergabe));
                    this.kdstTableAdapter.Fill(this.fDTELDBSQLDataSet.kdst, Convert.ToDecimal(e.NKKDNRuebergabe));
                    this.kontakteTableAdapter.Fill (this.fDTELDBSQLDataSet.kontakte, Convert.ToInt32(e.NKKDNRuebergabe));
                    this.aSPTableAdapter.Fill (this.fDTELDBSQLDataSet.ASP, Convert.ToInt32(e.NKKDNRuebergabe));
                    this.angebotshistorieTableAdapter.Fill (this.fDTELDBSQLDataSet.Angebotshistorie, Convert.ToString(e.NKKDNRuebergabe));
                    this.neukundengewinnungTableAdapter.Fill (this.fDTELDBSQLDataSet.Neukundengewinnung, Convert.ToInt32(kdnrTextBox1.Text));
                    Neukundengewinnung_Bilder_aktualisieren();
                    Wiedervorlagenliste_aktualisieren();
                    tabControl1.SelectedIndex = 0;
                    tabControl3.SelectedIndex = 0;
                }
                catch (SystemException ex)
                {
                    MessageBox.Show("Fehler beim Wiedervorlagenliste-Aktualisieren/Speichern. " + ex.Message);
                }
            
            MessageBox.Show("Test erfolgreich");

        }
        private void btn_NeukundengewinnungFormopen_Click(object sender, EventArgs e)
        {
            if (NK.Created == true)
            {
                MessageBox.Show("Wiedervorlagenliste ist bereits geöffnet");
            }
            else
            {
                NK = new Neukundengewinnung();
           
                NK.NKUebergabe += new Neukundengewinnung.NKUebergabeHandler(NKuebergabe_doubleclicked);
                NK.Show();
                
            }
        }

und hier Form2:


public delegate void NKUebergabeHandler(object sender, NKUebergabeEventArgs e);

        public event NKUebergabeHandler NKUebergabe;

        public class NKUebergabeEventArgs : System.EventArgs
        {
            private string muebergabe;

            public NKUebergabeEventArgs(string suebergabe)
            {
                this.muebergabe = suebergabe;
            }
            public string NKKDNRuebergabe
            {
                get
                { return muebergabe; }
            }
        }
        private void neukundenaktion_KundenDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            string suebergabe = this.neukundenaktion_KundenDataGridView.CurrentRow.Cells [5].Value.ToString();

            NKUebergabeEventArgs args = new NKUebergabeEventArgs(suebergabe);
            NKUebergabe(this, args);
        }

Die Fehlermeldung lautet:

Der Typ- oder Namespacename "NKUebergabeEventArgs" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)

Kann mir vllt. jemand auf die Sprünge helfen ?

ich komme einfach nicht weiter.

Viele Grüße & Danke im Voraus

Ronny

24.07.2008 - 15:06 Uhr

habs jetzt hinbekommen.

man muss zuerst den reportviewer reseten und dann datsource sowie den neuen bericht binden.


reportViewer1.Reset();
            Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 = new Microsoft.Reporting.WinForms.ReportDataSource();
            reportDataSource1.Name = "FDTELDBSQLDataSet_TXTBausteinesenden";
            reportDataSource1.Value = this.tXTBausteinesendenBindingSource;
            this.reportViewer1.LocalReport.DataSources.Add(reportDataSource1);
            this.reportViewer1.LocalReport.ReportEmbeddedResource = "test_update.Reports.Textbausteine_FRANCE.rdlc";

Danke trotzdem

Grüße

ROnny

24.07.2008 - 14:32 Uhr

hallo bernd,

aber genauso habe ich es doch gemacht !


reportViewer1.LocalReport.ReportEmbeddedResource = "test_update.Reports.Textbausteine_FRANCE.rdlc";

allerdings nimmt er wie oben beschrieben immer nur den standardreport und nicht den, den ich hier angegeben habe.

grüße

ronny

24.07.2008 - 13:57 Uhr

hallo zusammen,

ich habe 2 verschiedene reports: report 1 und report 2.

report1 ist standardmässig an den reportviewer gebunden.

wie stelle ich es nun an um mir zur laufzeit report2 (mit gleichen dataset u.a.) anzeigen zu lassen.

mit folgendem code passiert mehr oder weniger gar nichts. es wird immer nur der report 1 angezeigt:


  reportViewer1.LocalReport.ReportEmbeddedResource = "test_update.Reports.Textbausteine_FRANCE.rdlc";
         
            texte_MajestyDataGridView.Visible = false;
            reportViewer1.Visible = true;
            textTextBox.Visible = false;
            txt_grusstext.Visible = false;
            txt_ueberschrift.Visible = false;
            lbl_grusstext.Visible = false;
            lbl_ueberschrift.Visible = false;
            button6.Visible = true;


         

            if (rb_repEinkauf.Checked == true)
            {
                reportAnrede = txt_REPanrede.Text;
                reportTitel = txt_reptitel.Text;
                reportNachname = txt_repnachname.Text;
            }
            if (rb_repChef.Checked == true)
            {
                reportAnrede = txt_REPchefanrede.Text.Trim();
                reportTitel = txt_REPcheftitel.Text.Trim();
                reportNachname = txt_REPchefnachname.Text;
            }
            if (rb_repLabor.Checked == true)
            {
                reportAnrede = txt_REPlaboranrede.Text.Trim();
                reportTitel = txt_REPlabortitel.Text.Trim();
                reportNachname = txt_REPlabornachname.Text;
            }
            if (rb_repProphy.Checked == true)
            {
                reportAnrede = txt_REPprophanrede.Text.Trim();
                reportTitel = txt_REPprophtitel.Text.Trim();
                reportNachname = txt_REPprophnachname.Text;
            }
            if (rb_repSonstiges.Checked == true)
            {
                reportAnrede = txt_REPsonstigesanrede.Text.Trim();
                reportTitel = txt_REPsonstigestitel.Text.Trim();
                reportNachname = txt_REPsonstigesnachname.Text;
            }
            if (rb_repSonstiges.Checked == false & rb_repEinkauf.Checked == false & rb_repLabor.Checked == false & rb_repChef.Checked == false & rb_repProphy.Checked == false)
            {
                reportAnrede = txt_REPanrede.Text.Trim();
                reportTitel = txt_reptitel.Text.Trim();
                reportNachname = txt_repnachname.Text;
            }
            
            

            fDTELDBSQLDataSet.TXTBausteinesenden.Clear();
            fDTELDBSQLDataSet.TXTBausteinesenden.AddTXTBausteinesendenRow (bausteinnrTextBox.Text,txt_ueberschrift.Text,textTextBox.Text,Convert.ToDecimal (kdnrTextBox1.Text), txt_grusstext.Text, name1TextBox.Text, name2TextBox.Text, name3TextBox.Text, strasseTextBox.Text, plzTextBox.Text, ortTextBox.Text, landkzTextBox.Text, landTextBox.Text );
            ReportParameter[] prms = { new ReportParameter("Kundennr", kdnrTextBox1.Text),
                                     new ReportParameter("Name1", name1TextBox.Text),
                                     new ReportParameter("Name2", name2TextBox.Text),
                                     new ReportParameter("Name3", name3TextBox.Text),
                                     new ReportParameter("strasse", strasseTextBox.Text),
                                     new ReportParameter("plz", plzTextBox.Text),
                                     new ReportParameter("ort", ortTextBox.Text),
                                     new ReportParameter("land", landTextBox.Text),
                                     new ReportParameter("Anrede", reportAnrede),
                                     new ReportParameter("Titel", reportTitel),
                                     new ReportParameter("Nachname", reportNachname),
                                     new ReportParameter("vtnr", VTuserTextBox.Text.Trim()),
                                     new ReportParameter("vtvorname", VTvornameTextBox.Text),
                                     new ReportParameter("vtnachname", VTnachnameTextBox.Text),
                                     new ReportParameter("standort", VTstandortTextBox.Text.Trim()),                        
                                     };
            reportViewer1.LocalReport.SetParameters(prms);
            
            this.reportViewer1.RefreshReport();

Was mache ich denn falsch ?

Grüße

ronny

22.07.2008 - 19:15 Uhr

wie oben bereits geschrieben hatte ich versucht das ganze mit parametern zu machen.
so hats dann auch geklappt.
Mein Problem ist nur, dass mir GIF Bilder nicht erkannt werden (rotes Kreuz) wo hingegen jpg. Dateien Problemlos erkannt werden.

vllt. kennt ja doch jemand einen Workaround für dieses Phänomen.

Grüße

Ronny

22.07.2008 - 11:25 Uhr

hi Jack,

ich hatte versucht einen Paramter zu erstellen.

Allerdings wurde mir dann das Bild nicht mehr erkannt.

Edit:// Habs hinbekommen !

Grüße

Ronny

22.07.2008 - 10:40 Uhr

Hallo mal wieder,

iregndewie stehe ich gerade auf dem Schlauch.

Ich habe einen Report über den ich als Extern Image ein Bild einfüge. Der Value ist file:///C:test.gif
Funktioniert super.

Wie stelle ich es an dass ich diesen Wert zur Laufzeit ändern kann ?

Alle versuche scheiterten bisher kläglich.

Viele Grüße

ROnny

18.07.2008 - 11:59 Uhr

hallo ihr beiden,

bisher habe ich das markieren so gelöst:


sTATIST_ADRESSEN21DataGridView1.CurrentRow.DefaultCellStyle.BackColor = Color.LightBlue;

Das hat ja funktioniert, nur beim neu zeichnen des DGV war die markierung leider weg.

Den Hinweis vom ErfinderdesRades finde ich super 😉

Nur steh ich ein wenig auf dem Schlauch bei der Umsetzung. Ich habe jetzt in meinen tableadapter noch eine weitere Spalte markiert hinzugefügt.
Wie stelle ich es denn am einfachsten an, beim doppelklick auf die Zeile (1.spalte ist die Kudnennummer) die Spalter markiert im tableadapter mit einem X zu füllen bzw. wie frage ich dann diesen Tableadapter ab , das er mir die mit X gekennzeichneten Spalten mit einer anderen Hintergrundfarbe belegt?

Oder wäre vllt. doch die Lösung von jürgen besser? nru wie kann ich das DGV abfragen ob eine Spalte bereits markiert ist???

Über Hilfe würde ich mich sehr freuen.

Viele Grüße

Ronny

18.07.2008 - 11:41 Uhr

verwendetes Datenbanksystem: SQL2005

Hallo zusammen,

ich habe mal 2 grundsätzliche Fragen:

  1. Wie kann ich bei durch den Designer erstellten Tableadaptern feststellen ob auch wirklich die von mir gewünschten Daten geladen wurden ?
    Ich mache es momentan mit try und catch ...gibt es noch eine andere möglichkeitß

  2. Wenn ich eine Select TOP (1) anweisung ausführe, werden dann alle Datensätze durchlaufen und mir dem Kriterium entpsrechende Datensatz angezeigt ?
    Hintergund: Ich habe eine Abfrage die mir nach einem Wiedervorlagedatum selektiert. Ich habe das Gefühl das er mir nicht immer richtig die Abfrage macht.

Vielen Dank im voraus

Grüße

Ronny

17.07.2008 - 11:12 Uhr

danke jack,

habs dank deiner ideen hinbekommen.

Habe nur noch eine funktion davor geschrieben ...

grüße

ronny

17.07.2008 - 11:10 Uhr

Hallo zusammen,

ich stehe gerade vor einem unlösbaren Problem :

ich habe ein TabPage , darauf ein DataGridview auf dem ich mir nach einem doppelklick, die angeklickte Zeile farbig hervorhebe.
Funktioniert soweit einwandfrei.

Ich lasse allerdings durch tabpage.remove die tabpage kurzzeitig verschwinden und rufe sie später wieder mit tabpage.add auf. Die daten im DGV sind noch vorhanden (werden auch nicht extra neu geladen), nur verschwindet mir die markierung der Zeile.

An was kann denn das liegen, und wie kann ich soetwas in den Griff bekommen ?

Viele Grüße

Ronny

P.S: habs schon versucht mit tabpage.hide() und tabpage.visible = false und true , allerdings ohne Erfolg.
Bin ziemlich ratlos.

14.07.2008 - 16:42 Uhr

hi nochmal,

ich habs jetzt so gemacht:


test_update.Properties.Settings.Default["FDTELDBSQLConnectionString"] = "Data Source=FDSERVER01\\FDSQL;Initial Catalog=FDTEL_FR_SQL_2008;Integrated Security=true";

Hier ist es nun so, dass er mir die Änderung gleich nimmt. Allerdings kann ich wenn ich einmalig den Connectionstring geändert habe, diesen nicht wieder zurückändern. An was liegt denn das?

Grüße

Ronny

14.07.2008 - 15:49 Uhr

kann ich das irgendwie ändern , dass er ir die app.config nur beim start liest??

Was meinst Du mit Deinem 2ten Abschnitt ?
Wo kann ich den connectionstring noch zuweisen ??? Ich habe meistens mit dem Designer die TableAdpater erstellt. (ich weiss dass das unter Euch profis nicht so gern gesehen ist, hat mir aber extrem die Arbeit für den Anfang erleichtert.).

Grüße

ROnny

14.07.2008 - 15:29 Uhr

hallo mal wieder,

habs dank jürgen jetzt soweit mal hinbekommen.
Ich habe nur ein merkwürdiges problem.

Wenn ich anhand meines Codes den neuen Connectionstring in die config schreibe, benötigt mein Porgramm immer einen neustart, damit er mir den Connectionstring zur Verwendung in meinem Programm freigibt. Kann ich das umgehe, oder gibt es evtl. eine generell einfachere Lösung den Connectionstring zur Laufzeit zu ändern ???

Hier mal mein Code:


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox1.Text == "DE")
            {
                pictureBox2.Image = Properties.Resources.de;
                try
                {
                    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                    // set the new values
                    config.ConnectionStrings.ConnectionStrings["test_update.Properties.Settings.FDTELDBSQLConnectionString"].ConnectionString = "Data Source=FDSERVER01\\FDSQL;Initial Catalog=FDTEL_DE_SQL_2008;Integrated Security=true";

                    // save and refresh the config file
                    config.Save(ConfigurationSaveMode.Full);
                    ConfigurationManager.RefreshSection("connectionStrings");
                    label10.Text = Convert.ToString(ConfigurationManager.ConnectionStrings["test_update.Properties.Settings.FDTELDBSQLConnectionString"].ConnectionString);
                    this.userTableAdapter.Fill(this.fDTELDBSQLDataSet.user);
                    this.textBox1.Refresh();
                }
                catch (SystemException ex)
                {
                    MessageBox.Show(ex.Message);
                }
                try
                {
                    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                    // set the new values
                    config.ConnectionStrings.ConnectionStrings["test_update.Properties.Settings.MajestyConnectionString"].ConnectionString = "Provider=VFPOLEDB;Data Source=\\\\Fdserver01\\WAWI\\WAWI\\WAWI.DBC;Collating Sequence=MACHINE;Collating Sequence=MACHINE";

                    // save and refresh the config file
                    config.Save(ConfigurationSaveMode.Full);
                    ConfigurationManager.RefreshSection("connectionStrings");
                    label11.Text = Convert.ToString(ConfigurationManager.ConnectionStrings["test_update.Properties.Settings.MajestyConnectionString"].ConnectionString);
                    this.userTableAdapter.Fill(this.fDTELDBSQLDataSet.user);
                    textBox1.Refresh();
                }
                catch (SystemException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            else
            {
                pictureBox2.Image = Properties.Resources.fr;
                try
                {
                    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                    // set the new values
                    config.ConnectionStrings.ConnectionStrings["test_update.Properties.Settings.FDTELDBSQLConnectionString"].ConnectionString = "Data Source=FDSERVER01\\FDSQL;Initial Catalog=FDTEL_FR_SQL_2008;Integrated Security=true";

                    // save and refresh the config file
                    config.Save(ConfigurationSaveMode.Minimal);
                    ConfigurationManager.RefreshSection("connectionStrings");
                    label10.Text = Convert.ToString(ConfigurationManager.ConnectionStrings["test_update.Properties.Settings.FDTELDBSQLConnectionString"].ConnectionString);
                }
                catch (SystemException ex)
                {
                    MessageBox.Show(ex.Message);
                }
                try
                {
                    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                    // set the new values
                    config.ConnectionStrings.ConnectionStrings["test_update.Properties.Settings.WAWIConnectionString"].ConnectionString = "Provider=VFPOLEDB;Data Source=\\\\Fdserver01\\WAWI\\WAWI06\\WAWI.DBC;Collating Sequence=MACHINE;Collating Sequence=MACHINE";

                    // save and refresh the config file
                    config.Save(ConfigurationSaveMode.Minimal);
                    ConfigurationManager.RefreshSection("connectionStrings");
                    label11.Text = Convert.ToString(ConfigurationManager.ConnectionStrings["test_update.Properties.Settings.WAWIConnectionString"].ConnectionString);
                }
                catch (SystemException ex)
                {
                    MessageBox.Show(ex.Message);
                }
                }
        }

11.07.2008 - 11:53 Uhr

Hallo nochmal,

nach langem Tüfteln stehe ich noch vor einem kleinen Problem beim schreiben in die App.config.

Hier mal die App.config:


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="test_appconfig.Properties.Settings.FDTEL_DE_SQL_2008_NEUConnectionString"
            connectionString="Data Source=FDSERVER01\FDSQL;Initial Catalog=FDTEL_DE_SQL_2008_NEU;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

und hier mein Code:


private void button1_Click(object sender, EventArgs e)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            // set the new values
            config.ConnectionStrings.ConnectionStrings["FDTEL_DE_SQL_2008_NEUConnectionString"].ConnectionString = "Blubberblasenterror";

            // save and refresh the config file
            config.Save(ConfigurationSaveMode.Minimal);
            ConfigurationManager.RefreshSection("connectionStrings");
        }

Ich erhalte folgende Fehlermeldung:

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."}

Bitte verschont mich jetzt mit dem Verweisen auf die FAQ Nullrefernz. Hier habe ich schon gelesen. Ich glaube eher das etwas am Namen nicht stimmt. Kann das sein ?

Grüße

Ronnyx

11.07.2008 - 09:44 Uhr

ich habe 2 DATASETS mit unterschiedlichen Connectionstrings aber identischem Aufbau. Wäre es sinnvoller nur die Connectionstrings auszutauschen ? Wenn ja, wie geht sowas ? ich kann ja scheinbar nicht in meine app.config schreiben.

Und wenn ich das hier versuche


System.Configuration.Configuration config =ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            config.AppSettings.Settings["oldPlace"].Value = "3";     
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings"); 

erhalte ich folgende Fehlermeldung:

Fehler 2 Der Typ- oder Namespacename "Configuration" ist im Namespace "System.Configuration" nicht vorhanden. (Fehlt ein Assemblyverweis?)

11.07.2008 - 09:31 Uhr

Hallo Jürgen,

mein Problem ist,

dass mein programm soweit eigentlich fertig ist.

Nun habe ich noch eine zweite Datenbank die mit dem selben Programm aufgerufen werden soll. (Aufbau der Datenbank entspricht zu 100% der ersten Datenbank).

Um nun nicht im ganzen Programm überall neue Fill-Methoden zu schreiben, hatte ich mir gedacht, dass ich evtl. über eine Variable nur den Datasetnamen verändern könnte.

Aber dies scheint ja wohl nicht zu gehen !?

Wie kann ich denn am schnellsten und ohne grossen Aufwand mein programm Multi-Datenabnkfähig machen ???

10.07.2008 - 22:29 Uhr

ich hole mir ja so , die daten aus einem Tableadapter:


this.tableadapter.fill(this.Datasetname1.tableadapter);

Ich habe 2 Datasets die absolut identisch aufgebaut sind, aber auf 2 verschiedene Datenbanken zugreifen.

Ich würde nun gerne während das Programm läuft den Datasetnamen austauschen.


this.tableadapter.fill(this.Datasetname2.tableadapter);

Der Datasetname wurde zuvor als Variable definiert....

Viele Grüße

Ronny