Newsgroup: it.comp.appl.access
Titolo: errore di sintassi nella data

Ciao a tutti. Il mio problema è il seguente.
Ho in origine due query, la prima "TotaliEntrateMensili" e la seconda
"TotaliSpeseMensili".
Entrambe le query sono formate dai seg. Campi: "Mese", "TotaleMensile",
nelle quali quest'ultimo campo è il risultato della somma di tutte le voci
(entrate o uscite) mensili, per le quali è stato fatto un raggruppamento,
appunto in base al mese.
Da queste due query, messe in relazione sul campo "Mese", ne ho ottenuta un'
altra "SaldiMensili" con i seguenti campi: Mese
                                   EntrateMensili
                                   UsciteMensili
                                   SaldoMensile (campo calcolato)
Questa query da origine alla maschera SaldiMensili, con la quale quindi in
ogni record visualizzerò ad esempio: Gennaio2003 (Mese), 1000.00 ?
(EntrateMensili), 600.00 ? (UsciteMensili),       400.00 ? (SaldoMensile).
Fino a qui va tutto bene.
Ora, quello che vorrei fare, è inserire due date (data inizio e data fine)
in una maschera di dialogo per filtrare solo i record  compresi tra le due
date da me inserite.
Ho quindi creato una maschera di dialogo con due caselle di testo "DaData" e
"Adata", ed un pulsante al cui evento "Su clic", ho inserito il seguente
codice (prendendo anche spunto da un post precedente):
Private Sub Comando20_Click()
  Dim Strfiltro As String
  If Not IsNull(Me!DaData) Then
  Strfiltro = "[Mese]>=#" & Format(Me!DaData, "mmmm yyyy") & "#"
  If Not IsNull(Me!AData) Then
  Strfiltro = Strfiltro & "And[Mese]<=#" & Format(Me!AData, "mmmm yyyy") &
"#"
  End If
  Else
  If Not IsNull(Me!AData) Then
  Strfiltro = "[Mese]<=#" & Format(Me!AData, "mmmm yyyy") & "#"
  End If
  End If
  DoCmd.OpenForm "Saldi mensili", , , WhereCondition:=Strfiltro
End Sub
Quando clicco sul pulsante però mi compare il seguente messaggio di errore:
'Errore di sintassi nella data nell'espressione della query
[Mese]>=#DaData#And [Mese]<=#Adata#'
Suppongo si tratti di un problema di formato del campo "Mese", ma non sono
riuscito a risolverlo neanche dopo altri tentativi.
Spero che qualcuno possa aiutarmi, e comunque vi ringrazio per la pazienza
avuta nel leggere "Sto poema"!!!

 ha scritto nel messaggio
news:dcKBa.4446$79.1...@news.edisontel.com...

ma se all'inizio di tutto (dalla tua query con Campi: "Mese",
"TotaleMensile"), ci metti un'altra query dove potrai sicuramente
filtrare la data e sotto il campo data come Criterio ci scrivi:
Like >= Forms!NomeForm!DaData AND <= Forms!NomeForm!AData
non sarebbe meglio?
io in casi simili ho fatto così!
e magari nel tuo form su click del pulsante controlli che nei controlli
DaData e Adata ci siano effettivamente delle date.
spero di esserti stato di aiuto.
ciao
Riccardo
p.s.:
siamo omonimi :-)

 ha scritto nel messaggio
news:dcKBa.4446$79.1...@news.edisontel.com...

A mio avviso le cose che non vanno sono molte di più di quelle che ti
seganala Access.
Cominciamo con gli errori di sintassi che ritengo siano 2:
1) Prima dell'operatore And devi lasciare una spazio e quindi non:
Strfiltro = Strfiltro & "And[Mese] ...
ma
Strfiltro = Strfiltro & " And [Mese] ...
2) il campo [Mese] non è un campo di tipo Data/ora ma un campo di tipo Testo
e quindi non dovresti usare i caratteri # e non dovresti scrivere:
Strfiltro = "[Mese]>=#" & Format(Me!DaData, "mmmm yyyy") & "#"
...
Strfiltro = Strfiltro & "And[Mese]<=#" & Format(Me!AData, "mmmm yyyy") & "#"
....
Strfiltro = "[Mese]<=#" & Format(Me!AData, "mmmm yyyy") & "#"
bensì dovresti scrivere:
Strfiltro = "[Mese]>='" & Format(Me!DaData, "mmmm yyyy") & "'"
...
Strfiltro = Strfiltro & "And[Mese]<='" & Format(Me!AData, "mmmm yyyy") & "'"
....
Strfiltro = "[Mese]<='" & Format(Me!AData, "mmmm yyyy") & "'"
Risolto il problema degli errori formali il tuo filtro non funzionerà: visto
che il confronto avviene tra stringhe sicuramente Gennaio 2003 risulterà
maggiore e non minore di Febbraio 2003, e questo per il semplice motivo che
G è maggioe e non minore di F.
Quindi, secondo me, non devi perdere tempo ad eliminare gli errori formali,
ma devi cambiare totalmente strategia di filtraggio.
A mio avviso con le caselle di testo DaData e AData devi filtrare le due
queries iniziali TotaliEntrateMensili e TotaliSpeseMensili tramite una
funzione Between ... And; sicuramente a quel livello i record di input
contengono un campo di tipo Data/ora.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:rSLBa.47560$lK4.1...@twister1.libero.it...

  Grazie innanzitutto per la correzione degli errori formali nel codice di
cui comunque faccio tesoro per colmare lacune che un principiante come me
purtroppo ha.
Cercherò di lavorare sui tuoi suggerimenti e su quelli di Riccardo M. che mi
pare segua la stessa linea, per vedere se tiro fuori qualcosa di buono.
Riccardo
