Newsgroup: it.comp.lang.visual-basic
Titolo: Errore 3265 su proprietà rs.filter

Salve a tutti mi succede una cosa strana:
Sul PC dove ho installato VB6 e access 2003 non riscontro nessun problema, 
ma quando poi vado a eseguire il mio programma sull'altro PC dove risiedono 
i dati e vi è win2000 con access 2002 senza VB6 mi genera un errore quando 
provo a eseguire un filtro per data su un rs. Il codice è questo:
            strDate1 = Format(BoxDataDal, "dd/MM/yyyy")
            strDate2 = Format(BoxDataAl, "dd/MM/yyyy")
            strDate1 = "#" + strDate1 + "#"
            strDate2 = "#" + strDate2 + "#"
            StrFiltro =  (DataMov>=" & strDate1 & ")AND (DataMov<=" & 
strDate2 + ") "
            rsMovCassa.Filter = StrFiltro
in pratica il mio filtro sarebbe ad esempio:  (DataMov>=#01/01/2007#)AND 
(DataMov<=#31/01/2007#)
Secondo voi da cosa dipende questo errore?? 

NeMeSi ha detto questo martedì :

Dando per scontato che BoxDataDal e BoxDataAl siano variabili di tipo 
Date (o, al massimo, che siano DateTimePicker in cui ometti la 
proprietà predefinita .Value, ma l'importante è che non siano textbox), 
l'unica cosa che vedo è il formato col giorno prima del mese. Che 
sicuramente non va bene in Sql, ma forse per il Filter va bene, non 
ricordo. Sostituirei i + con & nella concatenazione.
Ciao
Alberto
-- 
Carlo Rubbia: Siamo su un treno che va a trecento chilometri all'ora, 
non sappiamo dove ci sta portando e, soprattutto, ci siamo accorti che 
non c'è il macchinista.

NeMeSi ha scritto:

Le date devi formattarle in modo diverso altrimenti verrà convertito
da JET e scambierà mm/dd
Ti consiglio il formato ISO
Format(TuoCampoData, "\#yyyy\-mm\-dd\#")
Dim strDate1 As String
Dim strDate2 As String
Dim strSQL As String
strDate1 = Format(BoxDataDal, "\#yyyy\-mm\-dd\#")
strDate2 = Format(BoxDataAl, "\#yyyy\-mm\-dd\#")
strSQL = "[FieldName]>=" & strDate1 & " AND [FieldName]<=" & strDate2
rs.Filter=strSQL
@Alex

 (DataMov<=#31/01/2007#)
Da una ricerca che avevo fatto tempo fa sulla ricerca e sui filtri basati
sulle date era emerso, se non ricordo male, che la proprietà filter dei
recordset ado era dipendente dalle impostazioni internazionali della
macchina su cui il codice veniva eseguito. Hai provato a verificare questo
particolare?
-- 
Salutoni
Sergio
C'è il giorno in cui nasci e quello in cui scegli di vivere
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio 
news:ene71s$m05$1...@nnrp-beta.newsland.it...

A parte il problema sulle date evidenziato dagli altri il 3265 è dato dal 
fatto che DataMov non esiste tra i campi esposti dalla select (sempre che 
l'errore sia dato effettivamente dal Filter) oppure dal fatto che non 
riconoscendo #31/01/2007# lo interpreta come campo.
Ciao 


BoxDataDal e BoxDataAl sono Textbox e come era emerso da un post del 8/12/06 
chiamato rs.filter e between i formati date vanno messi in giorno\mese...
Come ho gia scritto nel post iniziale sul PC dove ho sviluppato il sw 
FUNZIONA quindi non è di sicuro un problema di mancanza del campo o simili. 
Le impostazioni internazionali dei 2 pc sono uguali gg/mm/aaaa...

 fatto che non riconoscendo #31/01/2007# lo interpreta come campo.
Delle due possibili cause senz'altro è vera la prima: un nome di campo scritto
male o inesistente.
Infatti se la data fosse formattata male, l'istruzione in cui si imposta Filter
darebbe errore "Type mismatch", piuttosto che tentare di interpretare la data
come nome di un campo.
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 come nome di un campo.
Sě, penso anch'io, ma l'ho sparata senza provare cercando di dare tutte le 
possibili spiegazioni.
Ciao 

 Le impostazioni internazionali dei 2 pc sono uguali gg/mm/aaaa...
Sarà qualcosa d'altro.
Comunque sicuramente quanto dicevo prima è brutto, poi se a te sta bene 
lo stesso, non insisto.
Ciao
Alberto
-- 
Georges Pompidou: Un uomo di stato è un politico che dona se stesso al 
servizio della nazione. Un politico è un uomo di stato che pone la 
nazione al suo servizio.

 Le impostazioni internazionali dei 2 pc sono uguali gg/mm/aaaa...
Dai retta a dei cretini che con i DB ci lavorano da anni.
Poi, che il tuo errore sia dato da un problema con il formato data è un 
altro problema.
Ciao 

 altro problema.
Sono della stessa vostra idea ma quello che non capisco è il perchè della 
doppia conversione?? Mi sembra di aver capito che .filter vuole una stringa 
e infatti io gli passo una stringa dove non ci sono solo date ma operatori 
ecc ecc e quidi penso che poi sarà lui a trovarsi le date no??
Ora perchè convertire da stringa a data e poi da data a stringa?? 
Considerando il fatto che la data sarà sempre scritta giusta nelle textbox 
perchè arriva da un calendario?? 

 come nome di un campo.
E ma allora non funzionerebbe su nessun pc.. invece sul mio puntando allo 
stesso DB funziona perfettamente.. 

 perchè arriva da un calendario??
Calma.
La data scritta nelle textbox arriva o da un operatore, o da un codice 
che la scrive. Se è il codice che la scrive, utilizzerà le impostazioni 
che hai scelto tu (ad esempio CStr piuttosto che Format), e quindi sai 
solo tu come poi andarla a re-interpretare.
Se per 'calendario' intendi un DTPicker, allora sei fuori strada, 
perchè il .Value del dtpicker restituisce una DATA, e non una stringa. 
Solo se tu la sbatti brutalmente all'interno di una textbox, allora VB 
ti esegue un CStr implicito, e a questo punto, se non altro, il CDate 
funzionerà (ma si tratterebbe di culo e controculo, cioè sbagli sia 
all'andata che al ritorno, ma sbagli nello stesso modo e quindi 
funziona).
Se invece nella textbox ci scrivi con un Format, allora il CDate 
funzionerà una volta sì e una volta no, perchè avresti un output 
delocalizzato ed un input localizzato. Pere con mele.
La doppia conversione è a tua scelta.
Comunque sia, il Format nel momento in cui deve generare una stringa 
utilizzando i placeholder delle date, esige che l'input sia una data. 
Se tu gli passi una stringa, VB COMUNQUE effettua una conversione da 
strigna a data. Però la effettua lui in maniera implicita, quindi tu 
non ne hai il controllo e, soprattutto, non te ne rendi conto leggendo 
il codice. Per questo ti suggerivo di metterci un CDate. Se VB COMUNQUE 
lo effettua, mi sembra più logico che leggendo il codice si debba 
vederlo. Ad esempio, adesso tu sei alla ricerca di un bug. Non so se il 
bug sia effettivamente lì. Ma sicuramente se il bug fosse nella 
conversione, tu staresti facendo fatica doppia nel risolvere.
Ciao
Alberto
-- 
Léo Campion: Il lavoro è l'occupazione di chi non ha nulla da fare.

 ha scritto nel messaggio 
news:mn.1b167d71b...@hotmail.com...

Per levarmi ogni dubbio ho fatto una piccola mod al sw e adesso ho scritto 
io per intero a codice la stringa di filtro io modo da evitare ogni 
possibile discussione (seppur giusta) su formatti, conversioni ecc ecc
ora è cosi:
StrFiltro = "(DataMov>= 01/01/2007)AND (DataMov<= 31/01/2007)"
rsMovCassa.Filter = StrFiltro
e StrFiltro è una stringa.
Morale della favola continua a non funzionare su quel PC....
Ora esclusi tutti i discorsi di conversioni e formato qualcuno ha qualche 
idea sul perchè non funzioni?????? 

 ha scritto nel messaggio 
news:enjeec$obt$1...@nnrp-beta.newsland.it...

FUNZIONA!!!!!!!!!!!!!
Ora però qualcuno mi dovrebbe spiegare il perchè.... il motivo era questo:
StrFiltro = "(DataMov >= 01/01/2007)AND (DataMov <= 31/01/2007)"
ci voleva uno spazio tra DataMov e il > e < ma voi ditemi come mai su un pc 
va e su un altro no...
Papa Bill ci ha messo lo zampino...

NeMeSi ha spiegato il 04/01/2007 :

A parte che questo codice non c'entra niente con quello postato 
inizialmente (dove c'erano i #), il fatto che questo funzioni è ancora 
più strabiliante dell'altro caso.
Mi sa che stai passando di miracolo in miracolo, altro che papa Bill...


 Mi sa che stai passando di miracolo in miracolo, altro che papa Bill...
Dipende: se per funzionare intende che non da errore può essere: 01/01/2007 
viene convertito in frazione (4.9e-4) e poi riconvertito in data.
Che dia anche un risultato coerente è più difficile.
Il problema degli spazi prima e dopo > < non ha senso a meno che non si 
intenda che "> =" deve essere scritto come ">=", cosa che non sembra dal 
post di nemesi.
Personalmente credo che finchè nemesi continua a chiedere lumi e poi va 
ugualmente per la sua strada non se ne uscirà mai.
A meno che per puro culo il codice non funzioni su entrambi i PC e non si 
debba introdurne un terzo :)
Ciao 

 ha scritto nel messaggio 
news:enkvn1$2sa$1...@aioe.org...

Per il discorso dei # è indifferende funziona sia con che senza.. Ho fatto 
la prova...
Non me lo spiego neppure io ma il problema era proprio lo spazio tra il nome 
del campo e l'operatore >= e <=.
Non è che vado per la mia strada ho anche provato a fare come dicevate cioè 
variabile di tipo data con tutte le varie conversioni scritte ecc ecc ma 
continuava a non funzionare anche perchè come ripeto alla fine di tutto il 
discorso in questo caso conta solo la stringa che viene passata a .filter e 
l'errore stava proprio li messo lo spazio tutto va su tutti i pc.
Cmq avevo anche gia provato il sw su altri 2 PC senza riuscire però neanche 
a ricreare il problema forse perchè avevano XP e non 2000 come quello su qui 
si verificava.
Sembra strano ma è cosi... 

 Sembra strano ma è cosi...
La coincidenza delle tue affermazioni mi fà proprio pensare che stai
trattando con campi Testo il chè confermerebbe al completa assurdità
di questo 3D.
@Alex