Probleme lors de l'enregistrement sur base access

lolokes - 26 nov. 2012 à 11:51
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 30 nov. 2012 à 10:52
j'ai appliqué le tutoriel n°1133, qui est très bien fait, mais j'ai ce problème dans le code du boutton "save":

"La résolution de surcharge a échoué, car aucun 'Update' accessible n'accepte ce nombre d'arguments."

Que dois je faire? (voir code ci-dessous ligne en orange)

Merci de me filer un coup de pouce!!!!

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.REBUTTableAdapter.Fill(Me.VoirieDataSet.REBUT)
Me.ActionsTableAdapter.Fill(Me.VoirieDataSet.actions)
Me.ReferenceTableAdapter.Fill(Me.VoirieDataSet.reference)

filtre.SelectedIndex = 0
Call RefreshDataSource()

OK.Visible = True
warning.Visible = False
Label1.Visible = False
Label2.Visible = False
Label3.Visible = True

End Sub

Private Sub RefreshDataSource()

Me.REBUTTableAdapter.Fill(Me.VoirieDataSet.REBUT)
Me.ActionsTableAdapter.Fill(Me.VoirieDataSet.actions)
Me.ReferenceTableAdapter.Fill(Me.VoirieDataSet.reference)

End Sub



Private Sub attente_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles attente.CheckedChanged
If attente.Checked = True Then
warning.Visible = True
OK.Visible = False
Label2.Visible = True
Label1.Visible = False
Label3.Visible = False
End If
If attente.Checked = False Then
warning.Visible = False
OK.Visible = True
Label2.Visible = False
Label1.Visible = False
Label3.Visible = True
End If

End Sub

Private Sub encours_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles encours.CheckedChanged
If encours.Checked = True Then
warning.Visible = True
OK.Visible = False
Label1.Visible = True
Label2.Visible = False
Label3.Visible = False
End If
If encours.Checked = False Then
warning.Visible = False
OK.Visible = True
Label1.Visible = False
Label2.Visible = False
Label3.Visible = True
End If

End Sub

Private Sub resolu_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resolu.CheckedChanged
If resolu.Checked = True Then
OK.Visible = True
warning.Visible = False
Label1.Visible = False
Label2.Visible = False
Label3.Visible = True
End If

If resolu.Checked = False Then
OK.Visible = False
Label3.Visible = False
End If

End Sub

Private Sub Filtre_Change() Handles searcharg.TextChanged, filtre.SelectedIndexChanged

Dim FilterArgs As String = filtre.Text & " LIKE '" & searcharg.Text & "%'"
ReferenceBindingSource.Filter = FilterArgs

End Sub

Private Sub DGV2_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV2.CellContentClick
btn_del.Enabled = (DGV2.RowCount <> 0)
btn_save.Enabled = (DGV2.RowCount <> 0)
End Sub

Private Sub DGV1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV1.CellContentClick
btn_del.Enabled = (DGV1.RowCount <> 0)
btn_save.Enabled = (DGV1.RowCount <> 0)
End Sub

Private Sub DGV3_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV3.CellContentClick
btn_del.Enabled = (DGV3.RowCount <> 0)
btn_save.Enabled = (DGV3.RowCount <> 0)
End Sub

Private Sub btn_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_save.Click
Dim haserror As Boolean = False
EP.Clear()

If produit.Text.Length = 0 Then
EP.SetError(produit, "le champ "" Produit"" doit être renseigné! ")
haserror = True
End If

If type.Text.Length = 0 Then
EP.SetError(type, "le champ "" type"" doit être renseigné!")
haserror = True
End If

If haserror Then
Exit Sub
End If

Dim index As Guid = CType(DGV1.SelectedRows(0).Cells(0).Value, Guid)

Try
Dim Nbline As Integer = ReferenceTableAdapter.Update(produit.Text, type.Text, poids.Text, classe.Text, revetement.Text, information.Text, index)

If Nbline > 0 Then
MessageBox.Show("Le produit a bien été enregistré" & "dans la base de données", "mise à jour de la base", MessageBoxButtons.OK, MessageBoxIcon.Information)
Call RefreshDataSource()
End If
Catch ex As Exception
MessageBox.Show("erreur - accès BD" & Environment.NewLine & "detail de l'erreur:" & ex.Message, "Echec accès BD!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try

End Sub
End Class

33 réponses

voilà le code actuel...


Dim [INDEX] As Guid = CType(DGV1.SelectedRows(0).Cells(0).Value, Guid)
        REM: Cette procédure retourne un entier indiquant le nombre de lignes modifiés.
        '
        Try
            '
            'Appel de la procédure DELETE, de notre TableAdapter qui transmettra la
            'requête SQL DELETE.
            Dim NbLine As Integer = ReferenceTableAdapter.Delete(
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 nov. 2012 à 12:45
ton index de ta table il est de quel type en réalité ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
c'est un numauto donné automatiquement pas access...
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 nov. 2012 à 12:56
Ok. C'est un entier auto incrémenté. Donc je me demande pourquoi la variable demandée par la fonction vb est de type GUID. C'est le problème, car dans mon tuto c'est le GUID qui est utilisé. Il doit y avoir un élément que tu as omis de traduire.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0

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

Posez votre question
tu peux éclaircir?? un éléments de ma base???
je dois faire quoi avec le guid?
0
je regarde, mais je ne vois pas... pfff pas facile
0
tu as jeté l’éponge ???
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
28 nov. 2012 à 11:27
Non pas du tout, mais j'ai que très peu de temps en ce moment.

Je ne comprends pas tout. Si ton Index (clé primaire) est un Int auto, pourquoi cette ligne :

Dim [INDEX] As Guid = CType(DGV1.SelectedRows(0).Cells(0).Value, Guid)


Ne provoque pas d'erreur ? On ne peut convertir un Int en GUID. Du moins j'ai pas essayé mais je ne pense pas. Pourquoi le DataSet détecte aussi ta colonne comme étant de type GUID ? Car la détection du type est automatique et VB ne se trompe jamais.

Donc a mon avis tu dois te tromper de type. Tu pourrais poster un screen de ta table sous Access ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
OK, mais comment je fais, j'ai pas trouvé...
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
28 nov. 2012 à 13:51
Tu pourrais poster un screen de ta table sous Access ?



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Je ne sais pas comment on fait pour poster une image là...
0
[img]C:\Documents and Settings\L4553116\My Documents\screen access1/img
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
30 nov. 2012 à 10:52
Tu peux faire une capture, la mettre chez un hébergeur d'image gratuit genre HostingPics et poster le lien ici.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Rejoignez-nous