Newsgroup: it.comp.appl.access
Titolo: come mettere in AND due Sfiltro?

Ciao,
ho fatto una scommessa con un mio amico niubbo almeno quanto me.
chi riuscirà prima a mettere in "and" questo maledetto codice?
in pratica è applicato a due box di testo, che si vogliono utilizzare per
filtrare dei record.
singolarmente si ignorano l'uno con l'altro e "vince" sempre l'ultimo
modificato.
invece vorremmo che interagissero in AND appunto.
il codiceè sull'evento modifica è questo:
Private Sub box1_Change()
Dim rst As DAO.Recordset
   Dim strR As String
   Dim sFiltro As String
   strR = Me.box1.Text
 
   sFiltro = "campo1 like '*" & strR & "*'"
    Me.Filter = sFiltro
    Me.FilterOn = True
 
   Me.box1.SelStart = 255
End Sub
**** 
il secondo box ha questo codice:
Private Sub box2_Change()
Dim rst As DAO.Recordset
   Dim strR As String
   Dim sFiltro As String
   strR = Me.box2.Text
 
   sFiltro = "campo2 like '*" & strR & "*'"
    Me.Filter = sFiltro
    Me.FilterOn = True
 
   Me.box2.SelStart = 255
End Sub
sarà stupido ma non sapendo nulla di programmazione non so proprio come
fare.
spero tanto che qualcuno mi sappia aiutare... così vinco io!
ciao!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Beh il tuo codice è estremamente bizzarro... a cosa serve la
dichiarazione di un Recordset DAO...?
2 Criteri si mettono in AND con l'AND....!
Cirerio1 AND Criterio2...!
Quando costruisci il 1° leggi anche la 2° e lo costruisci in modo
dinamico completo...!
@Alex

 @Alex
Vedi... il codice non lo conosco proprio... è stato un copia e incolla che
funziona... quindi non so se quella dichiarazione serva o sia inutile o
ancora dannosa.
quello che non riusciamo a fare è appunto mettere i campi in AND, non
conosco le regole base ma di sicuro non basta scrivere
sFiltro = "campo1 like '*" & strR & "*'" AND  "campo1 like '*" & strR &
"*'"
grazie per la comprensione.
ciaociao
gio


 "*'"
cosi' certamente no ma cosi' forse si
sFiltro = "campo1 like '*" &  strR & "*' AND   campo1 like '*" &  strR &
"*'"
-- 
ac (x=y-1)

 "*'"
funziona parzialmente. mi prende in considerazione solo il primo carattare
che scrvivo nel box1, se ne inserisco un secondo (anche se è presente
nella stringa di qualche record) non restituisce nessun valore
però è un primo step... grazie
giò



Io ho fatto così (se ho ben capito il tuo problema):
Con due combobox  cmb1 e cmb2
Dim varFiltroGenerico, varFiltroCmb1, varFiltroCmb2
Il filtro generico così:
===============================================
varFiltro = "Like " & Chr$(34) & "*" & Chr$(34)
===============================================
La routine qualcosa del genere su aggiornamento di ciascuna delle
combobox
===============================================
If Me.cmb1 = vbNullString Then
    varFiltroCmb1 = varFiltro
Else
    varFiltroCmb1 = "=" & Me.cmb1
End If
If Me.cmb2 = vbNullString Then
    varFiltroCmb2 = varFiltro
Else
    varFiltroCmb2 = "=" & Me.cmb2
End If
===============================================
Quindi il filtro SQL così:
===============================================
.......WHERE Tizio " & varFiltroCmb1 & " AND Caio " &
varFiltroCmb2......ecc ecc
===============================================
Ciao
Sergio

 Sergio
mi sembra che l'usare una combo renda le cose + complesse ancora (credo)
ho scovato l'inghippo. con il codice che avevo provato io
"campo1...And campo2..." viene cercata la stringa di testo sia nel campo 1
che nel 2
quindi se inserivo piů di un carattere non restituiva nulla perchč nel
campo2 non trovava il secondo.
invece a me serve che cerchi la stringa del box1 nel campo1 AND la stringa
del box2 nel campo2
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 questo articolo e` stato inviato via web dal servizio gratuitohttp://
www.newsland.it/newssegnala
 gli abusi ad 
ab...@newsland.it
Va bene anche con txt box;nel mio caso popolo le combo usando i dati
il recordset da filtrare.
Ciao

 Ciao
Grazie... siamo in due a cercare di capire ma la vedo dura...
Grazie
giovi e al
-- 
questo articolo e` stato inviato via web dal servizio gratuito 



