PDA

View Full Version : [vb6] ado e controllo record


RaouL_BennetH
08-12-2004, 14:47
Salve, la mia domanda è questa:

mi collego ad un db tramite ADO, e vorrei fare un controllo del genere quando inserisco un nuovo nominativo del db:

Se un campo particolare, è già memorizzato, come faccio a fargli fare il controllo in modo che mi dia una msgbox tipo "CODICE GIA' PRESENTE" ?


thx


RaouL.

RaouL_BennetH
08-12-2004, 15:02
Originariamente inviato da RaouL_BennetH
Salve, la mia domanda è questa:

mi collego ad un db tramite ADO, e vorrei fare un controllo del genere quando inserisco un nuovo nominativo del db:

Se un campo particolare, è già memorizzato, come faccio a fargli fare il controllo in modo che mi dia una msgbox tipo "CODICE GIA' PRESENTE" ?


thx


RaouL.

Come non detto :rolleyes:

Risolto mezzo secondo dopo averci pensato un "pò" più intensamente...

Sorry.

cionci
09-12-2004, 14:56
Metti il campo indicizzato con un vincolo di unicità...

RaouL_BennetH
10-12-2004, 11:20
Originariamente inviato da cionci
Metti il campo indicizzato con un vincolo di unicità...


Ecco....mettendo il campo indicizzato nel database, ho un bel pò di problemi:



'prima controllo che i dati inseriti non siano già presenti nel db

isql = ""
isql = isql & "SELECT Codice" & vbCrLf
isql = isql & "FROM tblanagrafica" & vbCrLf

Set rs = cn.Execute(isql)
If Val(txtCodice.Text) = rs("Codice") Then
MsgBox "Codice Scheda già Presente!", vbOKOnly
Else 'altrimenti, se non ci son problemi....

'aggiungo i dati scritti nel database
isql = ""
isql = isql & "INSERT INTO tblanagrafica(Cognome, Nome, Mansione, Codice)" & vbCrLf
isql = isql & "VALUES (' " & txtCognome.Text & " ', ' " & txtNome.Text & " ', ' " & Combo1.Text & " ', ' " & txtCodice.Text & " ' )" & vbCrLf
Set rs = cn.Execute(isql)

MsgBox "Dati Inseriti Correttamente!", vbOKOnly
txtCognome.Text = ""
txtNome.Text = ""
Combo1.Text = ""
txtCodice.Text = ""
End If


Però, in questo modo mi funziona solo se ho già almeno un record inserito :(

Se non c'è nessun record, mi da quest'errore:



Errore di run time '3021'
Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente



E quando vado a fare il debug, ovviamente mi porta qui:



If Val(txtCodice.Text) = rs("Codice") Then



Difatti, se non c'è nemmeno un record, come verifica quella condizione?

help :cry:

RaouL_BennetH
11-12-2004, 01:00
up :muro:

Fenomeno85
11-12-2004, 19:01
rs non assune qualche valore particolare quando non esiste il risultato dell'interrogazione?

~§~ Sempre E Solo Lei ~§~

cionci
11-12-2004, 19:16
Dopo l'esecuzione della query devi mettere:

If rs.EOF Then
'qui già sai che il codice non esiste
Else
'esegui il tuo codice precedente

RaouL_BennetH
11-12-2004, 19:26
Originariamente inviato da cionci
Dopo l'esecuzione della query devi mettere:

If rs.EOF Then
'qui già sai che il codice non esiste
Else
'esegui il tuo codice precedente

thx, cionci :)