Sniper_Vgaerr
Messages postés113Date d'inscriptionjeudi 2 décembre 2004StatutMembreDernière intervention14 août 2006
-
12 août 2006 à 00:41
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
15 août 2006 à 00:53
Bonjour à tous,
J'ai un petit souci dans mon programme VB.NET. J'ai crée un programme de gestion de fiches clients ainsi que de classeurs, qui correspondent à des départements. J'ai ce code :
Private cnx As OleDb.OleDbConnection
Private cmd As OleDb.OleDbCommand
Private da As OleDb.OleDbDataAdapter
Private ds As DataSet
Private dt As DataTable
Private dr As DataRow
Private rownum As Integer
Private cmdb As OleDb.OleDbCommandBuilder
Private Interlocuteur As Boolean
Private Sub FrmClients_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
On Error GoTo Err
ListView1.Clear()
ListView1.View = View.Details
ListView1.Columns.Add("Nom", 90, HorizontalAlignment.Left)
ListView1.Columns.Add("Prénom", 80, HorizontalAlignment.Left)
ListView1.Columns.Add("Fonction", 70, HorizontalAlignment.Left)
ListView1.Columns.Add("Email", 130, HorizontalAlignment.Left)
ListView1.Columns.Add("Téléphone", 85, HorizontalAlignment.Left)
Exit Sub
Err:
MsgBox("Une erreur est survenue dans l'initialisation de la listview.", MsgBoxStyle.Critical, "Erreur initialisation listview.")
End Sub
Private Sub FrmClients_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
rownum = FrmGestion.ListView1.SelectedItems(0).Index
cnx New OleDb.OleDbConnection("provider microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\Clients.mdb;")
Try
cnx.Open()
da = New OleDb.OleDbDataAdapter("SELECT Societe, Adresse1, Ville, CP, Dept, Region, Tel, Port, Fax, Email, Internet, NClient, Interlocuteur, Etat, SocieteAL, Adresse1AL, Adresse2AL, VilleAL, CodePostalAL, DeptAL, SocieteAF, Adresse1AF, Adresse2AF, VilleAF, CodePostalAF, DeptAF, NFR, NSIRET, Reglement, A4, DateA4, Carnet, DateCarnet, Continu, DateContinu, Contisnap, DateContisnap, Etiquette, DateEtiquette, Liasse, DateLiasse, Mailer, DateMailer, Plaquette, DatePlaquette, Tete, DateTete, Contrainte, CE FROM [" & TableEnCours & "]", cnx)
ds = New DataSet
da.Fill(ds)
dt = ds.Tables(0)
If dt.Rows.Count = 0 Then MsgBox("La table " & TableEnCours & " est vide.", MsgBoxStyle.Information, "Table vide.")
'rownum = 0
Nombre.Text = rownum
Catch ex As Exception
MsgBox("Une erreur est survenue dans le chargement de la base de donnée Clients.mdb.", MsgBoxStyle.Critical, "Erreur base de donnée.")
Debug.Write(ex.Message)
Debug.Write(ex.StackTrace)
Finally
cnx.Close()
cnx.Dispose()
cnx = Nothing
Call Misejour()
End Try
Me.Width = FrmMain.Width - FrmMain.ToolStrip1.Width - 12
Me.Height = FrmMain.Height - 32
End Sub
Private Sub Premier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Premier.Click
On Error GoTo Err
rownum = 0
Call Misejour()
Nombre.Text = rownum
Err:
End Sub
Private Sub Arriere_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Arriere.Click
On Error GoTo Err
If rownum = 0 Then Exit Sub
rownum -= 1
Call Misejour()
Nombre.Text = rownum
Err:
End Sub
Private Sub Suivant_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Suivant.Click
On Error GoTo Err
If rownum = dt.Rows.Count - 1 Then Exit Sub
rownum += 1
Call Misejour()
Nombre.Text = rownum
Err:
End Sub
Private Sub Dernier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dernier.Click
On Error GoTo Err
rownum = dt.Rows.Count - 1
Call Misejour()
Nombre.Text = rownum
Err:
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
On Error GoTo Err
Call Interlo()
Exit Sub
Err:
MsgBox("Une erreur est survenue au chargement de la listview.", MsgBoxStyle.Critical, "Erreur chargement listview.")
End Sub
Private Sub ModifClient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ModifClient.Click
MessageBox.Show("Les données sont modifiées !", "Modification...", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
J'ai essayé pleins de solutions trouvée sur VbFrance, mais le code est le même, je ne comprends pas ce qui ne marche pas.
TableEnCours correspond à un classeur, donc à une table correspondant à un département.
J'ai essayé de mettre da.Update(ds, "Doubs") mais ca ne marche pas, il me met qu'il ne peut pas lire le tablemapping 'Doubs'. J'ai essayé aussi en ne fermant pas la connection (cnx), il me met qu'il ne peut pas lire du SQL dynamique ou quelque chose dans le genre.
Voila si vous pouviez m'aider ca serait super sympa.
Merci à vous
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 12 août 2006 à 14:31
Salut
Pourquoi tu remplis ta chaine de connection dans la methode paint
C'est dans le load ou le constructeur que cela serai mieux car le paint est appellé je crois de maniere aléatoire et souvent. Quand une zone de ton appli est a refaire, donc il faut eviter de mettre du code dedans.
Surtout un code qui interroge la base de donnees.
2--> Est-ce que ta table a une cle primaire
Et regarde si le commande builder te genere un bon updatecommand, inssertcommand et delete sur ton da
3--> Pour la chaine de connexion
mais la dans le fichier de configuration c'est mieux
4--> Pour la non initialisation, je pense que c'est parceque elle est mal placée.
Regarde les premier point, ca doit peut etre resoudre ton probleme
cs_chris81
Messages postés589Date d'inscriptionjeudi 2 octobre 2003StatutMembreDernière intervention29 avril 20082 12 août 2006 à 17:35
en .net le goto est à proscrire, regarde le try catch finally. De plus ta connexion doit être ouverte lorsque tu fais des changements ou dans le load comme le dit [auteurdetail.aspx?ID=84425 nhervagault]
Sniper_Vgaerr
Messages postés113Date d'inscriptionjeudi 2 décembre 2004StatutMembreDernière intervention14 août 2006 14 août 2006 à 16:17
Bonjour,
Je n'ai pas de clé primaire, et comment je fais pour "Et regarde si le commande builder te genere un bon updatecommand, inssertcommand et delete sur ton da", car je débute un peu en VB.NET, et je ne connais pas trop la syntaxe,plus celle de Vb.
Merci j'essaye tout ca et je vous tiens au courant.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 15 août 2006 à 00:53
Salut
Pour regarder la synatxe
Tu mets un point d'arret sur ton da
et tu regardes la valeur deans le debugeur de tes variables.
Pour la clé primaire, il faut la mettre sur ta base de données.
Avec l'interface graphique ou par ajout de contraintes.
Vas dans le mode conception table et selectionne la colonne et clique qur la cle dans le menu je crois que c'est comme ca dans access.