Newsgroup: it.comp.appl.access
Titolo: con .BOF ho l' errore "è stato immesso un valore non valido per il campo"

ciao a tutti
 
non riesco a capire perchè
con questo codice ho l'errore:
"è stato immesso un valore non valido per il campo"
(e credo mi aggiunga un record vuoto)
 
 
        Dim Rst As DAO.Recordset
        Set Rst = Me.Recordset.Clone
 
        Me.Parent![DettaglioCliente].SetFocus
 
        If Not Rst.BOF Then
        Do
 
        DoCmd.GoToRecord , , acNewRec
 
        Me.Parent![DettaglioCliente].Form![IDCarico] = Me!IDCarico
        Me.Parent![DettaglioCliente].Form!nFattura = Me!nFattura
        Me.Parent![DettaglioCliente].Form!DataFattura = Me!DataFattura
        Me.Parent![DettaglioCliente].Form!Importo= Me!Importo
 
        DoCmd.RunCommand acCmdSaveRecord
        Me.Parent![DettaglioCliente].Requery
        Me.Requery
 
        Loop Until Rst.BOF
 
        End If
 
        MsgBox "Non ci sono più records da aggiungere!!!"
        Rst.Close: Set Rst = Nothing
 
mentre con questo no:
 
        Dim Rst As DAO.Recordset
        Set Rst = Me.Recordset.Clone
 
        Me.Parent![DettaglioCliente].SetFocus
 
        If Rst.RecordCount > 0 Then
        Do
 
        DoCmd.GoToRecord , , acNewRec
 
        Me.Parent![DettaglioCliente].Form![IDCarico] = Me!IDCarico
        Me.Parent![DettaglioCliente].Form!nFattura = Me!nFattura
        Me.Parent![DettaglioCliente].Form!DataFattura = Me!DataFattura
        Me.Parent![DettaglioCliente].Form!Importo= Me!Importo
 
        DoCmd.RunCommand acCmdSaveRecord
        Me.Parent![DettaglioCliente].Requery
        Me.Requery
 
        Loop Until Rst.RecordCount = 0
 
        End If
 
        MsgBox "Non ci sono più records da aggiungere!!!"
        Rst.Close: Set Rst = Nothing
 
grazie


Ma perche' vi complicate /sempre/ la vita?
 
do while not rst.bof
  ...... istruzioni
loop
e la if non serve
 
 
Mica ho capito cosa vuoi fare
Vuoi per caso estendere i valori in Me! sul dettaglio clienti?
Mi permetti di dire che se e' cosi' lo fai in modo un po' /balzano/ e 
con inutili perdite di tempo (le requery), sempre che tutto funzioni
 
 
-- 
 
ac (x=y-1) e non uso il KillFile.
La violenza e' l'ultimo rifugio degli incapaci (Salvor Hardin)

 La violenza e' l'ultimo rifugio degli incapaci (Salvor Hardin)
 
ciao Alessandro e grazie.
ho una maschera per le fatture
con 2 sottomaschere.
la prima "DettaglioCliente" riceve i dati dall'altra sottomaschera
da pulsante con il codice postato.
 
Con il primo codice funziona,
ma con .Bof no!.
e vorrei capire il perchè.
Il fatto è che mi accoda tutti i record
e poi dopo aver inserito l'ultimo record mi da l'errore:
"è stato immesso un valore non valido per il campo"
e poi prosegue con quest'altro errore:
"Il modulo di gestione di database Microsoft Jet non è in grado di trovare alcun record nella tabella "TbCarichi" contenente campi "IdCarico corrispondenti alla chiave"


Mi rifiuto di ragionare con quel codice ;-)
 
io avrei fatto cosi':
 
Private sub quellochee'
set rs1 = frmconidatisorgenti.recordsetclone
set rs2 = formconidatitarget.recordsetclone
 
rs1.movefirst (questa potrebbe essere superflua)
do until rs1.eof
   rs2.addnew
