Newsgroup: it.comp.lang.visual-basic
Titolo: ricerche tra 2 date

Ciao al gruppo
Scusate la domanda molto semplice ma non riesco a creare la query x cercare 
solo i record tra 2 date .
il database è creato in access il campo dove viene fatta la ricerca è 
all'interno di una tabella ed è in formato data.
la query che risulta prendendo due textbox è la seguente
 where (tabella1.Data between '10/01/2008' and '13/02/2008' )
mi esce l'errore di dati non corrispondenti !!!
Come posso ovviare all'inconveniente ???
Grazie
Max

 Come posso ovviare all'inconveniente ???
Forse access non vuole le date in quel formato. Non dovevano essere
racchiuse tra ## mi pare?
Prova a fare l'sql da access a me vien fuori:
WHERE ([STORICO]![INIZIO] Between #1/1/2007# And #1/1/2008#);

 WHERE ([STORICO]![INIZIO] Between #1/1/2007# And #1/1/2008#);
Forse anche una cosa del genere puo' andare:
Tabella1.DataDaTestare Between CDate('10/01/2008') and CDate('13/02/2008')
Ciao!
    Alex

Ciao Andrea .
ho risolto cosě
  where (tabella1.Data between #" & txtDat1.Text & "# and #" & txtDat2.Text 
& "#)
xň ho il problema che mi prende le date in modo errato
mi spiego  se la data inserita nell'archivio č 11/02/2008 me la mette anche 
nella ricerca 01/01/2008 - 31/01/2008
c'č un modo x rendere le ricerche sulle date univoco ???
Grazie
"Andrea [Work]" <andrea.isw...@gmail.invalid> ha scritto nel 
messaggio news:mh2bm9sx8q23$.eb71l5fa9kcn$.dlg@40tude.net...



In Access le date si esprimono in formato inglese: mm/dd/yyyy
Mi sembra inoltre che voglia i # come delimitatori.
Quindi, sia in Insert che nella Where, le parti di stringa che 
rappresentano una data vanno formattate in quel modo.
E' strano il caso che citi, in quanto il 2 Novembre 2008 non ricade nel 
gennaio 2008 (il 1/1 è primo gennaio sia in formato italiano che in 
formato inglese, mentre il 31/01 nel formato inglese non esiste, quindi 
come 'aiuto' Access si prende la libertà di interpretarlo in formato 
italiano e di girare le date, per cui è il 31 Gennaio anche se è 
scritto male). Prova a postare la query esatta che ti dà quel 
risultato.
Alberto
-- 
Thomas Fuller: Ci sono persone che sono state considerate coraggiose 
perchè avevano troppa paura per scappare.

 xň ho il problema che mi prende le date in modo errato
Apparte l'errore, ti consiglio di farti una o piů funzioni che ti
formattano un valore nel formato che il DB vuole.
Perchč se lasci cosě, in caso di modifica globale, c'č da ridere (almeno
che il programma consista in 10 query totali).

 che il programma consista in 10 query totali).
Che poi facendo come fa lui, non c'è neppure il concetto di 'valore'. 
Lui passa da stringa a stringa. Il che, dal mio punto di vista, non va 
bene neppure per i campi testuali (per i quali comunque occorre come 
minimo il replace degli apicini e il troncamento alla lunghezza 
massima), figuriamoci per campi binari...
Alberto
-- 
Friedrich Nietzsche: Un po' di salute ogni tanto è il miglior rimedio 
per l'ammalato.

 massima), figuriamoci per campi binari...
Io mi sono fatto una stringa che becca in ingresso un variant, e il tipo di
dato nel caso sia stringa (da una enum).
E più o meno faccio:
Public Function Var2SQL(ByVal vntValue As Variant, ToSQLType As _
fbFieldMainType) As String
    Select Case VarType(vntValue)
        Case vbInteger, vbLong, vbByte
        Case vbSingle, vbDouble, vbCurrency, vbDecimal
        Case vbDate
        'per i tipi stringa guardo come voglio l'output,
        'attenzione l'input deve essere Formattato correttamente
        Case vbString
            Select Case ToSQLType
                Case tpData
                Case tpIntero
                Case tpStringa
                Case tpVirgola
                Case tpSconosciuto
            End Select
        Case Else
          MsgBox "Tipo variabile sconosciuto : " & CStr(vntValue)
    End Select
End Function
Ho visto che funziona nei vari casi, ovviamente in caso di Stringa (ovvero
da textbox), il dato arriva già corretto come formato. Se è un numero col
suo formato, se è una data col suo, ecc. E anche i tipi di dato previsti
sono quelli che effettivamente utilizzo.

                 Case tpData
Esatto.
Nel caso che riporti, infatti, all'interno del Case tpData tu sei 
obbligato a eseguire un CDate seguito da un Format$, per passare da 
stringa digitata dall'utente secondo le impostazioni locali, a stringa 
formattata secondo il formato richiesto dal db.
Quindi, anche solo per un millesimo di secondo, sei passato da stringa 
a valore a stringa, mentre questo concetto manca del tutto nel caso del 
nostro amico OP.
Ciao
Alberto
-- 
Il tempo e la pazienza possono più della forza o della rabbia


Colgo l'occasione per sottolineare una questione che
mi sta particolaremente a cuore.
"Perchè non creare uno standar internazionale ?"
Mi riferisco chiaramente alle grandi potenze
in campo IT
Dannazione la storia delle date è sempre stata una gran
rottura di palle non credate anche voi ?

 in campo IT
Esiste lo standard.
Solo Access fa eccezione.
Alberto
-- 
Konrad Adenauer: All'intelligenza Dio ha posto limiti, alla stupidità 
no.


Intendi yyyy/mm/dd ?

 "Perchè non creare uno standar internazionale ?"
http://it.wikipedia.org/wiki/ISO_8601
ciao
stefano

Tanqueray Lemon ha usato la sua tastiera per scrivere :

Intendo 'yyyymmdd hh:mm:ss.nnn'
Ciao
Alberto
-- 
Max Beerbohm: Tutto ciò che è degno di essere fatto è stato fatto 
ripetutamente. Dalle cose mai fatte bisognerebbe tenersi, sospetto, 
molto alla larga.

 ha scritto nel messaggio 
news:mn.6b1e7d828...@hotmail.com...


 chi mi aiuta ??
Quando setti il .value ti rientra nella routine e fa casino.
Soluzione grezza (non so se funge, prova):
Private Sub ckPippo_Click(Index As Integer)
  Static AlreadyRun as boolean
  if AlreadyRun then exit sub
  AlreadyRun=True
  Tuo Codice
  AlreadyRun=False
End sub

> cioč


    End If
In questo modo ti ci passa sempre due volte, e verifica bene che funzioni
se parti con una form con un valore già checked.
Comunque magari funziona correttamente con tutti i casi.