PDA

Visualizza la versione completa : [VB] Db: Field esistente


Berello
29-08-2002, 15:32
In che modo posso sapere se un field di un databse esiste oppure no?
Avrei bisogno di inviarlo via Winsock se esiste e di mandare una stringa vuota se non esiste.
Se però non esiste si genera l'errore 3265 e non posso continuare.
E' inutile provare con "On Error Resume Next", perché il codice è questo:

While Not IsNull(myRS.Fields(XXXXX).Value)
Lett = myRS.Fields(XXXXX).Value
Connessione(Index).SendData Lett & vbCrLf
myRS.MoveNext
Wend

Con il "Resume Next" in caso di errore il ciclo diventa infinito.



Set myDB = OpenDatabase(App.Path & "\App.mdb")
Set myTB = myDB.TableDefs(0)
Set myRS = myDB.OpenRecordset(myTB.Name)
myRS.Fields(XXXXX).Value '<--- Questo Field ESISTE O NO???

Vi ringrazio tutti...

ladyBlu
29-08-2002, 15:34
Berè, non ti basta fare un
if notisnull rs.fields(XXX) then
....
end if

???

Berello
29-08-2002, 15:44
No, non basta...
VB appena esegue il "Fields(XXXXX)" fa errore...

Boldan
29-08-2002, 15:45
Da quello che vedo fai un ciclo da cui il programma esce solo quando trova un campo nullo. Ma con la 'resume next' ti viene annullata tale condizione, per uscire dovresti controllare anche che il puntatore dei record non sia posizionato alla fine (EOF).
Quindi:


While Not IsNull(myRS.Fields(XXXXX).Value) And not myRS.EOF
Lett = myRS.Fields(XXXXX).Value
Connessione(Index).SendData Lett & vbCrLf
myRS.MoveNext
Wend


oppure come diceva ladyblu:

While not myRS.EOF
If notisnull rs.fields(XXX) then
Lett = myRS.Fields(XXXXX).Value
Connessione(Index).SendData Lett & vbCrLf
End If
myRS.MoveNext
Wend


Spero sia corretto... fammi sapere!
Ciao!!:ciauz:

Berello
29-08-2002, 15:49
Ho già provato, ma quando la colonna (o il field) non esiste prima di provare a vedere se è "null" non lo trova, quindi fa errore!!!

Come faccio?

Johnny_Depp
29-08-2002, 18:18
invece di on error resume next

utilizza on error goto ETICCHETTA

ETICHETTA:

ora puoi gestire l'errore.

ciao

Berello
29-08-2002, 18:24
Ma non esiste una funzione che dice se esiste o no?
Comunque grazie, ora ho risolto.

pasaran
30-08-2002, 11:54
Se ho capito bene, prova cosi'
While not myRS.EOF
If "" & rs.fields(XXX) <> "" then
Lett = myRS.Fields(XXXXX).Value
Connessione(Index).SendData Lett & vbCrLf
End If
myRS.MoveNext
Wend

Loading