Ciao a tutti, ho un problema con un oggetto reader che non ne vuole sapere di riempirsi. Mettendogli un breakpoint tattico viene fuori hasrows=false e fieldcount=10; quindi intuisco che la tabella la legge (siccome ha per l'appunto 10 fields), ma non trova risultati con quella query. Peccato però che la stessa query sparata nell'SQL query analyzer di Access mi ritorni 3 record utili. WHY??? Ci ho sbattuto la testa tutta la giornata di ieri e non ho trovato soluzione, magari riuscite ad aiutarmi voi. Qui di seguito il codice utile:
Con questa sub apro la connessione al database.Public Sub dbOpen()
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;"
strConn &= "Data source=E:\Data\My Documents\Visual Studio 2008\WebSites\nami\db-nami.mdb;"
strConn &= "Jet OLEDB:System Database=db-nami.mdw"
Try
objConn.ConnectionString = strConn
objCmd = objConn.CreateCommand
objConn.Open()
Catch thisException As Exception
MsgBox(thisException.Message, MsgBoxStyle.Critical, "Error occurred:")
End Try
End Sub
Con questa function eseguo il login al sistema; ve la posto giusto per precisare che la connessione e l'interrogazione del db funzionano senza problemi (fin qui).Public Function usrLogin(ByVal strUsr As String, ByVal strPwd As String) As Boolean
objCmd.CommandText = "SELECT * FROM tbl_Users"
objReader = objCmd.ExecuteReader
While objReader.Read
If objReader("Username") = strUsr Then
If objReader("Password") = strPwd Then
bolIsAdmin = objReader("isAdmin")
usrLogin = True
Return usrLogin
Exit Function
End If
End If
End While
End Function
Per questioni di praticità mia l'apertura della connessione al db l'ho impostata fuori da questa funzione in questo specifico caso.
Ecco qua la routine incriminata... il reader rimane vuoto qualunque parametro io gli passi e non capisco perché. Mi son fatto sparare a schermo la query in modo da verificare che fosse corretta e che eseguisse il case "typeNumber"; tutto apposto... tranne che il reader é sempre vuoto.Public Sub Capture(ByVal strTypeSelected As String, ByVal strCaptureSelected As String)
dbOpen()
Select Case (strTypeSelected)
Case Is = "typeNumber"
objCmd.CommandText = "SELECT tbl_Store.storeNumber, * FROM tbl_Store WHERE tbl_Store.storeNumber Like '" & strCaptureSelected & "'"
objReader = objCmd.ExecuteReader
Case Is = "typeString"
' codice per typeString
Case Is = "typeIP"
' codice per typeIP
Case Else
' codice per alternativa
End Select
End Sub
Tra l'altro la query originale era molto più semplice:
"SELECT * FROM tbl_Store WHERE storeNumber='" & strCaptureSelected & "'"
Ho provato a cambiarla perché quando la inserivo nell'SQL query analyzer di Access me la cambiava con la sintassi che ho postato nelle parti quotate; entrambe lasciano il reader vuoto però. Non so se sia un problema di query o sbaglio qualcosa a livello di codice. Qualche idea???
thx per una mano!!!![]()