Laden...

Daten aus 2 Tabellen in ein DataGridView füllen

Erstellt von SandmanSlim vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.430 Views
S
SandmanSlim Themenstarter:in
4 Beiträge seit 2013
vor 10 Jahren
Daten aus 2 Tabellen in ein DataGridView füllen

verwendetes Datenbanksystem: MS SQLServer 2012 Express

Hallo zusammen,
folgende Situation: Ich versuche zum ersten mal eine Anwendung mit Datenbankanbindung zu schreiben, bin also noch ein ziemlicher Neuling in Sachen C#. Funktioniert bis jetzt auch relativ gut. Nur habe ich gerade das Problem, dass ich versuche mittels JOIN Daten mit einer Bedingung aus zwei Tabellen zu holen und diese in einem DataGridView anzeigen zu lassen. Nur krieg ich entweder ein leeres DataGridView oder eine SQLException von wegen "Falsche Syntax in der Nähe von 'Tische'".

private void Form_Anzeige_Load(object sender, EventArgs e)         
{             
klasse = this.CustomValueKlasse.Trim();             
jahr = this.CustomValueJahr.Trim();             
alle = this.CustomValueAlle.Trim();             

MessageBox.Show("Klasse: " + klasse + "\nJahr: " + jahr + "\nalle: " + alle, "test", MessageBoxButtons.OK, MessageBoxIcon.Hand);             

con = new SqlConnection();             
con.ConnectionString =                      
@"Data Source=.\SQLEXPRESS;AttachDbFilename="+                     
@"C:\Users\Vince\Documents\Visual Studio 2010\Projects\UnescoTest\UnescoForm\Unesco.mdf;"+ 
@"Integrated Security=True;Connect Timeout=30;User Instance=True";             
try             
{                 
con.Open();                 

 if (jahr != "" && klasse == "") 
{                     
   adap = new SqlDataAdapter("SELECT * FROM (SELECT * FROM Klasse WHERE Datum=" + jahr + ")Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer;", con);
}                 

if (klasse != "" && jahr == "")                 
{                    
 adap = new SqlDataAdapter("SELECT * FROM (SELECT * FROM Klasse WHERE Klasse=" + klasse + ")Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer;", con);
}                 

if (jahr != "" && klasse != "")                 
{                     
adap = new SqlDataAdapter("SELECT * FROM (SELECT * FROM Klasse WHERE Datum=" + jahr + "AND Klasse=" + klasse + ")Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer;", con);                 
}                 

if (alle == "*")                 
{                    
 adap = new SqlDataAdapter("SELECT * FROM Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer Tische", con);                
}                  

MessageBox.Show("Adap: " + adap, "Adap INhalt", MessageBoxButtons.OK, MessageBoxIcon.Information);                 

ds = new System.Data.DataSet();                
 adap.Fill(ds, "Anzeige");                 
dataGridView1.DataSource = ds.Tables[0];             
}            
 catch (Exception ex)             
{                 
MessageBox.Show("Fehler:\n\n" + ex, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);             
}

Schon im Voraus vielen Dank für eure Hilfe

Gruß

SandmanSlim

F
10.010 Beiträge seit 2004
vor 10 Jahren
R
158 Beiträge seit 2007
vor 10 Jahren

entweder ein leeres DataGridView

Entweder passt die WHERE-Klausel nicht oder die JOIN-Bedingung findet keine passenden Datensätze.

oder eine SQLException von wegen "Falsche Syntax in der Nähe von 'Tische'".

Der Fehler liegt wohl eindeutig hier:


SELECT * FROM Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer Tische 

Zur Verdeutlichung:
SELECT * FROM Klasse JOIN Tische ON Klasse.Nummer = Tische.Nummer Tische
Die Tische haben da nichts zu suchen...

Ansonsten schließe ich mich FZelle an.