Création et remplissage de tables access a partir de VB.net
Laodis
Messages postés25Date d'inscriptionmercredi 11 février 2009StatutMembreDernière intervention23 avril 2009
-
26 févr. 2009 à 13:33
Laodis
Messages postés25Date d'inscriptionmercredi 11 février 2009StatutMembreDernière intervention23 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:
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"
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")
'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)
Laodis
Messages postés25Date d'inscriptionmercredi 11 février 2009StatutMembreDernière intervention23 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
Laodis
Messages postés25Date d'inscriptionmercredi 11 février 2009StatutMembreDernière intervention23 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"
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")