Autor Beitrag
m-s
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Mo 04.04.11 17:26 
Hallo Zusammen,

Ich habe nen Problem in einer Form einen Zustand wieder herzustellen. Ich habe schon ewig tausend Sachen hin- und her versucht aber mir fehlt einfach das Wissen. Ich beschreib mal was ich mache und hänge den Code dran.

Wäre schön wenn mir jemand weiter helfen kann.

Ich bin auf einer Form die auf die Tabelle Lizenzen im Detail guckt. Mit dieser Tabelle sind andere Tabellen verbunden, die Tabellen Kunden und Produkte.
Um dem Kunden eine Mail zu senden z.B. mit seinem Lizenzschlüssel schaut das Programm (also der Button s.u.) in die Tabellen Kunde und Produkte und holt dort Informationen. Den Vor- und Nachnamen, sowie die Mailadresse aus der Tabelle Kunden und den RegistrierMailText aus der Tabelle Produkte.

Daraus wird dann alles zusammen gezimmert, was die (winzige) Klasse Mail braucht um eine Mail zu versenden.

Durch die Art- und Weise wie ich an die Daten komme, nämlich durch entsprechende Abfragen die DataTable begrenzen, kann ich anschließend nicht mehr in den Lizenzdatensätzen blättern. Bzw. ich kann in den Datensätzen blättern, aber die Felder Kunde und Produkt bleiben leer, weil das ja in den DataTables nur noch je ein Datensatz vorhanden ist.

Um nun wieder alle Felder richtig angezeigt zu bekommen, setze ich die DataTable aller drei Tabellen wieder zurück. Man kann also wieder normal blättern, aber die Position in der Tabelle Lizenzen ist verloren gegangen.

