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 Function Misejour()
On Error GoTo Err
'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
Me.NomCL.Text = dt.Rows(rownum).Item("Societe")
Me.AddCL.Text = dt.Rows(rownum).Item("Adresse1")
Me.VilleCL.Text = dt.Rows(rownum).Item("Ville")
Me.CPCL.Text = dt.Rows(rownum).Item("CP")
Me.DeptCL.Text = dt.Rows(rownum).Item("Dept")
Me.RegCL.Text = dt.Rows(rownum).Item("Region")
Me.Tel1CL.Text = dt.Rows(rownum).Item("Tel")
Me.Tel2CL.Text = dt.Rows(rownum).Item("Port")
Me.FaxCL.Text = dt.Rows(rownum).Item("Fax")
Me.EmailCL.Text = dt.Rows(rownum).Item("Email")
'Me.textbox1.Text = dt.Rows(rownum).Item("NClient")
Me.TextBox1.Text = dt.Rows(rownum).Item("Interlocuteur")
Err:
Return 0
End Function
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
dr = ds.Tables(0).Rows(rownum)
dr("Region") = Me.RegCL.Text
dr("Tel") = Me.Tel1CL.Text
dr("Port") = Me.Tel2CL.Text
cmdb = New OleDb.OleDbCommandBuilder(da)
da.Update(ds) 'Ici j'ai cette erreur : The ConnectionString property has not been initialized.
ds.Clear()
da.Fill(ds, 0)
dt = ds.Tables(0)
Call Misejour()
rownum = 0
Me.RegCL.Text = dt.Rows(rownum).Item("Region")
Me.Tel1CL.Text = dt.Rows(rownum).Item("Tel")
Me.Tel2CL.Text = dt.Rows(rownum).Item("Port")
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
@Plouch