Newsgroup: it.comp.appl.access
Titolo: problema between

Salve ragazzi dovrei creare una tabella usando il between , mi spiego
meglio vorrei in una tabella inzio , vorrei che con una query di
creazione tabella con l'unico criterio between #01/12/2007# and
#18/12/2007# mi creasse in tabella l'elenco date , il problema che in
scrittura mi dice virgola mancante o cose simili ... dove sbaglio?, o
come posso risolvere


Non ho ben capito... ma non puoi INSERIRE in una tabella le date
comprese... ti tocca scrivere una routine VBA che cicla dalla
DataInizio e con DateAdd si ricava le date succesisve e scrive nella
tabella....!
@Alex


grazie alessandro , ma come posso fare?


La domanda suona come: "Scrivimi il codice..."
Mi sono ripromesso di non scrivere più una sola riga di codice nel NG
quindi ti suggerisco la strada poi tu ci studi sopra...!
Definita la tabella che devi creare a mano... devi popolare il Campo
data con la progressione di 1gg nell'intervallo tra 2 date.
Per aprire la tabella al fine di scriverci hai bisogno di un Recordset
che aprirai usando il metodo OpenRecordset(documentato con esempi
nell'Help) basato sulla Tabella in questione.
Ora dovrai eseguire un Loop che parte dalla DataInizio con la Funzione
DateAdd(anch'essa documentata nell'Help) selezionando i parametri
corretti hai modo di sommare 1gg quindi il Loop continuerà finchè la
data non sarà uguale alla dataFinale.
All'interno del Loop dovrai effettuare l'aggiunta di un record che si
effettua con il metodo AddNew sull'Oggetto Recordset aperto prima,
assegnerai al Campo definito Data il Valore della Data attuale del
Ciclo e salverai con il metodo Update...!
la cosa è chiarissima, ora leggiti l'Help per le cose che non conosci,
prova a scrivere tu il codice e insieme vediamo di correggerlo se non
funziona.
@Alex

 - Mostra testo tra virgolette -
troppo complicato , vediamo se e piu facile una soluzione di questo
tipo e come poter fare , ho gia una tabella con le date dal 01/12/2007
al 17/12/2007 , l'unico problema nel sistema gia fatto e che mi
possono saltare delle date tipo mi manda la data 16/12/2007 come posso
far fare un confronto logico per farmi dire manca questa data e
aggiungerla poi nella tabella?


INSERT INTO Dateprog (DataIncr)
SELECT cdate(dummy.myAtom)+val(decimale.myatom & decimale_1.myatom)
FROM Dummy, Decimale, Decimale AS Decimale_1
where cdate(dummy.myAtom)+val(decimale.myatom & decimale_1.myatom) 
between #15/02/2007# and #15/03/2007# ;
Decimale contiene 10 righe con valore da 0 a 9
Dummy Contiene la data iniziale (1 riga 1 attributo) (*)
In questo modo genera un max di 99 date, joinando decimale per la terza 
volta si arriva  a 999 date diverse.
(*) Sta tabella di "servizio" ormai la metto, come il prezzemolo, 
dappertutto
-- 
ac
y-1=x

Alessandro Cara wrote:
P.S. Ho eliminato la "Dummy"
INSERT INTO Dateprog (DataIncr)
SELECT cdate("10/02/2007")+val(decimale.myatom & decimale_1.myatom)
FROM Decimale, Decimale AS Decimale_1
where cdate("10/02/2007")+val(decimale.myatom & decimale_1.myatom) 
between #15/02/2007# and #15/03/2007# ;
-- 
ac
y-1=x


wrote:

Ciao alessandro, sto provando a fare quella query di accodamento
indicata da te ma cosa dovrei ottenere?
ho creato la tabella dataprog con campo dataincr ma anche variando le
date non accoda nulla
.help

 date non accoda nulla
Non so cosa tu possa avere fatto.
Hai bisogno della tabelle target (che mi dici di aver fatto)
ed una tabella, che io ho chiamato "decimale, che contenga dieci righe 
con valori che vanno da 0 a 9.
Dalla data fissa impostata (in questo caso "15/02/2007") vengono 
esaminate 99 date e scritte le righe che rispettano la condizione
-- 
ac
y-1=x

 - Mostra testo tra virgolette -
uhm , a me non funziona anche seguendo le tue indicazioni , cmq
leggendo cio che fa non è la risposta al mio problema , ma ti
ringrazio lo stesos per l'interessamento.
Sto cercando semplicemente di creare una tabella di date partendo da
un between (esp. 01/12/2007 and 17/12/2007)
ora sto cercando di studiare cio che mi ha detto alex, ma non ci
capisco nulla , per noi inesperti , spesso ci sono problemi immensi su
qualcosa che per chi ne capisci di piu e una cavolata pazzesca.


E di grazia perche' non dovrebbe farlo? Magari dovrai soltanto girare le 
date e metterle nel formato americano (mm/dd/yyyy)
i.e.
INSERT INTO Dateprog ( DataIncr )
SELECT cdate("01/01/2007")+val(decimale.myatom & dec1.myatom & dec2.myatom)
FROM Decimale, Decimale AS Dec1, Decimale as dec2
WHERE cdate("01/01/2007")+val(decimale.myatom & dec1.myatom & 
dec2.myAtom) Between #12/01/2007# And #12/17/2007#;
Io devo avere un access "abarth".
INSERT INTO Dateprog ( DataIncr )
SELECT cdate("01/01/2007")+val(decimale.myatom & dec1.myatom & dec2.myatom)
FROM Decimale, Decimale AS Dec1, Decimale as dec2
WHERE ((cdate("01/01/2007")+val(decimale.myatom & dec1.myatom & 
dec2.myAtom) Between #12/01/2007# And #12/17/2007#)
or  (cdate("01/01/2007")+val(decimale.myatom & dec1.myatom & 
dec2.myAtom) Between #11/01/2007# And #11/17/2007#)
or  (cdate("01/01/2007")+val(decimale.myatom & dec1.myatom & 
dec2.myAtom) Between #10/01/2007# And #10/17/2007#))
and weekday(cdate("01/01/2007")+val(decimale.myatom & dec1.myatom & 
dec2.myAtom))  Between 2 And 6;
  Questa riesce a farmi i primi 17 giorni del mese per Ott. Nov. e Dic. 
2007 e mi scarta anche Dom. e Sab.
-- 
ac
y-1=x



come suggerito da alex@ tra leggermi un po' l'ng e l'help mi è uscito
fuori sto codice ma non funziona ancora
Private Sub Comando4_Click()
    Dim DataInizio As Date
    Dim DataFine As Date
    CurrentDb.Execute "DELETE * FROM tabellalData;"
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.Openrecordset("tabellaData", dbopentable)
    DataInizio = CDate(Me.DataDal)
    DataFine = DateAdd("d", 1, CDate(Me.dataAl))
        rs.AddNew
        rs!Data = DataInizio
        rs.Update
        DataInizio = DateAdd("g", 1, DataInizio)
     Loop
End Sub
(nb tutto viene lanciato da una maschera con data inizio (datadal) e
una data fine (dataal) ma mi si blocca lo stesso, e dovrebbe
aggiornare la tabelladata con l'unico campo data.

come suggerito da alex@ tra leggermi un po' l'ng e l'help mi č uscito
fuori sto codice ma non funziona ancora
cut
(nb tutto viene lanciato da una maschera con data inizio (datadal) e
una data fine (dataal) ma mi si blocca lo stesso, e dovrebbe
aggiornare la tabelladata con l'unico campo data.
Io scriverei cosě:
Private Sub Comando4_Click()
    Dim DataInizio As Date
    Dim DataFine As Date
    CurrentDb.Execute "DELETE * FROM tabellalData;"
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.Openrecordset("tabellaData", dbopentable)
    DataInizio = CDate(Me.DataDal)
    DataFine = CDate(Me.dataAl)
    Do until DataInizio > DataFine
        rs.AddNew
        rs!Data = DataInizio
        rs.Update
        DataInizio = DateAdd("g", 1, DataInizio)
     Loop
End Sub
Come vedi non era poi cosě complicato... ma la pigrizia e la voglia di avere
la pappa pronta
molte volte....
Bravo
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 ---------------------------------------------------------------------------
Alessandro due cose , prima non funziona lo stesso , secondo non sono
un tipo che vuole la pappa pronta ma un imput per poi partire , ora
detto che sono un mezzo scansa fatiche perche non funziona?

 - Mostra testo tra virgolette -
quando la mando in esecuzione mi dice "Tipo definito dall'utente non
definito" mi si apre il modulo evidenziandomi
la stringa Dim rs As DAO.Recordset

Alessandro due cose , prima non funziona lo stesso , secondo non sono
un tipo che vuole la pappa pronta ma un imput per poi partire , ora
detto che sono un mezzo scansa fatiche perche non funziona?
L'osservazione era generalizzata non sentirti puntato... visto che
all'inizio hai esordito con
"TROPPO COMPLICATA"....
In ogni caso funziona se metti la definizione corretta nella funzione
DateAdd... hai messo "g" che è
in ITALANO e si usa solo nelle QUERY nelle funzioni da VBA si usa la
versione INGLESE "d"
DataInizio = DateAdd("d", 1, DataInizio)
Ciao



no fa la stessa cosa anche con la "d", visto che diventa davvero
complicato? :-)
, cmq apparte gli scherzi non funziona lo stesso eppure il codice che
ho scritto e sattamente come questo postato

no fa la stessa cosa anche con la "d", visto che diventa davvero
complicato? :-)
, cmq apparte gli scherzi non funziona lo stesso eppure il codice che
ho scritto e sattamente come questo postato
Provato da me con una tabella di prova e funziona perfettamente.
Ovviamente da me ho controllato:
RIFERIMENTI DAO
DEFINITO LE VARIABILI DataInizio/DataFine come Date
Non sò che dirti se non di fare il Debug e capire perchè non funziona...!



DAO o ADO questo e' il dilemma.
-- 
ac
y-1=x

 - Mostra testo tra virgolette -
ok , non importa come detto troppo complicato , io pero mi sono
impegnato , grazie ancora

ok , non importa come detto troppo complicato , io pero mi sono
impegnato , grazie ancora
Bene... meno un'altro...!
ACCESS 1
LoLince  0
Speriamo che i futuri programmatori abbiano un pň piů di mordente...
;-)


 - Mostra testo tra virgolette -
Ultima curiosita e possibile che mi mandi il tuo database di prova con
i comandi sopra descritti per vedere se da me funziona? magari lo
scarito dal tuo sito , e l'ultima prova che voglio fare , visto che ci
sto sbattendo da stamattina .

 - Mostra testo tra virgolette -
Ultima curiosita e possibile che mi mandi il tuo database di prova con
i comandi sopra descritti per vedere se da me funziona? magari lo
scarito dal tuo sito , e l'ultima prova che voglio fare , visto che ci
sto sbattendo da stamattina .
No lascia stare come hai detto tu non importa....
;-)



ok Grazie lo stesso era solo dopo aver studiato un'intera giornata
capire dove stava l'intoppo , Tengo a precisare che cmq non e discorso
di pappa pronta visto che cmq il lavoro e ricerca svolta è abbastanza
evidente che e stato fatto , era solo per capire il perche a te
funzionava e a me no , tutto qui  .....
Lolince = 0
accesso= 2


Editor VBA vai in menu strumenti>riferimenti vedi se è presente/selezionata 
la voce Microsoft DAo 3.6 Object Library.
dai che a sto giro....
Lolince = 1
Access= 2
-- 
Ciao
Geppo 

 - Mostra testo tra virgolette -
Grazie geppo , nel pc dell'ufficio funziona perfettamente in quello di
casa no , dovro aggiornare forse o mi manchera quella libreria .
Un passo avanti :-)

 - Mostra testo tra virgolette -
Grazie geppo , in effetti dall'ufficio mi funziona da casa no :-),
dovrò aggiornare ils istema di casa :-) grazie ancora


Ma hai trovato il riferimento su quello di casa?
se la risposta è positiva, prova a spostarlo piu' in alto possibile.
-- 
Ciao
Geppo 

 - Mostra testo tra virgolette -
Grazie mille geppo , in effetti il problema era quello a casa mancava
invece in ufficio funzionava :-)