Pas d'enregistrements dans ma base access

cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022 - 20 janv. 2007 à 14:58
Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011 - 22 janv. 2007 à 14:05
Salut à tous ,

Voila, je galère depuis plusieurs jours sur ma base de donnée access sur laquelle je n'arrive pas à enregistrer mes données dans cette derniere à l'aide d'un bouton "button9"
J'ai un message du genre :  La référence d'objet n'est pas définie à une instance d'un objet
J'ai recopier et etudier le code de plusieurs programmes similaire telecharger sur vbfrance
mais toujours pareil, je débute avec vb2005 et je solicite un peu d'aide ou de conseil pour pouvoir poursuivre dans mes etudes
Je me permets de vous copier mon code :
(Mes remerciements pour votre aide)

Private ConnString
As
String

Private ParamConnexion
As
String

Private rownum
As
Integer

Private SQLString
As
String

Private LviItem
As ListViewItem

Private SUBItems
As ListViewItem.ListViewSubItem

Private objcommand
As OleDbCommand

Private objconnection
As
New OleDbConnection

Private objdataadapter
As OleDbDataAdapter

Private objdataset
As
New Data.DataSet()

Private objdatatable
As DataTable

Private objdatarow
As DataRow

Private objcommandbuilder
As OleDbCommandBuilder

Private
Sub Form11_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load
ListView1.Columns.Add(

"Fabricant", 90, HorizontalAlignment.Center)ListView1.Columns.Add(

"Type", 75, HorizontalAlignment.Left)ListView1.Columns.Add(

"D‚signation", 80, HorizontalAlignment.Left)ListView1.Columns.Add(

"Taille m‚moire", 90, HorizontalAlignment.Left)ListView1.Columns.Add(

"Boitier", 50, HorizontalAlignment.Left)ListView1.Columns.Add(

"Temps d'accŠs", 90, HorizontalAlignment.Left)ListView1.Columns.Add(

"Nombre d'octets", 95, HorizontalAlignment.Left)ListView1.Columns.Add(

"Code ID Fab", 80, HorizontalAlignment.Left)ListView1.Columns.Add(

"Code ID Compo", 100, HorizontalAlignment.Left)
ListView1.AllowColumnReorder =

False
ListView1.FullRowSelect =
True
ListView1.View = View.Details

button9.Enabled =
False

 OuvreFichierBdd()

Chargebd()

Private
Sub OuvreFichierBdd()
'Ouverture de la connection avec la base

'Initialisation de la chaine de paramŠtres pour la connectionConnString =

"Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & Application.StartupPath &
"\PROG.mdb;"

'Donner … la propri‚t‚ connectionstring les paramŠtres de connexionobjconnection.ConnectionString = ConnString

'Ouverture de la connectionobjconnection.Open()

'Etat de la connectionlblconnect.Text =

"Connect‚ … la base"

'Fermeture de la connectionobjconnection.Close()

End
Sub

Private
Sub Chargebd()
'Charge la base dans le listview1ListView1.AllowColumnReorder =

True
'R‚organisation des colonnes manuellementListView1.FullRowSelect =

True
'S‚lection de la ligne completeListView1.View = View.Details

'Le listView est en mode D‚tail

' Commande pour lire dans la base de donn‚e SQLString =

"SELECT * FROM PROG"

'Ouverture de la connectionobjconnection.Open()

'Le dataAdapter ‚tablit tout d'abord le lien entre la requˆte SQLString et la base Objconnection

'Instance un objet adapterobjdataadapter =

New OleDb.OleDbDataAdapter(SQLString, objconnection)

'A l'aide de la propri‚t‚ fill du dataadapter charge le datasetobjdataadapter.Fill(objdataset)

'bloque le rafraichissement ListView1.BeginUpdate()

'R‚pete chaque Table dans le DataSet collection

For
Each objdatatable
In objdataset.Tables

'R‚pete chaque ligne de la table

For
Each objdatarow
In objdatatable.Rows

'Affiche la base de donn‚e dans le listviewLviItem = ListView1.Items.Add(objdatarow(