-- 
ac (x=y-1)

 hai nulla possa essere generato un filtro non corretto.
Non essendo noi a zero a livello di qualunque linguaggio di programmazione
son cose dure...
ho provato  mettendo sulla seconda casella testo campo1 e poi con campo2
ma non sono funziona correttamente se viene utilizzato solo un box di
ricera ok, se ne uso 2 funziona solo se esistono record che hanno lo
stesso valore nel campo1 e nel campo2 ma non è quello che vorrei (ovvero
che box1 cercasse in campo1 e parallelamente box2 in campo2. i valori
contenuti in campo1 non saranno mai uguali a quelli di campo2)
buona giornata
al (e giovi)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 al (e giovi)
ooooooh   my   gosh!
Sempre a confondere mappa con territorio.
Perche' non provi/ate a fare quello che hai scritto?
i.e.
su cbx1
filtro = "campo1 like '*"&  cbx1.text&  "*'"&  iif(""&  cbx2 = "","","
and   campo2 like '*"&  cbx2&  "*'")
il cui significato e':
Prendi il valore attuale di combo1 e con quello cerca su campo1 e 
contemporanemente (AND) prendi quello che c'e' su combo2 e con quel 
valore cerca su campo2
e su cbx2
filtro = "campo2 like '*"&  cbx2.text&  "*'"&  iif(""&  cbx1 = "","","
and   campo1 like '*"&  cbx1&  "*'")
il cui significato e':
Prendi il valore attuale di combo2 e con quello cerca su campo2 e 
contemporanemente (AND) prendi quello che c'e' su combo1 e con quel 
valore cerca su campo1
-- 
ac (x=y-1)

 valore cerca su campo1
per parlare il VBAese bisogna conoscerlo! noi siamo al livello "de pen is
on de teibol" o meno.
Dopo proviamo anche questa! (nel frattempo al ha trovato un accrocchio
creando un campo che unisce i dati degli altri campi e la ricerca la va
sul campo unito... funzionare funziona.
però gli dico anche questo!
ciao
giovi


 ciao
Basta mettersi d'accordo sul significato di campo.
Se si intendesse: campo=attributo di tabella
quello trovato non solo e' un accrocchio ma anche (per dirla alla 
Uolter) una frescaccia.
-- 
ac (x=y-1)

 Uolter) una frescaccia.
in due (de)menti non siamo riusciti a partorire di meglio... però... anche
se è una frescaccia assolve al compito previsto.
quando dico campo intendo quello che si popola con un valore per ciascun
record prendendo il dato da una tabella o da una query.
Ora dopo chi un paio di birre, chi qualche intruglio strano di cui non
voglio sapere l'origine ci è venuta in mente un'altra cosa.
La freascaccia ora filtra quando si da invio sul box.
Visto che ho nella stessa maschera un pulsante che mi aggiorna la
maschera, gli si può far dare l'equivalente dell'"enter" sul box filtro?
giovi e al


 maschera, gli si può far dare l'equivalente dell'"enter" sul box filtro?
cioe'? richiamere il codice che sta sull'evento change del cbx?
Cioe:
sub  buttoncontrol_click()
   call controllocombo_change() (*)
end sub
anche se non dovrebbe funzionare perche' il change lavora sulla 
proprieta' .Text mentre il click sul bottone e richiamo della funzione 
del combo dovrebbe lavorare, invece, sulla proprieta' .Value
Perche' non esponi/ete il codice che attualmente usate?
E, comunque, normalmente: problema diverso=nuovo thread
(*) o un piu' semplice: controllocombo_change
-- 
ac (x=y-1)

 (*) o un piu' semplice: controllocombo_change
Potrei mandarti il file via mail?


 Potrei mandarti il file via mail?
Nein.
Non e' questo lo spirito del NG, tranne in casi particolari non e' 
costume dei partecipanti al NG risolvere i problemi in modo privato.
Fare quest'ultima cosa coinvolge il piano "professionale", con quel che 
ne consegue (*).
E poi, ovviamente, non intendevo *tutto* il codice ma solo quello che 
interessa, un ctrl+c e ctrl+v e' anche piu' veloce dell'impacchettare 
una email
(*) Se poi qualcuno e' interessato si fara' avanti.
-- 
ac (x=y-1)