Hallo
habegerade mein Programm aus MSSQL-Server getestet. Ging. Dann habe ich über ODBC auf Access DB's zugegriffen. Ging. über diese ODBC verbindung kann ich nun auch eine Verbindunf zu dem MySQL Server herstellen. Das geht aber nicht noch teilweise. Habe aber nur eine Zeile veraendert. Hier bekomme ich Werte raus:
<pre>
Public Sub OpenDB()
Dim ODBC_Command As String = "SELECT sBox FROM Boxes WHERE bHead = 0"
Dim obCmd As OdbcCommand
Dim obRd As OdbcDataReader
Try
Application.DoEvents()
wMain.clbBoxes.Items.Clear()
'Dialog wenn öffnet
obCmd = New OdbcCommand(ODBC_Command, obCnODBC)
obrd = obCmd.ExecuteReader()
wSplash.lblEvent.Text = "Reading Boxes..."
Application.DoEvents()
Do While obRd.Read()
Application.DoEvents()
Dim i As Integer
Dim Store As String
Store = GetSetting(Application.ProductName & "\Users\" & UserName, "Boxes", Trim(obRd.Item("sBox")), "New")
If Store = "True" Then
wMain.clbBoxes.Items.Add(Trim(obRd.Item("sBox")), True)
ElseIf Store = "New" Then
SaveSetting(Application.ProductName & "\Users\" & UserName, "Boxes", Trim(obRd.Item("sBox")), "True")
wMain.clbBoxes.Items.Add(Trim(obRd.Item("sBox")), True)
ElseIf Store = "False" Then
wMain.clbBoxes.Items.Add(Trim(obRd.Item("sBox")), False)
End If
wSplash.lblEvent.Text = "Reading Box " & Trim(obRd.Item("sBox"))
Application.DoEvents()
wMain.lblBoxCount.Text = wMain.clbBoxes.Items.Count
wMain.stbpGetBoxes.Text = wMain.clbBoxes.Items.Count
Loop
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End
Finally
obRd.Close()
End Try
End Sub
</pre> Hier kommt ein Fehler, aber ohne beschreibung:<pre>
Public Sub LoadSongs(ByVal FilterA As String, ByVal FilterB As String, ByVal FilterC As String)
Dim Counter As Integer
Dim ODBC_Command As String
Dim obCmd As OdbcCommand
Dim Songs As ListViewItem
Dim obRd As OdbcDataReader
lstvwSongs.Items.Clear()
lstvwSongs.BeginUpdate()
Try
If FilterA = "" And FilterB = "" And FilterC = "" Then
ODBC_Command = "SELECT * FROM Boxes WHERE (bHead <> 0)"
Else
ODBC_Command = "SELECT * FROM Boxes WHERE "
If FilterA <> "" Then
ODBC_Command += "(sSong LIKE '%" & FilterA & "%'"
End If
If FilterA <> "" And FilterB <> "" Then
ODBC_Command += " AND sArtist LIKE '%" & FilterB & "%'"
ElseIf FilterA = "" And FilterB <> "" Then
ODBC_Command += "sArtist LIKE '%" & FilterB & "%'"
End If
If FilterA <> "" And FilterC <> "" Or FilterB <> "" And FilterC <> "" Then
ODBC_Command += " AND sAlbum LIKE '%" & FilterC & "%'"
ElseIf FilterA = "" And FilterC <> "" Or FilterB = "" And FilterC <> "" Then
ODBC_Command += "sAlbum LIKE '%" & FilterC & "%'"
End If
ODBC_Command += ") AND (bHead <> 0)"
End If
ODBC_Command &= " ORDER BY sArtist"
obCmd = New OdbcCommand(ODBC_Command, obCnODBC)
obRd = obCmd.ExecuteReader
wSplash.lblEvent.Text = "Reading items..."
Application.DoEvents()
Do While obRd.Read
'MsgBox(obRd.Item("sBox"))
Dim BoxSetting As String = GetSetting(Application.ProductName & "\Users\" & UserName, "Boxes", Trim(obRd.Item("sBox")), "True")
If BoxSetting = "True" Then
Application.DoEvents()
Songs = wMain.lstvwSongs.Items.Add(Replace(obRd.Item("sSong"), "{-}", "'"))
Songs.SubItems.Add(Replace(obRd.Item("sArtist"), "{-}", "'"))
Songs.SubItems.Add(Replace(obRd.Item("sAlbum"), "{-}", "'"))
Songs.SubItems.Add(Replace(obRd.Item("sGenre"), "{-}", "'"))
Songs.SubItems.Add(Replace(obRd.Item("sPath"), "{-}", "'"))
Counter += 1
stbpGetSongs.Text = Counter
lblSongCount.Text = Counter
wSplash.lblEvent.Text = "Reading item " & Counter
Application.DoEvents()
End If
Loop
Catch ex As Exception
MsgBox(ex.Message)
Finally
obRd.Close()
End Try
lstvwSongs.EndUpdate()
stbpGetSongs.Text = Counter
Application.DoEvents()
lblSongCount.Text = Counter
lstvwSongs.EndUpdate()
wSplash.Timer1.Enabled = True
End Sub
</pre>
Wieso geht der Mist hier nicht?
Habe etwas getestet: obRd ist Leer. Was ist da kaputt. die SQL-Abfrage habeich getestet. Die Funktioniert.!!!
habegerade mein Programm aus MSSQL-Server getestet. Ging. Dann habe ich über ODBC auf Access DB's zugegriffen. Ging. über diese ODBC verbindung kann ich nun auch eine Verbindunf zu dem MySQL Server herstellen. Das geht aber nicht noch teilweise. Habe aber nur eine Zeile veraendert. Hier bekomme ich Werte raus:
<pre>
Public Sub OpenDB()
Dim ODBC_Command As String = "SELECT sBox FROM Boxes WHERE bHead = 0"
Dim obCmd As OdbcCommand
Dim obRd As OdbcDataReader
Try
Application.DoEvents()
wMain.clbBoxes.Items.Clear()
'Dialog wenn öffnet
obCmd = New OdbcCommand(ODBC_Command, obCnODBC)
obrd = obCmd.ExecuteReader()
wSplash.lblEvent.Text = "Reading Boxes..."
Application.DoEvents()
Do While obRd.Read()
Application.DoEvents()
Dim i As Integer
Dim Store As String
Store = GetSetting(Application.ProductName & "\Users\" & UserName, "Boxes", Trim(obRd.Item("sBox")), "New")
If Store = "True" Then
wMain.clbBoxes.Items.Add(Trim(obRd.Item("sBox")), True)
ElseIf Store = "New" Then
SaveSetting(Application.ProductName & "\Users\" & UserName, "Boxes", Trim(obRd.Item("sBox")), "True")
wMain.clbBoxes.Items.Add(Trim(obRd.Item("sBox")), True)
ElseIf Store = "False" Then
wMain.clbBoxes.Items.Add(Trim(obRd.Item("sBox")), False)
End If
wSplash.lblEvent.Text = "Reading Box " & Trim(obRd.Item("sBox"))
Application.DoEvents()
wMain.lblBoxCount.Text = wMain.clbBoxes.Items.Count
wMain.stbpGetBoxes.Text = wMain.clbBoxes.Items.Count
Loop
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End
Finally
obRd.Close()
End Try
End Sub
</pre> Hier kommt ein Fehler, aber ohne beschreibung:<pre>
Public Sub LoadSongs(ByVal FilterA As String, ByVal FilterB As String, ByVal FilterC As String)
Dim Counter As Integer
Dim ODBC_Command As String
Dim obCmd As OdbcCommand
Dim Songs As ListViewItem
Dim obRd As OdbcDataReader
lstvwSongs.Items.Clear()
lstvwSongs.BeginUpdate()
Try
If FilterA = "" And FilterB = "" And FilterC = "" Then
ODBC_Command = "SELECT * FROM Boxes WHERE (bHead <> 0)"
Else
ODBC_Command = "SELECT * FROM Boxes WHERE "
If FilterA <> "" Then
ODBC_Command += "(sSong LIKE '%" & FilterA & "%'"
End If
If FilterA <> "" And FilterB <> "" Then
ODBC_Command += " AND sArtist LIKE '%" & FilterB & "%'"
ElseIf FilterA = "" And FilterB <> "" Then
ODBC_Command += "sArtist LIKE '%" & FilterB & "%'"
End If
If FilterA <> "" And FilterC <> "" Or FilterB <> "" And FilterC <> "" Then
ODBC_Command += " AND sAlbum LIKE '%" & FilterC & "%'"
ElseIf FilterA = "" And FilterC <> "" Or FilterB = "" And FilterC <> "" Then
ODBC_Command += "sAlbum LIKE '%" & FilterC & "%'"
End If
ODBC_Command += ") AND (bHead <> 0)"
End If
ODBC_Command &= " ORDER BY sArtist"
obCmd = New OdbcCommand(ODBC_Command, obCnODBC)
obRd = obCmd.ExecuteReader
wSplash.lblEvent.Text = "Reading items..."
Application.DoEvents()
Do While obRd.Read
'MsgBox(obRd.Item("sBox"))
Dim BoxSetting As String = GetSetting(Application.ProductName & "\Users\" & UserName, "Boxes", Trim(obRd.Item("sBox")), "True")
If BoxSetting = "True" Then
Application.DoEvents()
Songs = wMain.lstvwSongs.Items.Add(Replace(obRd.Item("sSong"), "{-}", "'"))
Songs.SubItems.Add(Replace(obRd.Item("sArtist"), "{-}", "'"))
Songs.SubItems.Add(Replace(obRd.Item("sAlbum"), "{-}", "'"))
Songs.SubItems.Add(Replace(obRd.Item("sGenre"), "{-}", "'"))
Songs.SubItems.Add(Replace(obRd.Item("sPath"), "{-}", "'"))
Counter += 1
stbpGetSongs.Text = Counter
lblSongCount.Text = Counter
wSplash.lblEvent.Text = "Reading item " & Counter
Application.DoEvents()
End If
Loop
Catch ex As Exception
MsgBox(ex.Message)
Finally
obRd.Close()
End Try
lstvwSongs.EndUpdate()
stbpGetSongs.Text = Counter
Application.DoEvents()
lblSongCount.Text = Counter
lstvwSongs.EndUpdate()
wSplash.Timer1.Enabled = True
End Sub
</pre>
Wieso geht der Mist hier nicht?
Habe etwas getestet: obRd ist Leer. Was ist da kaputt. die SQL-Abfrage habeich getestet. Die Funktioniert.!!!