PDA

Visualizza la versione completa : Mi carica sempre il primo record (VB)


xit
01-08-2002, 11:18
Inserisco nella Mask il codice Fiscale clicco su cerca e mi carica
i campi con il primo record


Private Sub cmdCerca_Click()
Dim dbConn As New ADODB.Connection
Dim dbRec As New ADODB.Recordset
Dim ICod As String
g_strConnectionString = "maia"
dbConn.ConnectionString = g_strConnectionString
dbConn.Open
dbRec.Open "Pazienti", dbConn, adOpenForwardOnly, adLockOptimistic, -1
ICod = MaskCodice.Text
While dbRec.EOF
Set dbRec = dbConn.Execute("SELECT * FROM Pazienti WHERE CodFiscale = '" & ICod & "'")
dbRec.MoveNext
Wend
txtNome.Text = dbRec!Nome
txtCognome.Text = dbRec!Cognome
DTPicker1.Value = dbRec!Data
End Sub

ladyBlu
01-08-2002, 11:20
scusa, ma ogni volta che entri nel ciclo ripeti l'execute con lo stesso codice, è normale che faccia così!!!
:master:

metti la select fuori dal ciclo... :metallica

thebass
01-08-2002, 11:25
Originariamente inviato da xit
Inserisco nella Mask il codice Fiscale clicco su cerca e mi carica
i campi con il primo record


Private Sub cmdCerca_Click()
Dim dbConn As New ADODB.Connection
Dim dbRec As New ADODB.Recordset
Dim ICod As String
g_strConnectionString = "maia"
dbConn.ConnectionString = g_strConnectionString
dbConn.Open
dbRec.Open "Pazienti", dbConn, adOpenForwardOnly, adLockOptimistic, -1
ICod = MaskCodice.Text
While dbRec.EOF
Set dbRec = dbConn.Execute("SELECT * FROM Pazienti WHERE CodFiscale = '" & ICod & "'")
dbRec.MoveNext
Wend
txtNome.Text = dbRec!Nome
txtCognome.Text = dbRec!Cognome
DTPicker1.Value = dbRec!Data
End Sub

Non ho capito lo scopo dell'azione, visto che comunque alimenteresti solo txtNome, txtCognome e DTPicker... se metti (giustamente) la select prima del loop, visualizzeresti solo l'ultimo record...

:master:

xit
01-08-2002, 11:27
Non ho capito!!!!

thebass
01-08-2002, 11:28
Comunque, se il codice fiscale è univoco, basterà:




Set dbRec = dbConn.Execute("SELECT * FROM Pazienti WHERE CodFiscale = '" & ICod & "'")

txtNome.Text = dbRec!Nome
txtCognome.Text = dbRec!Cognome
DTPicker1.Value = dbRec!Data



:ciauz:

xit
01-08-2002, 11:31
Mi dice che il record corrisponde all'inizio o alla fine del file
oppure è stato eliminato.Per eseguire l'operazione bisogna disporre di un record corrente.

Boldan
01-08-2002, 11:34
Probabilmente non esiste alcun record con le caratteristiche indicate nella clausola 'Where' dell'istruzione 'Select'.

Prova a verificare che esista un record nel DB con quel Codice fiscale.

Ciao!!:D

thebass
01-08-2002, 11:35
Originariamente inviato da xit
Mi dice che il record corrisponde all'inizio o alla fine del file
oppure è stato eliminato.Per eseguire l'operazione bisogna disporre di un record corrente.

Vuol dire che non ha trovato nessun paziente con quel codice fiscale;



Set dbRec = dbConn.Execute("SELECT * FROM Pazienti WHERE CodFiscale = '" & ICod & "'")

If Not dbRec.EOF and NOT dbRec.BOF Then
txtNome.Text = dbRec!Nome
txtCognome.Text = dbRec!Cognome
DTPicker1.Value = dbRec!Data
Else
Msgbox("Nessun paziente trovato")
End If

ladyBlu
01-08-2002, 11:36
nel tuo codice è normale, ma se usi quello di thebass non dovrebbe darti problemi...

thebass ha ragione, il ciclo non ti serve dal momento che devi impostare solo delle text box con il risultato della tua query.
;)


:ciauz:

xit
01-08-2002, 11:57
HO RISOLTO UN Pò DI PROBLEMI ME LI DAVA ANCHE IL CAMPO CODICE FISCALE

Loading