Newsgroup: it.comp.lang.visual-basic
Titolo: ADOCE e FIND

.....me tapina,non riesco a venirne a capo!
come da mia richiesta precedente in cui sottoponevo il problema del find su
adoce....ora quell'inghippo è stato risolto grazie a un valido aiuto del
ng,ma la mia domanda rimane 1:il like va??????????????????????????
uffi!!!!!!!!!!!
Beba

 uffi!!!!!!!!!!!
ossuvvia! non ti disperare!! ;-)
Ti riporto l'esempio della guida Microsoft ADO for Windows CE 3.1:
The following code example shows how to use an SQL statement to search for
the string, 10%.
Dim rs, i
Set rs = CreateObject("ADOCE.Recordset.3.1")
rs.open "SELECT col1 FROM myTable WHERE col1 LIKE '10\%'" , "",
adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
  Do While Not rs.EOF
    List1.AddItem rs.fields("firstfield").Value
    rs.MoveNext
  Loop
End If
rs.Close
Set rs = Nothing
ciaociao

 > adoce....ora quell'inghippo è stato risolto grazie a un valido aiuto del


 se nn ci fossi tu :-))))
ce ne sarebbero molti altri :-)
prova a togliere il backslash dalla stringa di ricerca: nell'esempio postato
serviva proprio a far interpretare letteralmente il segno "%" che invece,
normalmente, ha la funzione di carattere jolly.
Questo, almeno, in ado. Spero (anche per te) che sia lo stesso per adoce.
ps. per marg: non avertene a male :-)
--
Salutoni
Sergio

 va se per un find devo star qui cosi tanto :°°°°°
Come ha giustamente suggerito Sergio devi togliere /
Per curiosità: come ti sei procurata l'eMbedded VB, scaricandolo dal sito o
da CD?

> Come ha giustamente suggerito Sergio devi togliere /
ops! chiaramente era \

 ha scritto nel messaggio
news:b3fmbk$1lf1kk$1...@ID-173193.news.dfncis.de...


 ha scritto nel messaggio
news:4wJ6a.154759$ZE.45...@twister2.libero.it...


 ha scritto nel messaggio
news:lvJ6a.154757$ZE.45...@twister2.libero.it...


 nel fatto ke nn  va cmq...
ho riletto il tuo post, e quello di marg....
Marg ti consigliava di non fare il find, ma di filtrare il recordser
all'apertura, introducendo la clausola "where nomecampo like 'valore%'"
in alternativa guarda se i recordset adoce supportano il metodo filter una volta
aperti.
Il supporto del find non è il massimo neanche in ado.
--
Salutoni
Sergio


Ho riletto il post di prima dove hai scritto:
sInput = " like '" & Replace(Trim(sInput), "'", "''") & "\%'"
    rs.MoveFirst
    Do While Not rs.EOF
        If rs.Fields(iNumField).Value = sInput Then
                Exit Do
        End If
        rs.MoveNext
    Loop
ma il like è un operatore da utilizzare nella SELECT!
se lo usi così è chiaro che non trova nulla!
Rivediamo un momento, anche qui hai 2 possibilità:
1) Usare il like nella select che usi per aprire il recordset (es. SELECT *
FROM articoli WHERE codice LIKE 'TT3%')
    e in questo caso avrai nel recordset SOLO gli articoli che iniziano per
TT3
2) Confrontare quello che hai inserito con Inputbox con il recordset che
contiene TUTTI gli articoli.
Da quello che ho capito tu opteresti per la 2 quindi il confronto lo devi
fare con una left e non con il LIKE. Quindi il tuo ciclo diventa così:
sInput = Inpubox("Inserire il codice:")
'controllo quanti caratteri sono stati inseriti
n_char=len(sInput)
    rs.MoveFirst
    Do While Not rs.EOF
        If Left(rs.Fields(iNumField).Value , n_char) = sInput Then
                Exit Do
        End If
        rs.MoveNext
    Loop
anche se così facendo trovi solo il PRIMO codice che inizia con TT3
spero di esserti stato utile
ciaociao

