Inserimento dati in tabella accdb da mdb jet 4.0

di il
4 risposte

Inserimento dati in tabella accdb da mdb jet 4.0

Ho definito la seguente procedura...
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim sConn1 As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Continentale\gas.mdb"
        Dim dbConn1 As OleDbConnection = New OleDbConnection(sConn1)
        Dim sConn2 As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = F:\ContinentaleVS2019\ark.accdb"
        Dim dbConn2 As New OleDbConnection(sConn2)
        Dim dData(100) As Date
        Dim sOper(100) As String
        Dim lLettura(100) As Long
        Dim iI As Integer = 0
        Dim iC As Integer
        Dim dbComm1 As OleDbCommand = dbConn1.CreateCommand
        Dim dbComm2 As OleDbCommand = dbConn2.CreateCommand
        Dim r As OleDbDataReader
        dbConn1.Open()
        dbComm1.CommandType = CommandType.Text
        dbComm1.CommandText = "SELECT id, data, operatore, lettura FROM letture"
        r = dbComm1.ExecuteReader
        While r.Read
            dbConn2.Open()
            dbComm2.CommandType = CommandType.Text
            dbComm2.CommandText = "INSERT INTO gas (data, operatore, lettura) VALUES (?, ?, ?)"
            dbComm2.Parameters.Add("@data", OleDbType.Date).Value = r(1)
            dbComm2.Parameters.Add("@operatore", OleDbType.Char, 255).Value = r(2)
            dbComm2.Parameters.Add("@lettura", OleDbType.Numeric).Value = r(3)
            dbComm2.ExecuteNonQuery()
            dbConn2.Close()
        End While
        r.Close()
        dbConn1.Close()
        Me.Close()
    End Sub
...ma arrivato al termine mi inserisce un numero corretto di record, ma con la valorizzazione su tutti del solo primo record della tabella.
Dove sbaglio?

Grazie

4 Risposte

  • Re: Inserimento dati in tabella accdb da mdb jet 4.0

    Innazitutto dentro al ciclo "while r.Read" non devi continuare ad aprire e chiudere la connessione, funziona comunque ma non serve a nulla.

    Quello che devi fare invece (dentro al ciclo while) è un NEW del OleDbCommand perchè avendo i parametri, ogni volta che fai un "Add" aggiunge solo, ma non cancella il vecchio parametro.
    Quindi, prima del "dbComm2.CommandType = CommandType.Text" devi inserire un "Dim dbComm2 As OleDbCommand = dbConn2.CreateCommand"

    oppure puoi provare con un "dbComm2.Parameters.Clear"
  • Re: Inserimento dati in tabella accdb da mdb jet 4.0

    Tra poco provo e ti dico
    Grazie
  • Re: Inserimento dati in tabella accdb da mdb jet 4.0

    Taurus1967 ha scritto:


    ...ma arrivato al termine mi inserisce un numero corretto di record, ma con la valorizzazione su tutti del solo primo record della tabella.
    Dove sbaglio?
    Secondo me all'interno del while e prima del comando dbConn2.Close() devi fare un bel r.next.

    Ciao
  • Re: Inserimento dati in tabella accdb da mdb jet 4.0

    Ho provato il refresh di parameter e funziona...
    ...ora provo anche con il next.

    Grazie a tutti
Devi accedere o registrarti per scrivere nel forum
4 risposte