Jeg har en relationel database i access, hvor jeg har en masse tabeller som er koblet sammen. Så er det jeg gerne vil have en tabel vist i min datagrid, men i den tabel, som jeg gerne vil vise, er der en masse id'er fra andre tabeller, men jeg vil ikke have vist selve iderne, men navnet på det ide fra en anden tabel, men hvordan gør jeg det. Det er ikke noget problem, at få vist selve tabellen i min datagrid, men at få de id'er i tabellen til at vise et navn fra en anden tabel? Det skal lige siges at datagriden får sine data fra et dataset.
Hvis der er noget der lyder lidt forvirrende, må i lige sige hvad det er, så skal prøve at forklare det lidt bedre.
Eksempel:
System.Data.DataSet datasetMetod(string dato) { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=D:\\Fam\\db1.mdb"; System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);
string queryString = "SELECT [Moede].[EmneID], [Moede].[LokalitetID], [Moede].[klientID], [Moede].[Stat" + "usID] FROM [Moede] WHERE ([Moede].[Dato] = @Dato)"; System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand(); dbCommand.CommandText = queryString; dbCommand.Connection = dbConnection;
Jeg har prøvet med 2 inner joins og jeg har testet begge to alene og der virker de fint nok, men hvis jeg har 2 inner joins, så får jeg følgende fejl:
Syntax error (missing operator) in query expression '[Moede].[StatusID] = [Status].[StatusID] INNER JOIN [Emne] ON [Moede].[EmneID] = [Emne].[EmneID]'.
public System.Data.DataSet selectKalender(string dato) { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=D:\\Fam\\db1.mdb"; System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);
string queryString = "SELECT [Moede].[MoedeID], [Moede].[EmneID], [Emne].[Navn], [Moede].[StatusID], [Status].[Navn] FROM [Moede] INNER JOIN [Status] ON [Moede].[StatusID] = [Status].[StatusID] INNER JOIN [Emne] ON [Moede].[EmneID] = [Emne].[EmneID] WHERE [Moede].[Dato] = @Dato";
Fejlen skyldes at Access syntaksen forINNER JOIN's er anderledes end i MS-SQl.
Du får lige en ny en:
SELECT [Moede].[MoedeId], [Moede].[EmneId], [Moede].[StatusId], [Emne].[Navn] As EmneNavn, [Status].[Navn] As StatusNavn FROM [Status] INNER JOIN ( [Emne] INNER JOIN [Moede] ON [Emne].[EmneId] = [Moede].[EmneId] ) ON [Status].[StatusId] = [Moede].[StatusId] WHERE [Moede].[Dato] = @Dato
Du kan/bør teste dine sql-sætninger i en Access forespørgsel inden indsættelse i koden.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.