verwendetes Datenbanksystem: MS SQL
ich möchte eine DataGridView mit einer Inner Join Tabellenabfrage füllen:
string Benutzername = "test";
string Anzeigename = "Test";
string Kostenstelle = "T001";
DBConnect Connect = new DBConnect();
//GridView füllen
GridViewList.DataSource = Connect.DBReadAFG(Kostenstelle, Benutzername, Anzeigename);
//DataSource an GridView binden
GridViewList.DataBind();
public DataTable DBReadAFG(string Kostenstelle, string Benutzername, string Anzeigename)
{
string strSQL = "SELECT Auftrag.Auftragsdatum, Auftrag.Wunschtermin, Auftrag.Titel," +
"Auftrag.Beschreibung, Auftrag.erledigt_Datum," +
"Kostenstelle.Kostenstelle, Kostenstelle.KSTLeiter_Kennung " +
"FROM Auftrag" +
"INNER JOIN Auftraggeber" +
"ON Auftrag.Auftraggeber_ID = Auftraggeber.Auftraggeber_ID" +
"INNER JOIN Kostenstelle" +
"ON Auftrag.Kostenstelle_ID = Kostenstelle.Kostenstelle_ID" +
"WHERE Auftraggeber.Benutzername = " + Benutzername +
"OR Auftraggeber.Kostenstellenleiter = " + Anzeigename +
"OR Auftraggeber.Projektleiter = " + Anzeigename +
"AND Auftraggeber.Kostenstelle = " + Kostenstelle;
SqlCommand cmd = new SqlCommand(strSQL, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
return dt;
}
wenn ich die Seite aufrufe, kommt aber einne Fehlermeldung (siehe Anhang)
Anscheinend liegt das am INNER JOIN, denn Abfragen ohne INNER JOIN funktionieren im ASP.NET.
Der oben genannte SQL-Befehl funktioniert aber im eigenen Abfragefenster im SQL Server Management Studio auch ohne Probleme.
Ein kleiner tip, vielleicht hilft es ja:
Ich finde die Fehlermeldungen was SQL Querys angeht auch immer recht bescheiden. Deswegen teste ich die Querys erst immer mit nem DB Tool, das mir genau die fehlermeldung ausgibt. Da kann ich dann so lnage rum fummeln, bis es passt.
Ich benutze dafür MSDE Queyr Tool. Ist kostenlos und hier runter zu laden.
Gruss Ari
Wer lesen kann ist klar im vorteil!
MSDN
Dein Feund in allen fragen
Hallo Iceskaarj,
2 Sachen stimmen hier nicht:
"FROM Auftrag" +
"INNER JOIN Auftraggeber" +
du erhältst ... AuftragINNER JOIN
sinnvoll wäre auch, dir den commandtext fertig anzuschauen.
"AND Auftraggeber.Kostenstelle = " + Kostenstelle;
"AND Auftraggeber.Kostenstelle = '" + Kostenstelle + "'";
*) ich benutze bisher nur die SQL-Server Compact Edition, da ist es so; dürfte unter SQL-Server auch nicht anders sein.
hth, ara