Wenn das Vorgehen im Button soweit OK ist, dann fehlt mir nur ein Stück Code um mir vor dem Generieren der Mail die Position in der Tabelle Lizenzen zu merken und sie hinterher wieder herzustellen. Genau das ist mir bisher aber nicht gelungen.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
        private void btn_mail_Click(object sender, EventArgs e)
        {
            string mailtext;
            string subjekttext;
            string empfaenger;

            if ((produktComboBox.Text == string.Empty) || (kundeComboBox.Text == string.Empty))
            {
                MessageBox.Show("Produkt und Kunde müssen gewählt sein, um eine Mail zu versenden!""Fehler beim Senden der Mail", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // Anrede erstellen
            mailtext = "Guten Tag " + kundeComboBox.Text + ",\n\n";

            // Regtext aus dem Produkt holen
            this.produktTableAdapter.FillBy_produkt_ueber_id(this.antiviruslizenzDataSet.produkt, Convert.ToInt32(produktComboBox.SelectedValue));
            DataRow zeile = this.antiviruslizenzDataSet.produkt.Rows[0];
            mailtext = mailtext + (string)zeile["regtext"];

            // mailtext um RegInfo erweitern
            this.kundeTableAdapter.FillBy_Kunde_ueber_id(this.antiviruslizenzDataSet.kunde, Convert.ToInt32(kundeComboBox.SelectedValue));
            DataRow zeileKunde = this.antiviruslizenzDataSet.kunde.Rows[0];
            mailtext = mailtext + "\n\nVorname: " + (string)zeileKunde["vorname"] + "\nNachname: " + (string)zeileKunde["nachname"] + "\nLizenzschlüssel: " + lizenzschluesselTextBox.Text;

            // Empfänger aus dem Kundenstamm holen
            empfaenger = (string)zeileKunde["email"];

            // Subjekt erstellen
            subjekttext = "Registrierung für " + produktComboBox.Text;            

            // Mail ans System senden
            Mail mail = new Mail();
            mail.SendenMailto(empfaenger, subjekttext, mailtext);

            // Adapter wieder zurück setzen            
            this.produktTableAdapter.Fill(this.antiviruslizenzDataSet.produkt);
            this.kundeTableAdapter.Fill(this.antiviruslizenzDataSet.kunde);
            this.lizenzenTableAdapter.Fill(this.antiviruslizenzDataSet.lizenzen);            
        }


Zuletzt bearbeitet von m-s am Do 07.04.11 17:12, insgesamt 1-mal bearbeitet
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 07.04.11 11:27 
Ist mein Code so schlecht, habe ich die Frage schlecht formuliert?
Ich hatte gehofft das ist nen Zweizeiler der mir fehlt :)

_________________
Gruß Markus
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Do 07.04.11 18:52 
Hallo,
also die Frage ist schon ziemlich komisch gestellt... Aber ich probiere es trotzdem mal.
Ich nehme mal an, dass Du zum Start der Anwendung die Daten aus der Datenbank in das DataSet füllst und dann einfach nur anzeigst.
Verstehe nicht so richtig, warum Du in der Mailsende-Funktion (diese sollte übrigens nicht direkt im EventHandler stehen, sondern als eigene Prozedur) die Tabellen wieder leerst und dann wieder zur Datenbank rennst, um einen Wert zu erhalten.
Suche doch einfach in den gefüllten Tabellen nach den Rows, die Du benötigst!
Also konkret so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
...
var produktRow = antiviruslizenzDataSet.produkt.First(x => x.id == Convert.ToInt32(produktComboBox.SelectedValue));
var kundenRow = antiviruslizenzDataSet.kunde.First(x => x.id == Convert.ToInt32(kundeComboBox.SelectedValue));

//alternativ kannst Du auch das schreiben, wenn der Wert, über den gesucht wird, der Primärschlüssel ist
//var produktRow = antiviruslizenzDataSet.produkt.Find(Convert.ToInt32(produktComboBox.SelectedValue));

string regtext = produktRow.regtext; //ist doch ein typisiertes DataSet, also greife dierekt auf die Properties zu!
string vorname = kundenRow.vorname;
string nachname = kundenRow.nachname;
...
So bleiben die Daten im DataSet umangetastet und Du musst auch nicht immer wieder zur Datenbank rennen. Wozu auch?
Ich denke, dass sich so auch die Frage nach dem "Zustand wiederherstellen" erledigt hat, oder was meinst Du damit?
LG,

Für diesen Beitrag haben gedankt: m-s
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 07.04.11 23:15 
Hi Trashkid2000,

ja super.
Genau das hat mir gefehlt. Ich wusste mir immer nicht zu helfen, wie ich einen Datensatz selektieren kann, ohne den TabelAdapter neu (begrenzt) zu füllen. Und wie ich an die Properties der Tabelle komme.

Habe den Code entsprechend umgeschrieben und somit hat sich das Zurücksetzen der Form also erledigt.

Danke.

Zu Entscheiden wann man eine eigene Methode, wann eine Klasse und was man einfach in den Event schreibt, fällt mir immer noch sehr schwer.
Ich bin es eigentlich gewohnt alles da zu machen wo ich es brauche. Wenn ich merke dass ich die Funktion noch wo anders brauchen kann, schreibe dann immer wieder mal die Programme um, lagere in Methoden oder Klassen aus.

Auf jeden Fall bin ich schon mal einen echten Schritt weiter. Auf die Art kann ich ne Menge umschreiben, was ich immer so blöd gelöst habe.

_________________
Gruß Markus
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 28.04.11 10:37 
user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
...
ausblenden C#-Quelltext
1:
2:
3:
...
var produktRow = antiviruslizenzDataSet.produkt.First(x => x.id == Convert.ToInt32(produktComboBox.SelectedValue));
var kundenRow = antiviruslizenzDataSet.kunde.First(x => x.id == Convert.ToInt32(kundeComboBox.SelectedValue));

Kannst Du mir den Teil noch mal genauer erklären.
Ich möchte in einem anderen Programm in einer Tabelle nach einem Wert in einem Feld suchen. Der Wert ist nicht eindeutig (kann also öfter vorkommen) und ist nicht der primäre Schlüssel. Das Feld heißt fk_kNummer

Ich habe das so versucht, bekomme aber eine Exception, das der Wert nicht vorhanden ist.

ausblenden C#-Quelltext
1:
var PferdKundenZeile = _pho_soDataSet.Kunde_Pferd.First(x => x.fk_kNummer == r_id);					


Wenn ich mit F9 reingucke hat x 0, r_id hat 1. Es gibt in der Tabelle aber eine fk_kNummer 1.

Eigentlich möchte ich später eine Abfrage machen (ich dachte vielleicht mit foreach oder so). Es sollen dann in allen Zeilen in denen die fk_kNummer mit r_id übereinstimmt in einem zweiten Feld (fk_pNummer) nach einem Wert gesucht werden. Hat dieses einen bestimmten Wert soll eine Aktion erfolgen, ansonsten nicht.

Wäre super wenn ich da noch nen Tipp bekomme.

_________________
Gruß Markus
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 28.04.11 14:05 
Hab's anders hinbekommen.

_________________
Gruß Markus
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Do 28.04.11 16:51 
Hallo,
user profile iconm-s hat folgendes geschrieben Zum zitierten Posting springen:
Hab's anders hinbekommen.
Und wie?

Also, wenn Du den Ausdruck
ausblenden C#-Quelltext
1:
var PferdKundenZeile = _pho_soDataSet.Kunde_Pferd.First(x => x.fk_kNummer == r_id);					

verwendest, musst Du Dir sicher sein, dass sich in der Tabelle "Kunde_Pferd" mindestens ein Datensatz befindet, bei dem der Filterausdruck wahr ist. Wird kein Datensatz gefunden, so gibt es eine Exception.

Wenn Du als prüfen willst, ob sich ein Datensatz in der Table befindet, nutze lieber .FirstOrDefault(...)Wird kein Datensatz gefunden, so ist der zurückgegebene Wert null.

Aber Du meinst ja eh, dass sich mehrere Datensätze mit der Nummer in der Table befinden können, also willst Du ja sicherlich alle betreffenden zurückbekommen. Also so:
ausblenden C#-Quelltext
1:
var PferdKundenZeilen = _pho_soDataSet.Kunde_Pferd.Where(x => x.fk_kNummer == r_id);					

LG
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 28.04.11 17:30 
user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
user profile iconm-s hat folgendes geschrieben Zum zitierten Posting springen:
Hab's anders hinbekommen.
Und wie?


Die erste If Abfrage gibt es nur, weil ich nicht wusste, wie ich sonst direkt nach dem Aufruf der Form den richtigen Zustand herstellen soll.
Die u.g. Methode wird unter anderem am Ende von Load des Form aufgerufen, damit der Button richtig aussieht, wenn die Form dargestellt ist.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
  public void pferdKundenAbfragen()
  {
    // Tabelle Kunde_Pferd in table schreiben    
    DataTable table;
    table = _pho_soDataSet.Tables["Kunde_Pferd"];

    // Wenn Form noch nicht geladen auf den ersten Datensatz positionieren
    if (pNummerTextBox.Text == string.Empty)
    {
        DataRow dr = _pho_soDataSet.Pferd.Rows[0];
        r_Pferd_ID = Convert.ToInt64(dr["pNummer"]);
    }
    else // Ansonsten die ID aus dem Textfeld holen
    {
      r_Pferd_ID = Convert.ToInt64(pNummerTextBox.Text);
    }

    // Jede Zeile der Tabelle durchgehen ob die Kombination Pferd_Kunde existiert
    foreach (DataRow row in table.Rows)
    {
      if ((Convert.ToInt64(row["fk_kNummer"]) == r_Kunden_ID) && (Convert.ToInt64(row["fk_pNummer"]) == r_Pferd_ID))
      {
        //MessageBox.Show("Gefunden");
        btn_pferd_zuweisen.BackColor = Color.Red;
        btn_pferd_zuweisen.Text = "Zuweisung aufheben";
        break;
      }
      else
      {
        btn_pferd_zuweisen.BackColor = Color.Khaki;
        btn_pferd_zuweisen.Text = "Pferd Kunden Zuweisen";
      }
    }
  }

Kann man das so lassen oder isset ganz gruselig?

_________________
Gruß Markus
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Do 28.04.11 18:41 
Hi,
user profile iconm-s hat folgendes geschrieben Zum zitierten Posting springen:
Kann man das so lassen oder isset ganz gruselig?
Naja, also Du hast ja ein typisiertes DataSet (wie man ansatzweise sieht). Wie z.B. hier:
ausblenden C#-Quelltext
1:
_pho_soDataSet.Pferd					

Aber ich frage mich, warum Du die Typisierung dann ignorierst, wie z.B. hier:
ausblenden C#-Quelltext
1:
table = _pho_soDataSet.Tables["Kunde_Pferd"];					

Da ich im Moment eh Langeweile habe, bin ich einfach mal so frei:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
public void pferdKundenAbfragen()
{
  var table = _pho_soDataSet.Kunde_Pferd;
  // Wenn Form noch nicht geladen auf den ersten Datensatz positionieren
  if (string.IsNullOrEmpty(pNummerTextBox.Text))
  {
    var dr = _pho_soDataSet.Pferd.FirstOrDefault();
    if (dr != null)
    {
      r_Pferd_ID = dr.pNummer; 
    } 
    else
    {
      //es wurde keine Zeile in der Pferd-Table gefunden, was soll nun getan werden?
    }      
  }
  else // Ansonsten die ID aus dem Textfeld holen
  {
    Int64 value;
    if (Int64.TryParse(pNummerTextBox.Text, out value))
    {
      r_Pferd_ID = value; 
    }
    else
    {
      //es wurde kein gültiger Wert eingegeben
    }
  }
  
  var foundedRow = table.FirstOrDefault(x => x.fk_kNummer == r_Kunden_ID && x.fk_pNummer == r_Pferd_ID);
  if (foundedRow != null)
  {
    //es wurde mind. ein Datensatz gefunden
    //MessageBox.Show("Gefunden");
    btn_pferd_zuweisen.BackColor = Color.Red;
    btn_pferd_zuweisen.Text = "Zuweisung aufheben";
  }
  else
  {
    btn_pferd_zuweisen.BackColor = Color.Khaki;
    btn_pferd_zuweisen.Text = "Pferd Kunden Zuweisen";    
  }
}

LG
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 28.04.11 20:10 
Hallo Marko,

erst mal vielen Dank.
Die Frage warum ich ich das nicht selber richtig mache, ich habe keine Ahnung wie :)

