Newsgroup: it.comp.appl.access
Titolo: Ricerca record

= Forms!pens!datafp And [Libera] = True")
strsql = "SELECT * FROM pensione WHERE" & _
                " datai <= " & Forms!pens!dataip & _
                " And dataf >= " & Forms!pens!datafp & _
                " And libera = true"
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(strsql, dbOpenDynaset)
If rst.BOF Then
MsgBox "ho trovato un record"
Me.Testo4 = varX
rst.AddNew
rst!Datai = Forms!pens!dataip
rst!Dataf = Forms!pens!datafp
rst!Libera = False
rst!box = varX
rst.Update
End If
End Sub
Come posso sostituire o cancellare  il record che trovo con la stringa sql?
Ogni volta che inserisco edit o delete mi da come Errore " Nessun record
corrente".
Help me please

 ha scritto nel messaggio
news:Ej2Wb.287367$_P.98...@news4.tin.it...

Devi prima posizionarti sul record che vuoi modificare o cancellare;
potresti farlo, ad esempio, con il metodo FindFirst: dopo aver verificato
che il record č stato trovato puoi usare i metodi Edit e/o Delete del
recordset.
Comunque, se usi una versione italiana di Access ed hai impostato ad
italiano le Impostazioni internazionali di Windows, i criteri della tua
stringa SQL non funzioneranno in quanto il linguaggio SQL presuppone che in
un confronto tra date il secondo termine di paragone sia espresso nel
formato mm/dd/yyyy e non gg/mm/aaaa; quindi non devi scivere:
<omissis>
" datai <= " & Forms!pens!dataip & _
" And dataf >= " & Forms!pens!datafp & _
" And libera = true"
ma devi scrivere:
<omissis>
" datai <= " & Format(Forms!pens!dataip, "mm/dd/yyyy") & _
" And dataf >= " & Format(Forms!pens!datafp, "mm/dd/yyyy") & _
" And libera = true;"
I criteri della funzione DLookup hanno lo stesso problema con l'aggravante
che per essi c'č anche un errore di sintassi: i secondi termini di paragone
nei confronto tra date vanno esplicitati fuori della stringa SQL e non
dentro la striga SQL, cosě come hai fatto per strsql (possono far parte
delle stringa solo se i criteri di selezione sono delle costanti, ovvero se
non si tratta di selezioni parametriche).
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Come posso sostituire o cancellare  il record che trovo con la stringa
sql?
la stringa sql potrebbe restituirti più record
Ma tu, che voi fa?!?!
Vuoi mettere a false il campo libera del primo record che soddisfa le
condizioni?!?!?!
Antonio

 Devo creare un database che mi permetta di gestire le prenotazioni delle
pensioni per un canile. Quindi inserendo le date di prenotazione vorrei (è
quello che non riesco a fare) che mi verificasse se esiste il periodo
richiesto, se esiste cancellare quel record e sostuituirlo con quello nuovo.
La casella Me.testo4 mi restituisce il box vuoto che soddisfa le condizioni
della funzione Dlookup.Spero di essere stato chiaro.
Grazie
Enrico

 della funzione Dlookup.Spero di essere stato chiaro.
Fermo restando che non sono sicuro che il tuo test sulle date sia giusto, ma
supponiamo di sě con
strsql = "SELECT * FROM pensione WHERE" & _
" datai <= " & Forms!pens!dataip & _
" And dataf >= " & Forms!pens!datafp & _
" And libera = true"
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(strsql, dbOpenDynaset)
Apri un recordset che ti puň restituire da 0 a n record validi.
Ti prendi il primo
if rst.recordcount <> 0 then
rst.movefirst
rst.edit
rst.fields("libera") = false
rst.fields("Datai") = Forms!pens!dataip
rst.fields("Dataf") = Forms!pens!datafp
Me.Testo4 = rst.fields("box")
rst.update
set rst = nothing
Antonio

 Grazie.