Pagina 4 di 4 primaprima ... 2 3 4
Visualizzazione dei risultati da 31 a 33 su 33
  1. #31
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da luigi1993
    Se noti prima io associavo ad una variabile la Text1...
    codice:
    Dim mat As String
    mat = Form1.Text1.Text
    Questo è irrilevante. La variabile locale in VB in cui memorizzi un valore non è visibile nel contesto della query SQL, che è una stringa che viene passata al driver in grado di accedere al database. Se scrivi "mat" nella query SQL, il motore che esegue la query non risale alla variabile "mat" di VB, né può vedere alcuna variabile, oggetto o finestra.

    Tu devi passare al motore esattamente la query che vuoi eseguire.

    Originariamente inviato da luigi1993
    In questo modo non funziona, ma se scrivo così:
    codice:
    RS.Open "SELECT Matricola FROM Table1 WHERE mat='" & Form1.Text1.Text & "'", Connessione, 1
    Il messaggio che visualizzo se inserisco nella Text1 "1234567" è sempre: "Matricola non presente", cosa sbagliata visto che nel database è presente.
    Tu stai dicendo ad Access di restituirti i valori del campo Matricola per tutti i record che hanno nel campo mat (che non esiste sul DB, quindi è errato e dovrebbe essere sostituito con Matricola, appunto) il valore presente all'interno della TextBox, che viene concatenato nella stringa formando direttamente la query precisa da eseguire con il valore richiesto.

    Originariamente inviato da luigi1993
    Ps.
    Nel database Access i campi sono:

    1)ID
    2)Matricola
    3)Password
    Appunto. La clausola WHERE richiede di specificare la condizione di filtro dei record, quindi tu devi scrivere WHERE Matricola = 'valore', senza usare mat, che non fa parte del database ed è presente solo in VB, fermo restando che - anche se fosse visibile alla query SQL - quanto scrivi dal punto di vista logico è comunque errato, perché staresti dicendo al motore che vuoi tutti i record in cui "mat" (che contiene la matricola da filtrare) è uguale al valore che hai specificato in modo direttamente letterale, che non ha comunque senso.

    Ripeto: prendi a mano un libro e studia le basi del linguaggio Visual Basic, l'utilizzo dei tipi di dato fondamentali, e approfondisci anche la sintassi SQL.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  2. #32
    Si infatti dovevo scrivere così:

    codice:
    Private Sub Cerca_Click()
    On Error Resume Next
    
    Set Connessione = New ADODB.Connection
    Set RS = New ADODB.Recordset
    Connessione.Open str
    RS.Open "SELECT Matricola FROM Table1 WHERE Matricola='" & Form1.Text1.Text & "'", Connessione, 1
    
    If RS.EOF Then
    MsgBox "Matricola non presente", vbCritical, "Attenzione"
    Unload Me
    ElseIf RS.EOF = False Then
    MsgBox "Matricola presente!", vbExclamation, "Informazione"
    RS.MoveNext
    End If
    
    RS.Close
    Connessione.Close
    
    End Sub

    Sbagliavo, perchè credevo che nella <condizione> non potevo inserire il campo "Matricola", invece è possibile. Mi bloccavo lì solo per un "fissa mentale". Sorry!

    Comunque grazie mille alka e gibra!

  3. #33
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da alka
    Ripeto: prendi a mano un libro e studia le basi del linguaggio Visual Basic, l'utilizzo dei tipi di dato fondamentali, e approfondisci anche la sintassi SQL.
    Quoto al 100%.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.