Ich hatte meinen Fernlehrer gefragt wie ich vorgehen soll, wenn ich in eine Tabelle schreiben will, oder von ihr lesen, wenn sie nicht auf dem Form zu sehen ist. Also ich keinen BindingNavigator für das Speichern oder Anlegen habe, keine Felder in der User schreiben kann usw.
Entweder war meine Frage schlecht formuliert oder was immer ...
Jedenfalls führten mich seine Antworten in die Richtung mit den eckigen Klammern.

Ich habe mich dann mit dem Galileo Buch versucht vorzutasten.
openbook.galileocomp...155ad7954826c62d7d9a

Dein Code ist klasse. Ich kann ihn auch so ungefähr verstehen. Leider nicht so weit adaptieren dass ich auch andere Funktionen entsprechend umschreiben kann. Die Tabelle aus dem DataSet ner Variablen zuweisen geht noch :) aber dann . . .

Ich stelle den Code mal hier rein.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
        private void btn_pferd_zuweisen_Click(object sender, EventArgs e)
        {
            if (btn_pferd_zuweisen.Text == "Zuweisung aufheben")
            {
                //this.kunde_PferdTableAdapter.Fill(this._pho_soDataSet.Kunde_Pferd);
                //DataTable table;
                //table = _pho_soDataSet.Tables["Kunde_Pferd"];
                var table = _pho_soDataSet.Kunde_Pferd;
                
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    if ((Convert.ToInt64(table.Rows[i]["fk_kNummer"]) == r_Kunden_ID) && (Convert.ToInt64(table.Rows[i]["fk_pNummer"]) == Convert.ToInt64(pNummerTextBox.Text)))
                    {
                        table.Rows[i].Delete();                        
                        btn_pferd_zuweisen.BackColor = Color.Khaki;
                        btn_pferd_zuweisen.Text = "Pferd Kunden Zuweisen";
                    }
                    this.kunde_PferdTableAdapter.Update(_pho_soDataSet.Kunde_Pferd);
                }
            }
            else
            {
                //DataTable table;
                //table = _pho_soDataSet.Tables["Kunde_Pferd"];
                var table = _pho_soDataSet.Kunde_Pferd;

                // Add a row
                //DataRow newRow = table.NewRow();
                var dr = _pho_soDataSet.Kunde_Pferd.NewRow();                
                dr["fk_kNummer"] = r_Kunden_ID;
                dr["fk_pNummer"] = Convert.ToInt64(pNummerTextBox.Text);

                //newRow["fk_kNummer"] = r_Kunden_ID;                
                //newRow["fk_pNummer"] = Convert.ToInt64(pNummerTextBox.Text);
                //table.Rows.Add(newRow);
                table.Rows.Add(dr);               

                this.kunde_PferdTableAdapter.Update(_pho_soDataSet.Kunde_Pferd);

                btn_pferd_zuweisen.BackColor = Color.Red;
                btn_pferd_zuweisen.Text = "Zuweisung aufheben";
            }            
        }

