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

Carissimi,
non mi riesce di importare dei record da db esterno.
Allego il codice:
---------------------------------------------------------------------
Private Sub EseguiSalvataggio_Click()
On Error GoTo Salvataggio_Err
Dim strSql As String
Dim conta As Control
Dim daData As Date
Dim datevalue As Control
If Len(daData) > 0 And Len(AData) > 0 And Len(CmbDrive) > 0 Then
     If IsDate(daData) And IsDate(AData) And (datevalue(AData) >=
datevalue(daData)) Then
          If conta("dData BETWEEN #" & Format(daData, "yyyy-mm-dd") & "# AND
#" & Format(AData, "yyyy-mm-dd") & "#") = 0 Then
            MsgBox ("Non ci sono record da importare in queste Date!!!")
            Exit Sub
          Else
            If MsgBox("Sei sicuro di voler Importare i dati dal " & daData &
" al " & AData & "?", vbYesNo) = vbYes Then
                  Application.DBEngine.BeginTrans
                  DoCmd.Hourglass True
                  strSql = "INSERT INTO Tb_Presenze_Storiche  " & _
                         "SELECT * FROM Tb_Presenze_Storiche IN '" &
Left(CmbDrive, 2) & _
                         "\Salvataggi\CopiaMioDB.mdb' where dData BETWEEN #"
& Format(daData, "yyyy-mm-dd") & "# AND #" & Format(AData, "yyyy-mm-dd") &
"#"
                  CurrentDb.Execute strSql, dbFailOnError
                   strSql = "INSERT INTO Tb_Prestazioni_Storiche " & _
                         "SELECT * FROM Tb_Prestazioni_Storiche IN '" &
Left(CmbDrive, 2) & _
                         "\Salvataggi\CopiaMioDB.mdb'where dData BETWEEN #"
& Format(daData, "yyyy-mm-dd") & "# AND #" & Format(AData, "yyyy-mm-dd") &
"#"
                  CurrentDb.Execute strSql, dbFailOnError
                  strSql = "DELETE * FROM Tb_Prestazioni_Storiche IN '" &
Left(CmbDrive, 2) & _
                         "\Salvataggi\CopiaMioDB.mdb' where dData BETWEEN #"
& Format(daData, "yyyy-mm-dd") & "# AND #" & Format(AData, "yyyy-mm-dd") &
"#"
                  CurrentDb.Execute strSql, dbFailOnError
                  strSql = "DELETE * FROM Tb_Presenze_Storiche IN '" &
Left(CmbDrive, 2) & _
                         "\Salvataggi\CopiaMioDB.mdb' where dData BETWEEN #"
& Format(daData, "yyyy-mm-dd") & "# AND #" & Format(AData, "yyyy-mm-dd") &
"#"
                  CurrentDb.Execute strSql, dbFailOnError
                  DoCmd.Hourglass False
                  Application.DBEngine.CommitTrans
                  MsgBox ("Trasferimento terminato!")
            Else
                MsgBox ("Trasferimento Annullato")
            End If
        End If
    End If
Else
    MsgBox ("Parametri mancanti, controlla!")
End If
Exit Sub
Salvataggio_exit:
   Application.DBEngine.Rollback
   Exit Sub
Salvataggio_Err:
    MsgBox Err.Description
    If Err <> 3034 Then
        Resume Salvataggio_exit
    Else
        Exit Sub
    End If
End Sub
-------------------------------------------
MESSAGGIO:
Variabile oggetto o variabile del blocco with non impostata.
si è tentato di eseguire il commit o il rollback di una transazione senza
prima iniziarla.
------------------------
Ciao
-- 
--------------------------------------
      Cataldo Formaro
-------------------------------------- 

 ------------------------
Ciao Cataldo,
un primo errore è nell'utilizzo dell' oggetto Conta che hai definito Control 
e non lo valorizzi.
Se è un Control dovrai valorizzarlo con un Controllo di una maschera ?
Ciao
-- 
Giorgio Rancati
[Office Access MVP] 

 ha scritto nel 
messaggio news:44db02ac$0$988$5fc...@news.tiscali.it...
c'è anche datevalue che non è valorizzato
----
Dim datevalue As Control
----
datevalue è anche una funzione vba, non credi che bisognerebbe mettere un 
po' di ordine in quel codice ?
:-)


 ha scritto nel 
messaggio news:44db03b8$0$972$5fc...@news.tiscali.it...

Potrei inviarti un file di prova?


 Potrei inviarti un file di prova?
sarebbe inutile, ci sono cose per me incomprensibili :(
ad esempio :
----
Dim conta As Control
If conta("dData BETWEEN #" & Format(daData, "yyyy-mm-dd") & "# AND #" &
Format(AData, "yyyy-mm-dd") & "#") = 0 Then
----
che cosa è conta, come dovrebbe essere valorizzato tale controllo,
e cosa fa l'istruzione
----
conta("dData BETWEEN #" & Format(daData, "yyyy-mm-dd") & "# AND #" &
Format(AData, "yyyy-mm-dd") & "#")
----
????


 Allego il codice:
[CUT]
cambia questa prima parte cosě
----
Private Sub EseguiSalvataggio_Click()
On Error GoTo Salvataggio_Err
Dim strSql As String
'Uso il tipo Object per non farti mettere i riferimenti di ADO
Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
If Len(daData) > 0 And Len(AData) > 0 And Len(CmbDrive) > 0 Then
     If IsDate(daData) And IsDate(AData) And (datevalue(AData) >=
datevalue(daData)) Then
         'Apro il recordset sul db esterno per vedere se ci sono record
nelle date selezionate
          rs.Open _
             "Select Count(1) AS Nrec From Tb_Presenze_Storiche " & _
             "WHERE dData BETWEEN #" & Format(daData, "yyyy-mm-dd") & "# AND
#" & Format(AData, "yyyy-mm-dd") & "#", _
             "Provider=Microsoft.Jet.OLEDB.4.0;" & _
             "Data Source=" & Left(CmbDrive, 2) &
"\Salvataggi\CopiaMioDB.mdb;"
          If Nz(rs!Nrec, 0) = 0 Then
            MsgBox ("Non ci sono record da importare in queste Date!!!")
            rs.Close
            Set rs = Nothing
            Exit Sub
          Else
            rs.Close
            Set rs = Nothing
            If MsgBox("Sei sicuro di voler Importare i dati dal " & daData &
" al " & AData & "?", vbYesNo) = vbYes Then
----
il resto rimane uguale.



Alla grande! Finalmente posso importare i mei dati.
Grazie Giorgio
