Newsgroup: it.comp.lang.visual-basic
Titolo: Baco di access???

Con vb5 e access 97 ho questo problema:
Devo riempire la tabella SUPERMAN con i dati estratti dalla tabella
t_historysped selezionando un determinato periodo del campo Disdate; uso la
seguente stringa SQL ma il risultato che ottengo è strano: se scelgo un
periodo tra due date decimali (es: 11/10/1999 and 31/10/1999) non ho
problemi, mentre se scelgo un periodo tra due date di cui la prima tra 01 e
09 (es: 01/10/1999 o 07/10/1999 and 31/10/1999) mi estrae tutti i dati
presenti in tabella fino alla data finale (es: 31/10/1999), praticamente
saltandomi la prima data.
COME MAI?
Abbiamo provato ad usare il comando Cdate, a mettere gli apici, a mettere le
#, ma non cambia niente; però eseguendo la stessa SQL in access (da cui l'ho
praticamente copiata) funziona.
Vi chiedo un aiuto, è urgente...
Cip= "INSERT INTO Superman ( medrec, indivcode, admdate, tiporic, motivoric,
regric, repric, diap, disdate, mododimiss, lenstay, numdh, drg, mdc ) SELECT
t_HistorySped.MedRec, t_HistorySped.IndivCode, t_HistorySped.AdmDate,
t_HistorySped.TipoRic, t_HistorySped.MotivoRic, t_HistorySped.RegRic,
t_HistorySped.RepRic, t_HistorySped.DiaP, t_HistorySped.DisDate,
t_HistorySped.ModoDimiss, t_HistorySped.LenStay, t_HistorySped.NumDH,
t_HistorySped.DRG, t_HistorySped.MDC From t_HistorySped WHERE
(((t_HistorySped.DisDate) Between #01/08/1999# And #31/08/1999#));"
DB.Execute Cip, dbFailOnError

Un solo appunto, le date devono essere nel formato USA cioè mm/gg/aaaa. Non
so però se sarà risolutivo.

Prova a formattare nella SQL le date con CDBL.
Es "Select pippo.data1 From tbl_pippo,tbl_pluto Where cdbl(pippo.data1) =
cdbl(pluto.data1)"

forse e' proprio il formato data usa. anch'io sto usando vb5/a97 -- non ho
provato dentro access, capacissimo che alla ms hanno localizzato l'sql di
access... nel caso puoi solo fare molte prove prima di essere sicuro. qui le
date sono in formato gg/mm/aaaa, pero':
select * from file  where fildate between cdate(#01/08/1996#) and
cdate(#31/08/1996#)
--> restituisce anche gennaio marzo ecc. 96
select * from file  where fildate between cdate(#08/01/1996#) and
cdate(#08/31/1996#)
--> restituisce solo ago 96
select * from file  where fildate between cdate(#10/01/1996#) and
cdate(#10/31/1996#)
--> restituisce solo ott 96
hth, andrea
Max <Max...@Clubnet.it> wrote


Mmm, io in genere uso questo formato:
... WHERE Data<=#" & Format(DataIni, "mm/d/yyyy") & "#...
e mi funziona.
Il baco credo sia di VB che interpreta le date operando una correzione
invece di dare un errore.
Cioč, volendo la data nel formato americano, finche trova un valore di mese
inferiore a 13 va tutto bene, altrimenti, senza dire niente, la localizza e
prende il formato gg/mm/yyyy.
Verificare per credere.
Federico

 --> restituisce anche gennaio marzo ecc. 96
se quello che dici tu e' vero credo che avrei dovuto ricevere un altro
risultato. qui il primo valore e' 31, ma non mi restituisce affatto "il
formato gg/mm/yyyy", direi. cmq mi hai messo un dubbio e ho riprovato ora.
nel rs restituito ci sono in effetti gennaio, febbraio, marzo, aprile,
maggio, giugno, luglio, e anche agosto 1996. cioe' la qry risulta fra 1.1.96
e 31.8.96. come dire che fra vb, dao e sql qualcuno si e' un tantino
confuso. per capire con piu' certezza i possibili risultati occorrerebbero
un po' di prove, con dati _conosciuti_ da filtrare e analisi dei risultati.
o forse, piu' semplicemente, basta mettere le date in formato americano per
avere risultati probabili, e non rompersi la testa, piu' o meno come dicono
i vari manuali, in qto caso la guida in linea (da me:
C:\vb5\help\jetsql35.hlp):
date literals must be in U.S. format, even if you're not using the U.S.
version of the Microsoft Jet database engine. For example, May 10, 1996, is
written 10/5/96 in the United Kingdom and 5/10/96 in the United States. Be
sure to enclose your date literals with the number sign (#)
notare il MUST -- cioe': r.i.p. per un altro standard (data ansi). ma qta
volta non so -- davvero -- se l'infrazione e' di ms o precedente, cioe', non
so con altri sql.
ciao, a.