Hallo,
ich will mein VB6.0 Projekt neu in VB2008 erstellen.
Dabei sollen Daten aus einen MS-Access Datenbank im DataGridView angezeigt werden.
Private Sub frmStammAuswahl_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
strSQL = "SELECT (WeichenStammDaten.ID) AS StammID,"
strSQL = strSQL & " Max((WeichenPrüfungen.ID)) AS PrüfID,"
strSQL = strSQL & " (WeichenStammDaten.WeicheNr) AS [WeicheNr],"
strSQL = strSQL & " (WeichenStammDaten.KundeBahnhof) AS [TestBez],"
strSQL = strSQL & " (WeichenStammDaten.Stellwerkbezeichnung) AS" & _
"[Stellwerk],"
strSQL = strSQL & " (WeichenStammDaten.BLK) AS [Anlagenklasse],"
strSQL = strSQL & " Max(WeichenPrüfungen.Prüfdatum) AS [Prüfdatum],"
strSQL = strSQL & " (WeichenStammDaten.Prüfintervall) AS" & _
"[Prüfintervall],"
strSQL = strSQL & " (WeichenStammDaten.Bereich) AS [MessBezirk],"
strSQL = strSQL & " (WeichenStammDaten.MessFile) AS [Messfile],"
strSQL = strSQL & " (WeichenStammDaten.Sperrung) AS [Sperrung],"
strSQL = strSQL & " (WeichenStammDaten.Sperrung_Richtung) AS [Sperrung" _
& _
"Richtung],"
strSQL = strSQL & " (WeichenStammDaten.Dokumente) AS [Dokument]"
strSQL = strSQL & " FROM (WeichenStammDaten"
strSQL = strSQL & " LEFT JOIN WeichenPrüfungen"
strSQL = strSQL & " ON WeichenStammDaten.ID =" & _
"WeichenPrüfungen.WeichenStammDatenID)"
strSQL = strSQL & " LEFT JOIN WeichenErweiterteStammDaten"
strSQL = strSQL & " ON WeichenStammDaten.ID =" & _
"WeichenErweiterteStammDaten.WeichenStammDatenID"
strSQL = strSQL & " WHERE (((WeichenStammDaten.LöschStatus)<>1"
strSQL = strSQL & " Or (WeichenStammDaten.LöschStatus) Is Null)"
strSQL = strSQL & " AND ((WeichenPrüfungen.LöschStatus)<>1"
strSQL = strSQL & " Or (WeichenPrüfungen.LöschStatus) Is Null))"
strSQL = strSQL & " GROUP BY (WeichenStammDaten.ID),"
strSQL = strSQL & " WeichenStammDaten.WeicheNr,"
strSQL = strSQL & " (WeichenStammDaten.KundeBahnhof),"
strSQL = strSQL & " (WeichenStammDaten.Stellwerkbezeichnung),"
strSQL = strSQL & " (WeichenStammDaten.BLK),"
strSQL = strSQL & " WeichenStammDaten.Prüfintervall,"
strSQL = strSQL & " (WeichenStammDaten.Bereich),"
strSQL = strSQL & " WeichenStammDaten.MessFile,"
strSQL = strSQL & " WeichenStammDaten.Sperrung,"
strSQL = strSQL & " WeichenStammDaten.Sperrung_Richtung,"
strSQL = strSQL & " WeichenStammDaten.Dokumente"
strSQL = strSQL & " Order By WeichenStammDaten.WeicheNr,"
strSQL = strSQL & " Max(WeichenPrüfungen.Prüfdatum) DESC;"
Dim conn As New OleDbConnection(Glob_Con_Str)
Dim cmd As New OleDbCommand(strSQL, conn)
Dim da As New OleDbDataAdapter(cmd)
Dim ds As New DataSet
conn.Open()
ds.Clear()
da.Fill(ds, strSQL)
DataGridView1.DataSource = ds
DataGridView1.DataMember = strSQL
conn.Close()
'DataGridView formatieren
With Me.DataGridView1
.RowsDefaultCellStyle.BackColor = Color.WhiteSmoke
.AlternatingRowsDefaultCellStyle.BackColor = Color.Lavender
.ForeColor = Color.MidnightBlue
.DefaultCellStyle.Font = New Font("Microsoft Sans Serif", 8.25)
.ColumnHeadersDefaultCellStyle.BackColor = Color.MidnightBlue
.ColumnHeadersDefaultCellStyle.ForeColor = Color.WhiteSmoke
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
End With
End Sub Fehler:
DataGridView1.DataMember
Err.Number: 5
Err.Description: Die untergeordnete Liste für das Feld SELECT WeichenStammDaten
kann nicht erstellt werden." So wie ich das sehe, versteht das DataGridView1.DataMember den SQL Befehl nicht.
Ändere ich den SQL-Befehl:
strSQL = "SELECT ID,"
strSQL = strSQL & " LPID,"
strSQL = strSQL & " WeicheNr,"
strSQL = strSQL & " KundeBahnhof,"
strSQL = strSQL & " Stellwerkbezeichnung,"
strSQL = strSQL & " BLK"
strSQL = strSQL & " FROM WeichenStammDaten" Ist zwar der Fehler weg, es werden auch Daten im Grid angezeigt, aber aufgrund der Änderung im SQL nicht mehr alle oder bzw. die gewünschten Daten...
Wie kann ich in einem DataGridView Daten aus mehreren Tabellen anzeigen lassen, die über JOIN in der SQL verbunden sind?
Kann mir jemand einen tipp geben?
Gruß MarioRainer |