PDA

Visualizza la versione completa : [VB] Problema con record


Francesco_76
04-11-2002, 18:17
Ciao a tutti

Mi hanno incaricato di copiare da un database le citta e da un'altro il cap.....

e scrivere tutto su un'altro database, ma sono una marea di dati!!!

allora ho pensato di far fare tutto a VB e diciamo che ci sono riuscito, ma quando non trova un record mi da errore io vorrei fare in modo che se non trova un record passi al successivo

questo e il codice



Private Sub Command1_Click()
Dim sSearch As String
Dim Db As Database
Dim Rs As Recordset
If Text1 <> "0" Then
sSearch = "select * from Comuni where ID = " & Text1 & ""
Set Db = OpenDatabase(App.Path & "\Comuni97.mdb", False, False)
Set Rs = Db.OpenRecordset(sSearch)
Set Data1.Recordset = Rs

Text2 = Rs!COMU_DESCR
Provincia = Rs!COMU_PROV
Codice1 = Rs!COMU_COD




Else

Comune = ";-))"

End If

Rs.Close
End Sub









Private Sub Text1_Change()
Dim sSearch As String
Dim Db As Database
Dim Rs As Recordset
If Text1 <> "0" Then
sSearch = "select * from Comuni where ID = " & Text1 & ""
Set Db = OpenDatabase(App.Path & "\Comuni97.mdb", False, False)
Set Rs = Db.OpenRecordset(sSearch)
Set Data1.Recordset = Rs

Text2 = Rs!COMU_DESCR
Provincia = Rs!COMU_PROV
Codice1 = Rs!COMU_COD




Else

Comune = ";-))"

End If

Rs.Close
End Sub

Private Sub Text2_Change()
Dim sSearch As String
Dim Db As Database
Dim Rs As Recordset
If Text2 <> "0" Then
'sSearch = "select * from Comuni where ID = " & Text2 & ""
sSearch = "select * from Comuni where Comune like '*" & Replace(Text2, "'", "''") & "*'"
Set Db = OpenDatabase(App.Path & "\Cap.mdb", False, False)
Set Rs = Db.OpenRecordset(sSearch)
Set Data2.Recordset = Rs

Comune1 = Rs!Comune
Provincia1 = Rs!Provincia
Prefisso1 = Rs!Prefisso
Capoluogo1 = Rs!Capoluogo
Catastale1 = Rs!Catastale
Cap1 = Rs!Cap
Else

Comune = ";-))"

End If

Rs.Close

Data3.Recordset.AddNew

Data3.Recordset!Comune = Comune1
Data3.Recordset!Provincia = Provincia1
Data3.Recordset!Prefisso = Prefisso1
Data3.Recordset!Capoluogo = Capoluogo1
Data3.Recordset!Catastale = Catastale1
Data3.Recordset!Cap = Cap1
Data3.Recordset!Codice = Codice1

Data3.Recordset.Update

Text1 = [Text1] + 1


End Sub



mi dice "nessun record corrente" ed evidenzia questo

Comune1 = Rs!Comune

come posso dire che se non trova il record deve aggiungere 1 a text1 e ripetere la ricerca??

Grazie mille

:ciauz:

Francesco_76
04-11-2002, 18:22
Forse c'è l'ho fatta

:p

Aggiungendo



...
On Error GoTo ErrFas

If Text2 <> "0" Then
'sSearch = "select * from Comuni where ID = " & Text2 & ""
sSearch = "select * from Comuni where Comune like '*" & Replace(Text2, "'", "''") & "*'"
Set Db = OpenDatabase(App.Path & "\Cap.mdb", False, False)
Set Rs = Db.OpenRecordset(sSearch)
Set Data2.Recordset = Rs

Comune1 = Rs!Comune
Provincia1 = Rs!Provincia
Prefisso1 = Rs!Prefisso
Capoluogo1 = Rs!Capoluogo
Catastale1 = Rs!Catastale
Cap1 = Rs!Cap
Else

Comune = ";-))"

End If

ErrFas:

Text1 = [Text1] + 1
....




:metallica

darkblOOd
04-11-2002, 18:26
:nonono:

dopo che crei il recordset devi controllare se la proprietà EOF e BOF del recordset appena creato sono contemporaneamente TRUE

oppure se la proprietà recordconut del recordset è = a 0



If Rs.EOF = TRUE AND Rs.BOF = TRUE THEN
'Comune non trovato
else
'Comune trovato
end if


oppure:


If Rs.RecordCount = 0 THEN
'Comune non trovato
else
'Comune trovato
end if


PS:

EOF sta per End Of File e ti dice se sei posizionato subito dopo l'ultimo record

BOF sta per Begin Of File e ti dice se sei posizionato subito prima il primo record

RecordCount ti dice quanti record ha trovato

:ciauz:

ladyBlu
04-11-2002, 22:57
ciao france'...:ciauz:

per controllare se il valore di un campo del recordset è nullo ti basta scrivere così:


If Not IsNull(Rs!Comune) Then
Comune1 = Rs!Comune
Enf If


con la parolina magica "IsNull" sai se è nullo quindi per poter assegnare alla variabile Comune1 un valore valido metti davanti il "Not" che ti fa entrare nell'If solo se Rs!Comune ha un valore diverso da "Null"...
...forse è una spiegazione un po' contorta, ma spero sia arrivata...:gren:

:ciauz: notte fra...:smack:

Francesco_76
05-11-2002, 10:19
Ciao a tutti, e buongiorno!! :D

Diciamo che riusciendo ad evitare tra "" quell'errore poi dopo tipo 160 record ne ricevo un'altro "Impossibile Aprire il database" (ma l'ha aperto 160 volte....)

Allora questa è una soluzione che devo assolutamente trovare...

vi spiego meglio, ci sono diversi ragazzi in tutta italia che compilano dei database in access inserendo tutte le vie della propia città, questi database tra non molto inizieranno ad arrivare a me, io ho una database (per concessione di qualche buona anima) con tutti i comuni d'italia e le banche, adesso dovrei mettere in relazione il comune con le vie, ma non posso certo ricopiare tutto a MANO!!! :confused: altrimenti se mi avessero chiesto di farlo a mano gli avrei detto :sgrat: ( :gren: )

Quindi questo piccolo programmino che ho fatto serve a fare il lavoro velocemente e bene.
(e ovvio che quello che sto facendo adesso è ancora una prova)

Quindi se qualcuno :D di voi ha una buona banda e vuole scaricarsi i file (3,64 Mb) e magari dargli una controllatina....

quando avro inserito tutto poi lo metto a disposizione....può essere sempre utile.

file (http://www.actionlab.it/database.zip)

io intanto ci lavoro su

Grazie mille a tutti

ciao

:ciauz:

yyzyyz
26-11-2002, 23:14
Originariamente inviato da ladyBlu
ciao france'...:ciauz:

per controllare se il valore di un campo del recordset è nullo ti basta scrivere così:


If Not IsNull(Rs!Comune) Then
Comune1 = Rs!Comune
Enf If


con la parolina magica "IsNull" sai se è nullo quindi per poter assegnare alla variabile Comune1 un valore valido metti davanti il "Not" che ti fa entrare nell'If solo se Rs!Comune ha un valore diverso da "Null"...
...forse è una spiegazione un po' contorta, ma spero sia arrivata...:gren:

:ciauz: notte fra...:smack:

GRAZIE LADYBLU, PROPRIO QUELLO KE STAVO CERCANDO, CORTO MA EFFICACE :p

Loading