Autor |
Beitrag |
MaTiHeLo
Hält's aus hier
Beiträge: 12
Win 7
C# (VS 2010)
|
Verfasst: Sa 03.07.10 11:13
Hallo ich habe eine Frage an euch,
ich habe eine Datenbank mit mehreren Tabellen.
Ich habe 2 Store Procedure erstellt.
SQL-Anweisung 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| ALTER PROCEDURE dbo.Spielanlegen (@Kennung varchar(50), @datum_Spiel datetime) AS insert into Spiel (Kennung,Datum_Spiel) Values (@kennung, @datum_Spiel) RETURN
ALTER PROCEDURE dbo.unternehmenanlegen (@Unternehmen_Name varchar(50), @Spiel_ID_Unternehmen int) AS insert into Unternehmen (Unternehmen_Name, Spiel_ID_Unternehmen) Values (@Unternehmen_Name, @Spiel_ID_Unternehmen) RETURN |
Dann habe ich ein einfaches Form mit 2 Datagrids und 2 Textboxen.
Wenn ich nun das Unternehmen anlegen will, soll es so sein das ich im linken datagrid einen angelegtes Spiel selektiere und dort das unternehmen hinzugefügt werden soll.
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: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| namespace WindowsFormsApplication7 { public partial class Form1 : Form { public Form1() { InitializeComponent(); SpielanlegenDataContext hi = new SpielanlegenDataContext(); var lesen = from c in hi.Spiel orderby c.Spiel_ID select new { c.Kennung, c.Datum_Spiel }; dataGridView1.DataSource = lesen;
}
private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == "") { MessageBox.Show("Bitte geben Sie einen Namen an");
}
else { SpielanlegenDataContext sa = new SpielanlegenDataContext(); sa.StoredProcedure1(textBox1.Text.ToString(), DateTime.Now); var auswertung = from c in sa.Spiel orderby c.Spiel_ID select new { c.Kennung, c.Datum_Spiel }; dataGridView1.DataSource = auswertung; sa.SubmitChanges(); } }
private void button2_Click(object sender, EventArgs e) { if (textBox2.Text == "") { MessageBox.Show("Bitte einen Gruppennamen eingeben"); }
else { SpielanlegenDataContext ga = new SpielanlegenDataContext(); !!!!!!!!!!!!! ga.unternehmenanlegen(textBox2.Text.ToString(), dataGridView1.row var auswertung_unt = from u in sa.Unternehmen orderby c.Unternehmen_ID select new { c.Unternehmen_Name }; dataGridView2.DataSource = auswertung_unt; ga.SubmitChanges(); }
} } } |
Leider bekomme ich das nicht hin ich hänge irgendwie stehe ich auf dem schlauch und das buch Datenbank-Programmierung mit Visual C# hilft mir nicht weiter. Die tabellen sind auch verknüpft. Die tabelle Spiel_spiel_id mit tabelle Unternehmen_spiel_id_unternehmen.
wenn mir einer helfen kann bei dem wetter wäre toll, muss ja auch keine lösung sein vielleicht ein ansatz, das ich weiter komme..
danke
Moderiert von Kha: SQL-Tags hinzugefügt
Moderiert von Kha: C#-Tags hinzugefügt
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 03.07.10 18:01
Erst einmal: Wozu überhaupt die SPs? Das macht es dem O/RM nicht wirklich leichter.
Du speicherst bis jetzt eine anonyme Klasse im DGV, an die kommst du nur äußerst umständlich wieder heran. Benutze lieber select c, dann findest du diese Entity in DGV.CurrentRow.DataBoundItem wieder.
_________________ >λ=
|
|
MaTiHeLo 
Hält's aus hier
Beiträge: 12
Win 7
C# (VS 2010)
|
Verfasst: Sa 03.07.10 19:13
Kha hat folgendes geschrieben : | Erst einmal: Wozu überhaupt die SPs? Das macht es dem O/RM nicht wirklich leichter.
Du speicherst bis jetzt eine anonyme Klasse im DGV, an die kommst du nur äußerst umständlich wieder heran. Benutze lieber select c, dann findest du diese Entity in DGV.CurrentRow.DataBoundItem wieder. |
Ersteinmal danke für die nette Hilfe, aber wenn ich ehrlich bin komme ich mit der Antwort nicht wirklich weiter. Vielleicht liegt es auch am Wetter. Naja sind meine ersten versuche in LINQ2SQL und bei youtube schon alle videos angeschaut. ich dachte immer SP sind so das allheilmittel. das problem ist das ich ja nur einen wert aus der ROW brauche also vom Prinzip her den 2 wert der Row und ich bekomme es nicht hin. werde es morgen noch mal mit kühlen kopf versuchen heute hats keinen sinn mehr. aber dir schon mal danke KHA
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 03.07.10 19:38
|
|
MaTiHeLo 
Hält's aus hier
Beiträge: 12
Win 7
C# (VS 2010)
|
Verfasst: Sa 03.07.10 19:54
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: 44: 45: 46: 47:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace WindowsFormsApplication10 { public partial class Form1 : Form { public Form1() { InitializeComponent(); testconnDataContext tc = new testconnDataContext(); var anzeigen = from spiel in tc.Spiel select spiel; dataGridView1.DataSource = anzeigen; //var anzeigen2 = from u in tc.Unternehmen // where u.Spiel.Spiel_ID ==
}
private void button1_Click(object sender, EventArgs e) { testconnDataContext an = new testconnDataContext(); Spiel sp = new Spiel(); sp.Kennung = textBox1.Text.ToString(); sp.Datum_Spiel = dateTimePicker1.Value; an.Spiel.InsertOnSubmit(sp); an.SubmitChanges(); }
private void button2_Click(object sender, EventArgs e) { testconnDataContext gr = new testconnDataContext(); Unternehmen un = new Unternehmen(); un.Unternehmen_Name = textBox2.Text.ToString(); un.Spiel_ID_Unternehmen = (int)dataGridView1.CurrentRow.DataBoundItem; gr.Unternehmen.InsertOnSubmit(un); gr.SubmitChanges(); } } } |
Da bekomme ich immer einen fehler. Es ist so das ich im DGV das Spiel makieren will. und wenn ich das unternehmen hinzufügen will, dann soll er das zu dem makierten spiel packen.
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 03.07.10 20:09
MaTiHeLo hat folgendes geschrieben : | Da bekomme ich immer einen fehler. |
Na das sieht doch schon einmal besser aus. Aber was für einen Fehler, vielleicht InvalidCast? Dann sollte er dir genau sagen, auf welche Klasse du eigentlich casten solltest.
_________________ >λ=
Für diesen Beitrag haben gedankt: MaTiHeLo
|
|
MaTiHeLo 
Hält's aus hier
Beiträge: 12
Win 7
C# (VS 2010)
|
Verfasst: So 04.07.10 13:14
Kha hat folgendes geschrieben : | MaTiHeLo hat folgendes geschrieben : | Da bekomme ich immer einen fehler. | Na das sieht doch schon einmal besser aus. Aber was für einen Fehler, vielleicht InvalidCast? Dann sollte er dir genau sagen, auf welche Klasse du eigentlich casten solltest. |
ja da hast du recht. aber ich weiß nicht wieso. das muss ein int sein. habe es mal mit der convert.toint32 versucht aber ging auch nicht. es ist ja so, das die spiel_id_unternehmen und spiel_id beides int sind. oder habe ich nun was falsch verstanden, aber danke schon einmal für die Hilfen und Anregungen.
Ich habe mal ein bild angengehangen. den wert spiel_id 4003 benötige ich. Ich bekomme es nicht hin.
Einloggen, um Attachments anzusehen!
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: So 04.07.10 16:04
MaTiHeLo hat folgendes geschrieben : | ja da hast du recht. |
Außer mit der Annahme, dass InvalidCast den richtigen Typ verraten würde, was du durch deinen Screenshot mittlerweile aber schon nachgeliefert hast  . Schau ihn dir noch einmal genau an, dort steht der Typ des Wertes von DataBoundItem, also der Typ, auf den du casten musst.
_________________ >λ=
|
|
MaTiHeLo 
Hält's aus hier
Beiträge: 12
Win 7
C# (VS 2010)
|
Verfasst: So 04.07.10 16:23
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: So 04.07.10 16:30
MaTiHeLo hat folgendes geschrieben : | meinst du Spiel? darauf soll ich casten? |
Ja.
Du hast das DGV mit der Entity befüllt, also bekomst du die auch zurück und nicht irgendeine ID, von der das DGV schlecht etwas wissen kann.
Überhaupt solltest du dich bei einem O/RM nicht mehr mit IDs beschäftigen, sobald du die entsprechende Entity hast. Nimm spiel.Unternehmen.Add(un) oder un.Spiel = spiel (oder wie auch immer deine genaue Relation aussieht).
_________________ >λ=
|
|
MaTiHeLo 
Hält's aus hier
Beiträge: 12
Win 7
C# (VS 2010)
|
Verfasst: So 04.07.10 16:55
Hi Kha
erst einmal danke für die ganze Hilfe aber nun bin ich völlig verwirrt. Also dataGridView1.CurrentRow.DataBoundItem brauche ich gar nicht?
Mir geht es darum das ich im DGV die Spiel_ID selektiere und diese soll dann als int in der Tabelle Unternehmen <- spiel_id_unternehmen gesetzt werden wenn ich eine neue Gruppe hinzufüge.
Die Tabellen sind mit einander verknüpft.
Spiel.Spiel_ID -> Unternehmen.Spiel_ID_Unternehmen
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: So 04.07.10 17:34
Du brauchst nach wie vor erst einmal aus DataBoundItem das selektierte Spiel als Instanz, die ich einfach mal spiel getauft habe.
_________________ >λ=
Für diesen Beitrag haben gedankt: MaTiHeLo
|
|
MaTiHeLo 
Hält's aus hier
Beiträge: 12
Win 7
C# (VS 2010)
|
Verfasst: So 04.07.10 18:11
HI kha,
bin zu dumm dafür bekomme schon voll die Krise. Naja egal muss es anders versuchen. ich glaube ich denke zu kompliziert für den mist. aber den für die Hilfe.
|
|