Da ich ja nicht immer auf Deine lange Weile hoffen kann.
Wo liest man die ganzen Sachen nach, ich suche mir nen Wolf in der VS Hilfe und komme immer irgendwo an. Aber manuelles Suchen, Lesen und Schreiben mit nem Dataset finde ich nicht.

_________________
Gruß Markus
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 28.04.11 20:20 
EDIT: 23:36 :)
Ich taste mich langsam vor :)

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
        private void btn_pferd_zuweisen_Click(object sender, EventArgs e)
        {
            if (btn_pferd_zuweisen.Text == "Zuweisung aufheben")
            {
                // zuweisen kurz deaktivieren um den TableAdapter neu füllen zu können
                // TableAdapter neu füllen verhindert DBConcurrencyException wenn schnell zugewiesen und wieder gelöscht wird
                zuweisen = false;
                this.kunde_PferdTableAdapter.Fill(this._pho_soDataSet.Kunde_Pferd);
                zuweisen = true;

                //DataTable table;
                //table = _pho_soDataSet.Tables["Kunde_Pferd"];
                var table = _pho_soDataSet.Kunde_Pferd;

                var foundedRow = table.FirstOrDefault(x => x.fk_kNummer == r_Kunden_ID && x.fk_pNummer == Convert.ToInt64(pNummerTextBox.Text));
                if (foundedRow != null)
                {
                    foundedRow.Delete();
                    btn_pferd_zuweisen.BackColor = Color.Khaki;
                    btn_pferd_zuweisen.Text = "Pferd Kunden Zuweisen";
                    try
                    {
                        this.kunde_PferdTableAdapter.Update(_pho_soDataSet.Kunde_Pferd);
                    }
                    catch (DBConcurrencyException ex)
                    {
                        MessageBox.Show("Fehler beim Speichern " + ex);
                    }
                }
                else
                {
                    //???
                }

_________________
Gruß Markus
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Fr 29.04.11 07:00 
Hi,
na, der letzte Code, den Du gepostet hast, sieht doch schonmal gut aus! Was ist mit dem
ausblenden C#-Quelltext
1:
2:
3:
4:
else
{
  //???
}
? Wegrationalisiert oder kommst Du da nicht weiter?
Das mit dem Galileo Buch ist ja schonmal nicht schlecht. Aber das Kapitel, das Du verlinkt hast, ist für die aktelle Sache nicht so ganz passend.
Schaue Dir mal lieber das Kapitel an: openbook.galileocomp...harp_2010_28_001.htm
user profile iconm-s hat folgendes geschrieben Zum zitierten Posting springen:
Da ich ja nicht immer auf Deine lange Weile hoffen kann.
Wo liest man die ganzen Sachen nach, ich suche mir nen Wolf in der VS Hilfe und komme immer irgendwo an.
Ausserdem willst Du es ja auch selber verstehen. Also nachzulesen z.B. siehe oben oder auch noch auf anderen Seiten, die sich mit stark typisierten DataSets befassen.
Ansonsten halt auch viel selber schauen und ausprobieren. Und sich natürlich auch etwas mit LinQ auskennen.
Es ist als Anfänger sicherlich nicht immer leicht. Aber Du musst ja auch nicht alles auswendig wissen, dazu ist es auch einfach zu viel. Du musst einmal die Basics verstanden haben, und brauchst dann die Fähigkeit, Dich schnell in Sachen zurechtzufinden und Techniken anzuwenden.
Soviel erstmal, die Arbeit ruft. Schönes Wochenende schon mal.
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Sa 30.04.11 11:30 
Hi Marko,

ja danke, das ist das Kapitel das ich gelesen haben sollte.
Ich kämpfe mich da weiter durch.

Habe den zweiten Teil der Methode jetzt auch entsprechend abwandeln können.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
            else
            {
                zuweisen = false;
                this.kunde_PferdTableAdapter.Fill(this._pho_soDataSet.Kunde_Pferd);
                zuweisen = true;

                var table = _pho_soDataSet.Kunde_Pferd;
                _pho_soDataSet.Kunde_PferdRow dr = _pho_soDataSet.Kunde_Pferd.NewKunde_PferdRow();

                // Add a row
                dr.fk_kNummer = r_Kunden_ID;
                dr.fk_pNummer = Convert.ToInt64(pNummerTextBox.Text);
                _pho_soDataSet.Kunde_Pferd.AddKunde_PferdRow(dr);

                try
                {
                    this.kunde_PferdTableAdapter.Update(_pho_soDataSet.Kunde_Pferd);
                }
                catch (DBConcurrencyException ex)
                {
                    MessageBox.Show("Fehler beim Speichern " + ex);
                }

                btn_pferd_zuweisen.BackColor = Color.Red;
                btn_pferd_zuweisen.Text = "Zuweisung aufheben";
            }

Was ich noch nicht verstanden habe ich das "var table . . .". Ich lese erst mal das Kapitel weiter, aber var (auch wenn hier schon öfter empfohlen und erfolgreich verwendet) kenne ich nicht.

P.S. Das Else mit den Fragezeichen oben kann ich tatsächlich wegmachen. Eigentlich das ganze If Else, denn wenn das If darüber wahr ist, dann gibt es eine Zeile in der Datenbank. Ich müsste das also nicht noch mal abfragen.

_________________
Gruß Markus