PDA

Visualizza la versione completa : [VB] problema ricerca


Rossella_75
29-11-2002, 14:36
Ciao a tutti, continuo i miei studi, ma non riesco a capire perchè cosi non funziona



Private Sub cmbscelta_Click()


Dim sqlstring As String

sqlstring = "select * from Tipo where TIPO='" & cmbscelta & "'"

Data.rstipo.find (sqlstring)

If Not Data.rstipo.EOF Then
Do While Not Data.rstipo.EOF

CATEGORIA = (Data.rstipo.Fields("CATEGORIA"))

Data.rstipo.MoveNext
Loop
Else
MsgBox "Nessun record"

End If

End Sub


o meglio non è che non funziona ma mi da sempre "Nussun Record" :bhò:

sto usando il Data Environment

qualcuno sa aiutarmi?

Grazie mille

:ciauz:

serena
29-11-2002, 16:33
ciao Rossella,
credo che l'errore stia proprio nel comando .find

con questa stringa
sqlstring = "select * from Tipo where TIPO='" & cmbscelta & "'"

devi aprire un recordset e non fare una ricerca
quindi

Data.rstipo.open sqlstring

altrimenti apri prima il recordset poi usi find così:

data.rstipo.find "tipo LIKE '"& cmbscelta & "'"

almeno credo...:ciauz:

Rossella_75
29-11-2002, 16:42
Complimenti ci hai preso in pieno!! :quipy:




Dim sqlstring As String
sqlstring = "select * from Tipo where TIPO='" & cmbscelta & "'"
Data.rstipo.Open sqlstring
Data.rstipo.Find "tipo LIKE '" & cmbscelta & "'"
If Not Data.rstipo.EOF Then
Do While Not Data.rstipo.EOF
CATEGORIA = (Data.rstipo.Fields("CATEGORIA"))
Data.rstipo.MoveNext
Loop
Else
MsgBox "Nessun record"
End If
Data.rstipo.Close


Funziona

Grazie mille

:ciauz:

sebamix
29-11-2002, 16:46
Originariamente inviato da Rossella_75
Complimenti ci hai preso in pieno!! :quipy:




Dim sqlstring As String
sqlstring = "select * from Tipo where TIPO='" & cmbscelta & "'"
Data.rstipo.Open sqlstring
Data.rstipo.Find "tipo LIKE '" & cmbscelta & "'"
If Not Data.rstipo.EOF Then
Do While Not Data.rstipo.EOF
CATEGORIA = (Data.rstipo.Fields("CATEGORIA"))
Data.rstipo.MoveNext
Loop
Else
MsgBox "Nessun record"
End If
Data.rstipo.Close

Funziona

Grazie mille

:ciauz:
Scusa, ma perchè metti la condizione TIPO='x' nella stringa SQL
e poi fai un find sempre su tipo con un LIKE??? Poi quel like IMHO è come se fosse "="...
Non so se mi sono spiegato.

sqlstring = "select * from Tipo where TIPO LIKE '" & cmbscelta & "'"
e togli il find, dovresti ottenere lo stesso risultato.

:ciauz:

serena
29-11-2002, 16:48
però se apri il recordset con questa stringa :

sqlstring = "select * from Tipo where TIPO='" & cmbscelta & "'"

non importa fare anche la .find dopo, perchè lo specifichi in apertura con "WHERE TIPO = '" cmbscelta & "'"

infatti ti dovrebbe aprire il recordset inserendo solo i record con tipo = cmbscelta....

:stordita:

Rossella_75
29-11-2002, 16:49
ops..:adhone: fatto



Dim sqlstring As String
sqlstring = "select * from Tipo where TIPO LIKE '" & cmbscelta & "'"
Data.rstipo.Open sqlstring
If Not Data.rstipo.EOF Then
Do While Not Data.rstipo.EOF
CATEGORIA = (Data.rstipo.Fields("CATEGORIA"))
Data.rstipo.MoveNext
Loop
Else
MsgBox "Nessun record"
End If
Data.rstipo.Close


infatti funziona ugualmente


grazie mille
:ciauz:

Rossella_75
29-11-2002, 16:55
un'ultima cosina ancora :gren:

premetto che funziona perfettamente questo:


Data.rsanagrafico.Open
While Not Data.rsanagrafico.EOF
cmbcliente.AddItem (Data.rsanagrafico.Fields("ID")) & " - " & (Data.rsanagrafico.Fields("nome")) & " " & (Data.rsanagrafico.Fields("cognome"))
Data.rsanagrafico.MoveNext
Wend
Data.rsanagrafico.Close


solo una cosa io ho dei campi in cui il nome non c'è quindi mi stampa lo spazio vuoto, e vorrei fare in modo che se il nome non c'è allora al suo posto mi stampa il campo "agenzia".

è possibile???

:ciauz: :ciauz:

sebamix
29-11-2002, 16:58
Al posto di Data.rsanagrafico.Fields("nome") prova a mettere:


iif("" & Data.rsanagrafico.Fields("nome")="",Data.rsanagrafico.Fields("agenzia"), Data.rsanagrafico.Fields("nome"))

Rossella_75
29-11-2002, 17:07
Pensavo avessi sbagliato a scrivere "iif" e stupidamente l'ho corretto con "if" :gren:

comunque era un'ora che mi impazzivo dietro a questa cosa e tu ci hai messo un'attimo :metallica

non sapevo dell'esistenza di "iif" (prenderò informazioni)

comunque funziona benissimo :metallica

:quipy: :quipy:

grazie mille

:ciauz:

sebamix
29-11-2002, 17:21
Considera che iIF ha 3 parametri:
1^ : condizione
2^ : cod. che viene eseguito nel caso la condizione sia vera
3^ : cod. che viene eseguito nel caso la condizione sia falsa

Considera che comunque esegue tutti e due i casi (stupidamente, IMHO).
Se provi questo ti va in errore:

iif(1=1,(1/1),(1/0))

perchè esegue anche il (1/0) che naturalmente da un bel "divisione per 0". Quindi devi usare iif con le pinze.

Anche se è molto comodo, a volte.

:ciauz:

Loading