"Fabricant"))SUBItems = LviItem.SubItems.Add(objdatarow(

"Type").ToString)SUBItems = LviItem.SubItems.Add(objdatarow(

"D‚signation").ToString)SUBItems = LviItem.SubItems.Add(objdatarow(

"Taille m‚moire").ToString)SUBItems = LviItem.SubItems.Add(objdatarow(

"Boitier").ToString)SUBItems = LviItem.SubItems.Add(objdatarow(

"Temps d'accŠs").ToString)SUBItems = LviItem.SubItems.Add(objdatarow(

"Nombre d'octets").ToString)SUBItems = LviItem.SubItems.Add(objdatarow(

"Code ID Fab").ToString)SUBItems = LviItem.SubItems.Add(objdatarow(

"Code ID Comp").ToString)

Next

Next

' Affiche le contenu au complet de listview1ListView1.EndUpdate()

'Affiche dans label15 le nombre d'entr‚e dans la baseLabel15.Text = ListView1.Items.Count

'Fermeture de la connectionobjconnection.Close()

'Si la base de donn‚e est vide le bouton d'impression button7 est cach‚

'sinon il est visible

If Label5.Text =
""
ThenButton7.Enabled =

False

Else : Button7.Enabled =
True

End
Ifobjconnection.Close()

End
Sub

Private
Sub Button9_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button9.Click

'Ajout d'un enregistrement dans la baseobjdatarow = objdataset.Tables(

"PROG").NewRow()     <= *****Message erreur******objdatarow(

"D‚signation") = TextBox3.Textobjdataset.Tables(

"PROG").Rows.Add(objdatarow)
Tryobjcommandbuilder New OleDbCommandBuilder(objdataadapter)objdataadapter.UpdateCommand objcommandbuilder.GetUpdateCommand()

objdataadapter.Update(objdataset,

"PROG")

CatchMsgBox(

"Une erreur est survenue pendant la mise … jour." & Chr(13) & Chr(10) & _

"L'op‚ration a ‚chou‚!", MsgBoxStyle.Critical,
"Echec")

End
Tryobjconnection.Close()

 

End
Sub

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 janv. 2007 à 16:58
Bon alors pour moi, je dirais que ton problème viens du fait que le table "PROG" n'existe pas dans ton DataSet.

En effet dans la fonction ChargeBD, lorsque tu fait objdataadapter.Fill(objdataset)
tu ne donne pas de nom à la table ainsi créée. par défaut elle prend le nom "Table". Mais tu n'est pas obligé d'utiliser son nom pour y acceder. Tu peux aussi utiliser son index, 0 en général.

Alors
- soit tu modifie ton instruction .fill, en donnant un nom à la table : objdataadapter.Fill(objdataset , "PROG")

- soit dans Button9, tu modifie ton code en remplaçant .Tables("PROG") par .Tables(0)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022
20 janv. 2007 à 18:29
Merci beaucoup pour ta reponse Casy
En modifiant mon instruction .fill j'ai l'ouverture de la fenetre du message box et en modifiant mon code dans button9 j'ai le meme probleme
J'ai du mal à comprendre d'ou viens le probleme
Merci encore mille fois pour ton aide
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 janv. 2007 à 19:38
Bon si t'arrive jusqu'au messagebox, c'est que le 1er problème doit etre réglé.

Ensuite, j'avoue que je suis un peu perdu moi aussi, je découvre moi aussi l'utilisation des bases.

Il faudra que tu vois déjà sur quelle ligne est généré l'exception qui fait que t'affiche le messagebox.
essaye de ettre un msgbox(objdataadapter.updatecommand.commandtext) entre les 2 lignes de la clause Try, pour voir la requette qui est générée

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022
21 janv. 2007 à 08:38
Merci pour tes reponses casy

Pour ma part, j'ai essayer d'autres codes et toujours pareil
soit message d'erreur soit la reference d'objet n'est pas definie
Je ne comprends pas
je vais reprendre mes cours

A +
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011
22 janv. 2007 à 14:05
Salut,

Commence par mettre un point d'arrêt (clique gauche dans la partie gauche grise) sur cette ligneListView1.BeginUpdate()

Exécute ton code. Il s'arrêtera sur cette ligne.
Place ta souris au dessus de "objdataset
".
Tu obtiens une ligne du type.... ObjDataSet | X ........
A la place du X tu as une petite flèche, tu cliques dessus et voir.
Ainsi tu verras si ton DataSet contient une table, le nom de celle ci.....

Dis nous si effectivement ton DataSet contient bien une table....

Gwendal
0
Rejoignez-nous