ocrot ha scritto:
Grazie ad Alex ho risolto il problema, o almeno penso di averlo risolto come mi aveva consigliato
apro il recordset senza il where e sposto la condizione con un if sulla scrittura (quindi se soddisfa i criteri scrive se no no)
non ho capito perche' avere la condizione nella query porta a 3 passaggi anziche' 1
cosi' il recordset non deve essere passare tutti i record (dato che e' senza la condizione), quindi non e' un lavoro piu' lungo? (deve scorrere piu' record)
Se scrivi una Query simile:
SELECT * FROM Tabella WHERE Id=Forms!NomeForm!ControlloId
Il motore JET, ma come NESSUN altro motore di Database, quando legge [Forms!NomeForm!ControlloId] gli scappa da ridere... non riconosce questa cosa..., ma JET che è strettamente connesso ad Access, invia la richiesta ad Access per capire cosa sia quel pezzo..., Access va nella maschera, se aperta altrimenti errore..., accede al Controllo, legge il valore(25) e lo rimanda a JET che converte il tutto in
SELECT * FROM Tabella WHERE Id=25
Ora sei fortunato che JET sa a chi chiedere... ma se come DB avessi SQL SERVER... lui nemmeno saprebbe a chi chiedere di quel pezzo...
Sicchè, SQLSERVER leggendo la richiesta che arriva da Access, e non potendola tradurre farebbe così:
SELECT * FROM Tabella
Restituisce ad Access tutto il Dataset della Tabella, ed Access che ha inviato la Query con il Parametro, in LOCALE, fa intervenire JET, che si smazza l'applicazione della WHERE condition come sopra..., come convertire una Ferrari in una Bicicletta.
Questo è il modo migliore per scrivere Applicazioni che non vanno, non scalabili ad altri Database... o meglio è il modo migliore per AMMAZZARE un RDBMS serio...
ocrot ha scritto:
Alex mi ha fatto ragionare anche sul campo data e chiaramente c'era anche li' l'errore dell'assenza della formattazione (ho sistemato quindi anche questo)
ma veniamo a noi, risultato ottenuto ma... è il medesimo della query di accodamento
non capisco perchè se accodo, per esempio, i record di maggio 2019 se apro la tabella (confermo che e' una tabella e non una query ordinata) in visualizzazione dati non li trovo tutti alla fine accodati (avevo fatto un ciclo con addnew) ma sempre ordinati per id_bambino e Giorno
Do Until rs.EOF
If (Format(rs![Giorno], "\#mm\/dd\/yyyy\#") >= Format(var_inizio, "\#mm\/dd\/yyyy\#")) Then
rsDao.AddNew
rsDao![Id_bambino] = rs![Id_bambino]
rsDao![Giorno] = [color=#BF0000]rs![Giorno][/color]
rsDao![Id_retta] = rs![Frequenza]
rsDao.Update
rs.MoveNext
Else
rs.MoveNext
End If
Loop
questa la situazione
Immagine.jpg
Immagine2.jpg
magari non cambierà nulla ma perche' non accoda?
La 2° non ho capito nulla, ma quando scrivi nel campo rsDao![Giorno] devi scrivere con l'accezione Anglosassone... altrimenti non capisco nemmeno questo che hai scritto:
If (Format(rs![Giorno], "\#mm\/dd\/yyyy\#") >= Format(var_inizio, "\#mm\/dd\/yyyy\#")) Then
Per le Date puoi leggere questo:
http://forum.masterdrive.it/microsoft-office-access-vba-23/vba-jet-tutorial-uso-campi-data-56461/