Création et remplissage de tables access a partir de VB.net

Laodis Messages postés 25 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 23 avril 2009 - 26 févr. 2009 à 13:33
Laodis Messages postés 25 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 23 avril 2009 - 26 févr. 2009 à 13:50
Bonjour,
Voici mon souci,
J'ai pour but d'extraire des données d'un fichier excel et de les inserer dans une base access.
Lors de l'execution du programme, celui ci doit créer un fichier access, les tables, et remplir les champs.
J'ai cependant un probleme avec l'utilisation des dataset et des dataadapter que j'ai beaucoup de mal a comprendre sans exemple de code.
Voici mon code, tirée en partie d'un  autre topic de ce forum.
Ce pourquoi je sollicite votre aide, c'est de completer ce code pour qu'il me crée le fichier et les tables correctement (c'est normalement fait) et me les remplisse avec la fonction 'access' qui ne marche pas.
Il doit y avoir des choses aberrantes, mais pour l'instant il arrive a créer un fichier et la table correspondante, le probleme se situe au niveau du remplissage:

Pour avoir le code en couleur, c'est ici [l]http://rafb.net/p/o09hSM64.html/l (grandement conseillé)

Imports System.Data.OleDb
Imports System.Data.Common
Imports ADOX
Imports System.IO

Module bdaccess

    Private MyConnection As New System.Data.OleDb.OleDbConnection()
    Private requete As String = "SELECT * FROM test"
    Private Command As New OleDbCommand
    Private Command2 As New OleDbCommand
    Private dadapter As OleDbDataAdapter
    Private drow As DataRow
    Private dtable As New DataTable
    Private dset As New DataSet
    Private cmdbuilder As New OleDbCommandBuilder

    Sub creer()
        Dim cat As Catalog

        'Création de la base de données Access
        'Crée la base de données dont le chemin est cheminDB
        If File.Exists("c:\laodis\tests\bdtest.mdb") Then
            File.Delete("c:\laodis\tests\bdtest.mdb")
        End If

        cat = New Catalog
        cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\laodis\tests\bdtest.mdb;Jet OLEDB:Engine Type=5")
        cat = Nothing
        connection("c:\laodis\tests\bdtest.mdb")
    End Sub
    'procédure de connection a une bd access
    Public Sub connection(ByVal nombd As String)

        Dim cmd As String = "CREATE TABLE Donnees2 (sc_id INT, do_date DATE, do_valeur FLOAT, do_flag CHAR(10));"
        'Dim cmd2 As String = "INSERT INTO [Donnees2] VALUES ('','10-Jan-1999','102.5','')"
        Dim cmd2 As String = "SELECT * FROM Donnees2"

        'cn.Execute("CREATE TABLE [NOUVELLE] ( [Date] Text(50) , [Mouvement] Text(50) , [Commentaires] Text(50));")

        Try
            MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & nombd
            MyConnection.Open()
        Catch ex As Exception
            MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
        End Try

        Command = New OleDbCommand(cmd)
        dadapter = New OleDbDataAdapter(Command)
        Command.Connection = MyConnection
        ' Command = New OleDbCommand(cmd2)
        'dadapter = New OleDbDataAdapter(Command2)
        'Command.Connection = MyConnection
        'MsgBox("fait")

        dadapter.Fill(dset, "Donnees2")
        dtable = dset.Tables("Donnees2")

        access("52,23", "12/01/15")
        'MsgBox("créé")

    End Sub

    'deconnection de la base
    Public Sub deconnection()
        Try
            MyConnection.Close()
        Catch ex As Exception
            MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
        End Try

    End Sub

    Public Sub access(ByVal mavar As Double, ByVal madate As String)

        'Try
        drow = dset.Tables("Donnees2").NewRow()
        drow("do_date") = madate
        drow("do_valeur") = mavar
        drow("sc_id") = "213"
        drow("do_flag") = "test"
        cmdbuilder = New OleDbCommandBuilder(dadapter)
        dset.Tables("Donnees2").Rows.Add(drow)
        dadapter.Update(dset, "Donnees2")
        dset.Clear()
        'Catch e As Exception
        'MsgBox(e.Message)
        'End Try

    End Sub
End Module

Merci d'avance =)

2 réponses

Laodis Messages postés 25 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 23 avril 2009
26 févr. 2009 à 13:35
Rectification : Au niveau des erreurs , la premiere se produit dans 'connection' au
        dadapter.Fill(dset, "Donnees2")
qui me dit que la table Donnees2 existe déja o_O

Si j'enleve cette ligne, l'erreur vient de
        drow = dset.Tables("Donnees2").NewRow()
qui me dit que l'objet n'as pas été instancié ou vaux null
0
Laodis Messages postés 25 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 23 avril 2009
26 févr. 2009 à 13:50
Finally, j'ai trouvé

Si ça interesse quelqu'un, l'erreur était au niveau de la connection:

  Public Sub connection(ByVal nombd As String)

        Dim cmd As String = "CREATE TABLE Donnees2 (sc_id INT, do_date DATE, do_valeur FLOAT, do_flag CHAR(10));"
        'Dim cmd2 As String = "INSERT INTO [Donnees2] VALUES ('','10-Jan-1999','102.5','')"
        Dim cmd2 As String = "SELECT * FROM Donnees2"

        'cn.Execute("CREATE TABLE [NOUVELLE] ( [Date] Text(50) , [Mouvement] Text(50) , [Commentaires] Text(50));")

        Try
            MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & nombd
            MyConnection.Open()
        Catch ex As Exception
            MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
        End Try

        Command = New OleDbCommand(cmd)
        'dadapter = New OleDbDataAdapter(Command)
        Command.Connection = MyConnection
        Command = New OleDbCommand(cmd2)
        dadapter = New OleDbDataAdapter(Command)
        Command.Connection = MyConnection
        'MsgBox("fait")

        dadapter.Fill(dset, "Donnees2")
        dtable = dset.Tables("Donnees2")

        access("52,23", "12/01/15")
        'MsgBox("créé")

    End Sub

Voilou, merci, au revoir

         ___
        {ò,ó}
        (__(|
        -"--"-
      YA, RLY
0
Rejoignez-nous