emmmm....allora sě che sta diventando una questione mondiale.
ho posto da prinicipio il problema ke il find non funzionava con
ADOCE,quindi lui mi ha suggerito giustamente di fare un ciclo e cosi' ho
fatto.
ti allego il codice cosi' puoi verificare.
If sInput <> "" Then
            sInput = " like '" & Replace(Trim(sInput), "'", "''") & "%'"
            rs.MoveFirst
            Do While Not rs.EOF
                If rs.Fields(iNumField).Value = sInput Then
                    Exit Do
                End If
                rs.MoveNext
            Loop
End If
se ad esempio faccio apaprire una msgbox dopo l'assegnazione dell'input
,essa viene restituita correttaemente.
il risultato pero' si ha solo se 'ARTICOLOXXX'='ARTICOLOXXX'.
quando metto il like non funziona,anke se diventa giustamente
sInput='ARTIC%'.
ho provato con %,*,a qs punto,ripeto,non č che non č la sintassi sbagliata?
o č dove faccio l'if? nn mi sembra di aver fatto errori eppure da terminale
viene restituito errore!!!!
per fare un find in vb ci metto un nanosecondo,per fare una ricerca col
terminalino 3 giorni!!!!!!!
sig....sob...
Beba

 ha scritto nel messaggio
news:fdK6a.154881$ZE.45...@twister2.libero.it...


 ti faccio una torta in cambio! :-)
Ok, al massimo se abiti troppo lontano ma la mandi per e-mail!
ciaociao

 > son talmente abituata a fare i like che una cosa cosi banale nn mi č


    end if
guarda la sintassi dell'operatore like di vb (non di sql), per verificare
criteri e caratteri jolly
Ovviamente non mi pronuncio sulle prestazioni di questo approccio.
In alternativa, come dicevo in un altro post, potresti vedere se il recordset
adoce supporta il metodo filter, da impostare per la ricerca e da cancellare per
rivedere tutti i record.
--
Salutoni
Sergio

ho una bellissima notizia per te....non va na cippa....hihiihihihiihi.....
sInput lo vedo in msgbox come TT3X, iLen lo vedo come 4 ma non funge.
il mio codice ora è questo:
If sInput <> "" Then
            sInput = Trim(Replace(sInput, "'", "''"))
            ' Controllo quanti caratteri sono stati inseriti
            iLen = Len(sInput)
            rs.MoveFirst
            Do While Not rs.EOF
                If Left(rs.Fields(iNumField).Value, iLen) = sInput
     ----stranamente la left non mi da i parametri in visualizzazione
                    Exit Do
                End If
                rs.MoveNext
            Loop
End If
ma da terminale mi viene restituito l'errore......application
Error.....Object,not a collection.....

 ha scritto nel messaggio
news:b3fsd5$1kvm2q$1...@ID-173193.news.dfncis.de...


 Error.....Object,not a collection.....
azz....hai ragione (lo da anche a me).
Comunque, e qui scatta la torta a 2 piani, ho provato col Mid e funge!
quindi:
Do While Not rs.EOF
    If Mid(rs.Fields(iNumField).Value, 1 , iLen) = sInput then
        Exit Do
    End If
    rs.MoveNext
Loop
non sarà il massimo dello stile ma almeno riuscirai a trovare sto maledetto
articolo!!! :-)
ciaociao e fammi sapere

 ha scritto nel messaggio
news:oeL6a.154019$YG2.4...@twister1.libero.it...


 ps:cmq nn ho capito in che città devo inviare la torta triplo strato!
:-DDD
Novara
ciaociao

 ha scritto nel messaggio
news:sOL6a.155242$ZE.45...@twister2.libero.it...


 ci divide un lago :-)
Sě, conosco, se non sbaglio lě nei paraggi c'č un locale Heinecken(o come
cacchio si scrive)
dove si mangia bene e c'č anche il tipo che fa i numeri con le bottiglie
dietro il bancone, giusto?

 ha scritto nel messaggio
news:t7M6a.155308$ZE.45...@twister2.libero.it...


 citta.
Allora forse un giorno ci vedremo, cosě ti insegno a quotare...:-)