....qui sposti i dati da rs1 verso rs2 (immagino che i nomi di campo 
siano gli stessi del nome controllo..... i.e.
    rs2.Idcarico= rs1.Idcarico
    ...etc
    rs2.update
    rs1.movenext
loop
formtarget.requery (e non e' detto che serva)
 
end sub
 
 
by the way: l'errore lo prendi perche' al termine del loop cerchi di 
inserire un record , credo, non valorizzato (1' errore)
Del secondo errore ne ho solo una pallidissima idea ma non ho certezza e 
quindi evito.


 La violenza e' l'ultimo rifugio degli incapaci (Salvor Hardin)
 
mi piace il suggerimento
Ora lo provo.
Grazie


ciao Alessandro
 
mi accoda il numero corretto di record
ma sempre il primo record
 
Dim Rs1 As DAO.Recordset, Rs2 As DAO.Recordset
Set Rs1 = Me.RecordsetClone
Set Rs2 = Me.Parent![DettaglioCliente].Form.RecordsetClone
 
Me.Me.Parent![DettaglioCliente].SetFocus
 
'Rs1.MoveFirst
 
Do Until Rs1.EOF
 
Rs2.AddNew
 
Rs2!IDCarico = Me!IDCarico
Rs2!nFatturaFo = Me!nFatturaFo
Rs2!DataFatturaFo = Me!DataFatturaFo
Rs2!Importo = Me!Importo
 
Rs2.Update
Rs1.MoveNext
Loop
 
Me.Requery

 Rs2!Importo = Me!Importo
e dalli!  non e' Me!IDCarico ma e' rs1!idcarico !


 >>>> "Il modulo di gestione di database Microsoft Jet non ï¿½ in grado di trovare alcun record nella tabella "TbCarichi" contenente campi "IdCarico corrispondenti alla chiave"

ok Alessandro e grazie.
 
ho ancora due errori
1-dopo aver accodato tutti i record se clicco altre 2 volte sul pulsante
anzichè avere il msgbox "Non ci sono più record da aggiungere"
mi da "nessun record corrente"
2-se elimino tutti i record dalla maschera principale utilizzando il selettore di record
e poi tasto "Canc"
quando clicco sul pulsante anziche' accodare i record ho l'errore "record eliminato" obbligandomi a chiudere e riaprire la maschera.


ciao Alessandro
ho risolto in questo modo ma vorrei sapere se è corretto.
 
Il primo errore con:
On Error Resume Next
 
mentre per il secondo errore:
(avevo dimenticato l'idFattura nel codice)
e poi ....
Set Rs = Forms!MiaFattura.Recordset.Clone anzichè RecordsetClone
perchè diversamente(ma non so il perchè)non mi accodava l'idFattura nella tabella
 
inzio - codice
 
On Error Resume Next
 
Dim Rs As DAO.Recordset, Rs1 As DAO.Recordset, Rs2 As DAO.Recordset
Set Rs = Forms!MiaFattura.Recordset.Clone
Set Rs1 = Me.RecordsetClone
Set Rs2 = Me.Parent![DettaglioCliente].Form.RecordsetClone
 
Me.Parent![DettaglioCliente].SetFocus 
 
Rs1.MoveFirst
Do Until Rs1.EOF
 
Rs2.AddNew
 
Rs2!IdFattura = Rs!IdFattura
Rs2!IDCarico = Rs1!IDCarico
Rs2!nFatturaFo = Rs1!nFatturaFo
Rs2!DataFatturaFo = Rs1!DataFatturaFo
Rs2!Importo = Rs1!Importo
 
Rs2.Update
 
Rs1.MoveNext
 
Loop
 
Me.Requery
MsgBox "Non ci sono più record da aggiungere!!!"
 
Rs.Close: Set Rs = Nothing
Rs1.Close: Set Rs1 = Nothing
Rs2.Close: Set Rs2 = Nothing
 
fine - codice