Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: VB Errore

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    271

    VB Errore

    Non funziona anche se il cognome è presente mi va in
    MsgBox "Dati non trovati", vbInformation
    Come mai

    Private Sub txtCognome_LostFocus()
    If txtCognome.Text <> "" Then
    txtNome.Enabled = True
    End If

    Dim dbConn As New ADODB.Connection
    Dim dbRecCognome As New ADODB.Recordset
    Dim strSQLCognome As String
    Dim iCognome As String
    iCognome = txtCognome

    g_strConnectionString = "maia"
    dbConn.ConnectionString = g_strConnectionString
    dbConn.Open
    dbRecCognome.Open "Staff", dbConn, adOpenForwardOnly, adLockOptimistic, -1
    Dim bRes As Boolean
    bRes = controllanome(iCognome, dbConn)
    If bRes = True Then
    strSQLCognome = "SELECT * FROM Staff WHERE Cognome = '" & iCognome & "'"
    DoEvents
    Set dbRecCognome = dbConn.Execute(strSQLCognome)
    Do While dbRecCognome.EOF = False
    ListCognome.AddItem dbRecCognome!Cognome & vbTab & dbRecCognome!Nome & vbTab & dbRecCognome!Ruolo
    dbRecCognome.MoveNext
    Loop
    Else
    MsgBox "Dati non trovati", vbInformation
    dbRecCognome.Close
    Set dbRecCognome = Nothing
    dbConn.Close
    Set dbConn = Nothing
    End If


    txtCognome.Text = UCase(txtCognome.Text)
    txtCognome.Text = Replace(txtCognome.Text, " ", " ", 1, -1)

    End Sub

  2. #2
    devi controllare il codice di ControllaNome, è quello che ritrona False e ti manda al msgbox.
    almeno sembra...

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    271
    Il codice è questo a me sembra a posto



    Private Function controllanome(ByVal nome1 As String, ByRef dbConn As ADODB.Connection) As Boolean

    Dim dbRec As New ADODB.Recordset
    Dim strSQL As String

    strSQL = "SELECT * FROM Staff WHERE Cognome = '" & nome1 & "'"

    DoEvents
    Set dbRec = dbConn.Execute(strSQL)
    controllanome = Not dbRec.EOF
    Set dbRec = Nothing
    End Function

  4. #4
    giusto x fare una prova, sostituisci:

    Set dbRec = dbConn.Execute(strSQL)
    controllanome = Not dbRec.EOF
    Set dbRec = Nothing

    con:

    codice:
    dbRec.open strSql,dbConn,3,3
    if dbRec.recordCount>0 then
        controllanome=true
    end if
    dbRec.close 
    Set dbRec = Nothing

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    271
    Uguale

  6. #6
    hai provato debuggando a guardare il valore di recordCoun? se è effettivamente uguale a 0 significa che la query è sbagliata

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    271
    Sì record count è uguale a zero!
    Cosa devo andare a fare?

  8. #8
    devi vedere cosa c'è che non va nella query. Cerca di eseguire la query da qualche altra parte (query analizer o access) per vedere dov'è l'errore.
    Al limite puoi anche sostituire = con Like ma in questo caso credo che non cambi niente...

    cmq l'errore è nella query

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    271
    Private Function controllanome(ByVal nome1 As String, ByRef dbConn As ADODB.Connection) As Boolean

    Dim dbRec As New ADODB.Recordset
    Dim strSQL As String

    strSQL = "SELECT * FROM Staff WHERE Cognome = '" & nome1 & "'"

    DoEvents
    Set dbRec = dbConn.Execute(strSQL)
    controllanome = Not dbRec.EOF
    Set dbRec = Nothing
    End Function

    Questa funzione lo utilizzata da altre parti e funziona

  10. #10
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da xit
    Il codice è questo a me sembra a posto



    Private Function controllanome(ByVal nome1 As String, ByRef dbConn As ADODB.Connection) As Boolean

    Dim dbRec As New ADODB.Recordset
    Dim strSQL As String

    strSQL = "SELECT * FROM Staff WHERE Cognome = '" & nome1 & "'"

    DoEvents
    Set dbRec = dbConn.Execute(strSQL)
    Set dbRec = Nothing
    End Function
    ma scusami un attimo, se in vece di scrivere questo:
    codice:
    controllanome = Not dbRec.EOF
    scrivi questo:
    codice:
    if dbrec.eof and dbrec.bof then 'vuol dire che il cognome non esiste
       controllanome=FALSE
    else
       consotrllanome=TRUE
    end if
    quello che hai scritto non ha senso, hai solo impostato il valore di controllanome al valore opposto a dbrecord.eof che non è quello che ti serve. Se non trovi il cognome il record E' VUOTO e lo verifichi controllando che SIA EOF CHE BOF SONO = TRUE (non solo uno dei due).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.