Newsgroup: it.comp.lang.vo-clipper
Titolo: Problema con la SetFilter di VO (ma forse anche Clipper)

Ciao a tutti,
ieri ho notato una cosa strana.
Ho un archivio di clienti dove il codice è alfanumerico e
alcuni codici cliente hanno il carattere & al loro interno.
Bene. Se cerco filtrare, ad esempio, i clienti con codice 
che comincia per "A&O", la SetFilter restituisce .F. presentandomi
tutti i record. 
Es:
oDb:SetFilter( "left(_FIELD->CODICE,3)=='A&O' " )
 ho provato anche
oDb:SetFilter( {|| left(_FIELD->CODICE,3)=="A&O" } )
Ho pensato che il problema è legato al fatto che & è l'operatore
macro.
Al momento non ho ancora trovato un metodo per aggirare il problema.
Nessuno ha mai avuto la stessa esperienza?
Saluti
===============================================
Antonello Negrone - Biella - Italy
anto...@anc-software.it
www.anc-software.it

 tutti i record.
Capito il problema. Hai sicuramente una variabile chiamata O visibile in
quel punto del programma e il compilatore tenta di applicare ad essa
l'operatore macro. Ci ho azzeccato?
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 ha scritto nel messaggio
news:3c455df8...@news.aruba.it...


l'operatore macro. Ci ho azzeccato?
Uhm, non proprio, perchè non ho una variabile O, inoltre io ho fatto
un esempio, ma capita la stessa cosa anche utilizzando altri codici,
ma che contengono la &.
Ho provato anche passandogli "A&&O" e simili, ma niente da fare...
Appena posso lo provo col Clipper, giusto per curiosità :-)
Ciao


Francesco D'Aquila
===============================================


 Appena posso lo provo col Clipper, giusto per curiosità :-)
Io, ovviamente, l'avevo già fatta e funziona. Eccoti l'esempio:
FUNCTION MAIN()
    PRIVATE O := "P"
    USE SOCI2
    DBSETFILTER( { || Left( FIELD -> socio, 3 ) == "A&O" } )
    GO TOP
    ? FIELD -> socio
    CLOSE
    RETURN NIL
Così dà quel problema che lamenti, ma se commenti la definizione della
variabile O allora funziona bene.


 >Il problema si č risolto cosě


variabile O allora funziona bene.
ne deduco che sia un problema del solo VO.
Ti ringrazio per l'aiuto


verifica se la variabile che ricevi è quella giusta.
La variabile cFilter contiene la stringa corretta. Probabilmente
è il metodo SetFilter che la ricompila.
Ora che mi viene in mente non ho provato ad utilizzare 
il metodo Clipper-like con la funzione DbSetFilter().....
Provo e faccio sapere


 tutti i record.
ho provato questo methodo con un archivio dei comuni d'Italia i primi 4
erano "A&On"   per n da 1 a 4
ti assicuro che funziona....
se vuoi ti spedisco in pvt il dbf se vuoi provare...
ps ho provato anche x A&0   ( zero) e funziona ugualmente...
ciao
francosignore
////////////////////////////////////////////////////////////////////////////
////
METHOD ProvaFiltro CLASS StandardShellWindow
LOCAL oDb AS COMUNI
LOCAL i AS INT
oDb := COMUNI{}
oDb:SetFilter( {|| Left(_FIELD->Comune,3) == "A&O" })
 WHILE ! oDb:EOF
          ? ++i
         ? oDb:COMUNE
          oDb:Skip()
 ENDDO
..

[...]
buono a sapersi, ho ancora qualche speranza di trovare l'inghippo
Grazie


 ha scritto nel messaggio
news:3c4877f...@news.aruba.it...


scomodi.
Sarebbe la cosa piů corretta. Purtroppo i dati sono stati caricati da
un altro programma, e me li sono ritrovati cosě :-((((
