Newsgroup: it.comp.lang.visual-basic
Titolo: MyVbQL e controlli valore

ciao a tutti,
sono alle prime armi con visual basic e mysql (in passato ho avuto
esperienza con vb+access, vb+sql server) e sto usando questo componente
alternativo per una connessione a server e database mysql senza odbc.
derivando da un linguaggio come php alcune cose non mi sono molto chiare, ad
esempio
cn.OpenConnection hostname_db, username_db, password_db, database_db
'variabili globali
If (cn.State = MY_CONN_CLOSED) Then
    CheckError
Else
    MsgBox "Connessione stabilita"
    CloseRs
    sql = "SELECT pass FROM utenti_database where uname = '" & User.Text &
"' "
    Set rs = cn.Execute(sql)
    If (rs.?? = Pass.Text) Then MsgBox "Login ok."
    CheckError 'funzione di controllo errori
il problema è nel If (rs.?? = Pass.Text) al posto dei ?? non so proprio che
metodo e proprietà mettere per far sì che mi ritorni il valore della
password estratta dal database.
le api del controllo sono qua 
http://www.icarz.com/mysql/api_doc.html
 , in
php esiste il fetch_row e tante altre belle cose ma in visual basic come
posso districarmi da questa situazione?
grazie a tutti e buone feste,
kain

 valore della password estratta dal database.
If (rs!nome_del_campo) Then ...
o anche
If ("nome_del_campo") Then ...

 If rs("nome_del_campo") = Pass.Text Then ...

 ha scritto nel messaggio
news:brusnj$7reu9$1...@ID-174464.news.uni-berlin.de...

grazie della disponibilità, visual basic ritorna in fase di login un errore:
Errore di run-time '438':
Proprietà o metodo non supportati dall'oggetto
sulla linea incriminata:
If rs("pass") = Pass.Text Then MsgBox "ok"
usando entrambi i suggerimenti.
è strano, ho provato ad aggiungere la riga e vb ha sparato un errore del
tipo la classe non supporta l'automazione o l'interfaccia prevista. , però
non era stato toccato niente dal giorno prima.
allora ho ricaricato il controllo tramite Progetto -> Riferimenti, però ora
ricevo questo, quando alla prima esecuzione ne è uscito pulito solo che non
avevo messo un msgbox per controllare.
kain

 allora ho ricaricato il controllo tramite Progetto -> Riferimenti,
Quale controllo?

 Quale controllo?
mi sono espresso male, intendevo la dll per MyVbQL :)
kain

[*kain* = 
ka...@despammed.com
 in news:PcEEb.20588$
0w.9...@news2.tin.it
] ha
scritto:

Ripartendo dal tuo codice:
sql = "SELECT pass FROM utenti_database where uname = '" & User.Text & "'"
Set rs = cn.Execute(sql)
Se qui non si verificano errori, rs è il recordset dove ogni record
(presumibilmente uno solo) riporta solo la colonna pass.
Partendo dal presupposto (confermato) che Pass sia un textbox che contiene
la password digitata, facendo
    If rs.EOF=0 Then    'Serve solo a testare che rs abbia almeno un record
        If rs("pass") = Pass.Text Then MsgBox "ok"
    End If
Non deve dare errori di nessun tipo. Può non esporre "ok" se la password non
è corretta o se si è cercato male l'utente, ma non può dare errori.
Ovviamente ADO è fra i riferimenti vero?!


questo è il codice
    cn.OpenConnection hostname_db, username_db, password_db, database_db
    If (cn.State = MY_CONN_CLOSED) Then
        CheckError
    Else
        CloseRs
        sql = "SELECT pass FROM utenti_database where uname = '" & User.Text
& "' "
    Set rs = cn.Execute(sql)
    If rs.EOF = 0 Then  'Serve solo a testare che rs abbia almeno un record
        If rs("pass") = Pass.Text Then MsgBox "ok"
    End If
    CheckError
    End If
se inserisco user e pass inesistenti non dice assolutamente nulla, nel
momento in cui inserisco user e pass corretti ricevo Proprietà o metodo non
supportati dall'oggetto sulla linea del If rs("pass") = Pass.Text Then
MsgBox "ok"
sì, ADO è tra i riferimenti.. forse sbaglio voce è l'unica cosa che mi viene
in mente ora.. che voce esatta devo provare ad inserire?
grazie ancora,
kain

 mi viene in mente ora.. che voce esatta devo provare ad inserire?
Deve essere quello giusto, se non si fermerebbe prima...
Prova ad aprire il recordset con:
    rs.Open sql, cn, adOpenStatic, adLockOptimistic


impossibile trovare il metodo o il membro dei dati.
comunque da quanto ho capito questa dll non utilizza ADO, ha delle proprie
dll, infatti io dichiaro all'inizio del file
Option Explicit
Dim cn As New MYSQL_CONNECTION
Dim rs As MYSQL_RS
provo a postare il codice completo:
----
Option Explicit
Dim cn As New MYSQL_CONNECTION
Dim rs As MYSQL_RS
Private Sub CheckError()
    If (cn.Error.Number = 0) Then Exit Sub
        Dim Msg, Style, Title, Response
        Msg = "Error " & cn.Error.Number & ": " & cn.Error.Description
        Style = vbCritical
        Title = "Error " & cn.Error.Number & ""
        Response = MsgBox(Msg, Style, Title)
End Sub
Private Sub Command1_Click()
Dim sql As String
    'Apertura connessione
    cn.OpenConnection hostname_db, username_db, password_db, database_db
    If (cn.State = MY_CONN_CLOSED) Then
        CheckError
    Else
        CloseRs
        sql = "SELECT pass FROM utenti_database where uname = '" & User.Text
& "' "
        Set rs = cn.Execute(sql)
    If rs.EOF = 0 Then  'Serve solo a testare che rs abbia almeno un record
        If rs("pass") = Pass.Text Then MsgBox "ok"
    End If
    CheckError
    End If
End Sub
Private Sub CloseRs()
    If (Not rs Is Nothing) Then rs.CloseRecordset
    Set rs = Nothing
End Sub
Private Sub CloseCn()
    If (Not cn Is Nothing) Then cn.CloseConnection
    Set cn = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
    CloseRs
    CloseCn
End Sub

 dll, infatti io dichiaro all'inizio del file
ha dei propri metodi e proprietà* (non dll)

 proprie dll, infatti io dichiaro all'inizio del file
Ahhh, beh, allora occorre guardare la sua sintassi...