Newsgroup: it.comp.appl.access
Titolo: Errore di automazione.

Mi spiegate perchè il seguente codice mi genera l'errore in oggetto ?
penso che sia sul move next dell'ultimo record .
come lo risolvo ?
grazie
Private Sub Comando29_Click()
On Error GoTo Err_Comando29_Click
Set db = CurrentDb
Set ec = db.OpenRecordset("EC")
Set tab1 = db.OpenRecordset("Tabella")
Do Until ec.EOF
    If Not IsNull(ec.campo2) Then
        tab1.AddNew
        tab1.Data = ec.campo2
        tab1.Importo = ec.campo7
        tab1.Causale = ec.campo4
    Do
        ec.MoveNext
        x = x + ec.Fields("campo4")
    If Not IsNull(ec.campo2) Then Exit Do
    Loop
        tab1.descrizione = x
        tab1.Update
        x = ""
    Else
    End If
Loop
Exit_Comando29_Click:
    Exit Sub
Err_Comando29_Click:
    MsgBox Err.Description
    Resume Exit_Comando29_Click
End Sub 

 grazie
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:f5obs9$kpj$1...@tdi.cu.mi.it...

Ciao Sergio (grazie per il Calendario funziona alla grande)
effettivamente è quando mi accorpa i dati dell estratto conto dell'ultimo 
record... 

 record...
Sě ma su quale riga?
Non hai dichiarato gli oggetti:
Set db = CurrentDb
Set ec = db.OpenRecordset("EC")
Set tab1 = db.OpenRecordset("Tabella")
e non li hai ne chiusi che distrutti...
Ciao.
-- 
Sergio MAZZA

 ha scritto nel messaggio 
news:f5of5j$pf3$1...@tdi.cu.mi.it...

x = x + ec.Fields("campo4") questo č l'errore (quando arriva all'ultimo 
record).
praticamente EC č un estratto conto importato da un file di testo cosě 
strutturato
Campo2                    Campo4 
Campo7
19/06/2007            Prelevamento bancomat                    10,00
                              presso banca di roma
                              il gg/mm/aaaa alle ore 21,30
21/06/2007            Pagamento Bolletta                            25,00
                              Acea nr. xxxyyyxxxx
                              periodo II bimestre
Il codice mi inserisce i dati all'interno di una TABELLA
DATA                    CAUSALE                            DESCRIZIONE 
IMPORTO
19/06/2007            Prelevamento bancomat          presso banca di roma il 
gg/mm/aaaa alle ore 21,30                10,00
21/06/2007            Pagamento Bolletta                 Acea nr. xxxyyyxxxx 
periodo II bimestre                               25,00

 xxxyyyxxxx periodo II bimestre                               25,00
Mhmm... (premessa)Non avendo seguito tutto il discorso che ha partorito il 
tuo codice potrei dire stupidaggini.
Quindi devi leggere una tabella (ec) che ha i dati importati (da un file 
txt) ma la data nulla e importare il record in un'altra tabella (tab1)?
(se ho capito bene)Forse sono i cicli non "calibrati".
Prova con:
...
x = ""
Do while not ec.EOF
    If Not IsNull(ec.campo2) Then
        if x <> "" then
            tab1.descrizione = x
            tab1.Update
            x = ""
        endif
        tab1.AddNew
        tab1.Data = ec.campo2
        tab1.Importo = ec.campo7
        tab1.Causale = ec.campo4
    end if
    x = x + ec.Fields("campo4")
    ec.MoveNext
Loop
Ciao.
-- 
Sergio MAZZA 


Grazie della risposta, il tuo codice fa la stessa cosa di quello che c'era 
prima, il risultato che devo ottenere (fino ad ora ho postato solo l'errore) 
è questo,
tralasciando l'importazione del txt, io ho una tabella estrattoconto EC con 
i campi 1,2,3,4,5,6,7 lasciati cosi come l'importa il txt.
il primo record ha
campo2 = 12/06/2007 (data operazione)
campo4 = Prelevamento Bancomat (descrizione Operazione)
campo7 =25,00 (importo)
il secondo record ha
campo4 = il gg/mm/aaaa alle ore 21,30
il terzo record ha
campo4 =  presso banca di roma
il quarto record ha
campo2 = 18/06/2007 (data operazione)
campo4 = Pagamento RID (descrizione Operazione)
campo7 =  50,00
il quinto record ha
campo4= Acea
il risultato che vorrei ottenere  è di mettere questi dati in tabella in 
questo modo:
campo2 del primo record  in primo record tabella Data
campo4 del primo record in primo record tabella Causale
campo7 del primo record in primo record tabella import
campo4 del secondo record in primo record tabella Dettaglio, (questo cicla 
fino a quando non ritrova valorizzato il campo2 della data) e mi genera un 
nuovo record.
Col codice che ho postato e con quello che tu mi hai suggerito mi mette sia 
la descrizione dell'operazione e il dettaglio insieme nello stesso campo
ho pensato allora di mettere ec.movenext sopra l'accorpamento del dettaglio:
ec.MoveNext
x = x + ec.Fields("campo4")
effettivamente funziona ma mi da , quando arriva all'ultimo record 'Errore 
run-time 440' errore di automazione.
NB. il campo4 è di tipo memo.

 NB. il campo4 è di tipo memo.
Riproviamo:
...
x = ""
Do while not ec.EOF
    If Not IsNull(ec.campo2) and x="" Then
        tab1.AddNew
        tab1.Data = ec.campo2
        tab1.Importo = ec.campo7
        tab1.Causale = ec.campo4
        ec.MoveNext
    endif
    if Not IsNull(ec.campo2) and x <> "" then
        tab1.descrizione = x
        tab1.Update
        x = ""
    endif
    If IsNull(ec.campo2) Then
        x = x + ec.Fields("campo4")
        ec.MoveNext
    end if


 ha scritto nel messaggio 
news:f5r64p$efk$1...@tdi.cu.mi.it...

funziona se nel secondo record non  è valorizzato ec.campo2 ma se ci sono 2 
record consecutivi con ec.campo2 valorizzato mi salta la scittura nella 
tabella

 tabella
Riproviamo:
...
x = ""
Do while not ec.EOF
   If Not IsNull(ec.campo2) Then
       tab1.AddNew
       tab1.Data = ec.campo2
       tab1.Importo = ec.campo7
       tab1.Causale = ec.campo4
       ec.MoveNext
   endif
    do while not ec.eof and Not IsNull(ec.campo2)
       x = x + ec.Fields("campo4")
       ec.MoveNext
    loop
    tab1.descrizione = x
    tab1.Update
    x=""
