Erreur 5,sur un executable

cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 21 mars 2011 à 08:48
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 22 mars 2011 à 15:50
bonjour
dans mon prog,j'ai un code pour supprimer une fiche dans ma base ACCESS,quand j'exécute le prog pas de probleme il supprime bien dans les 2 tables,mais quand je crée l'executable et que je lance le programme, et que je veut supprimer une fiche, il affiche la MsgBox("Suppression définitive de la Fiche N°" & ListView1.SelectedItem.Text & " ?", vbQuestion + vbYesNo, "Suppression Fiche")je click sur oui
et il me met une erreur :
"erreur d'exécution 5
argument ou appel de procédure incorrect",
je click sur ok de l'erreur,j'ai la MsgBox "Suppression Effectué avec succès !", qui s'ouvre et il me supprime bien la fiche de ma base,je ne comprends pas l'erreur.
voila le code :
Private Sub cmd_sup_Click() 'Suppression de la fiche selectionée

    On Error GoTo err

   rep = MsgBox("Suppression définitive de la Fiche N°" & ListView1.SelectedItem.Text & " ?", vbQuestion + vbYesNo, "Suppression Fiche")
    If rep = 7 Then Exit Sub
    Set rst = dbs.OpenRecordset("Select * from [T_Record] where [T_NumFacture]='" & ListView1.SelectedItem.Text & "'")
    rst.MoveLast
    rst.MoveFirst

    For a = 0 To rst.RecordCount - 1
        rst.Edit
        rst.Delete
       rst.MoveNext
   Next a

   Set rst = dbs.OpenRecordset("Select * from [T_Facture_personne] where [T_NumFacture]='" & ListView1.SelectedItem.Text & "'")
   rst.MoveLast
   rst.MoveFirst

   nbproduit = 0
   prixttc = 0
      'on efface les lignes de la fiche
   For a = 0 To rst.RecordCount - 1
       rst.Edit
       rst.Delete
       rst.MoveNext
   Next a

   lbl_personne.Caption = nbproduit & " Produit(s) pour " & prixttc & " €"

MsgBox "Suppression Effectué avec succès !", vbInformation + vbOKOnly, "Gestion_Articles"
      'On enleve de la listview la fiche que l'on viens de supprimer dans la base
   ListView1.ListItems.Remove (ListView1.SelectedItem.Index)

  Frm_Main.StatusBar1.Panels(1).Text = InfoBase.nb_enregistrement & " Fiches Enregistrées"
      Frm_Main.StatusBar1.Panels(3).Text = "Taille de la Base : " & InfoBase.Taille_Base & " Ko"
      'Nombre de Fiches trouvées
   lbl_nbfacture.Caption = ListView1.ListItems.Count & " Fiches"

Exit Sub
err:
   If err.Number = 3021 Then Resume Next
  lbl_nbfacture.Caption = ListView1.ListItems.Count & " Fiches"
End Sub

aurriez vouz une idée sur cette erreur
merci
petchy

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 mars 2011 à 09:54
ridicule de faire un select pour... supprimer des records.

a quoi bon les rappatrier dans le seul but de les supprimer ?

de plus, tu fais un For sur tes records, les supprimant au fur et a mesure. Y'a forcement un moment ou ca coince.

remplacer :
Set rst = dbs.OpenRecordset("Select * from [T_Record] where [T_NumFacture]='" & ListView1.SelectedItem.Text & "'")
    rst.MoveLast
    rst.MoveFirst

    For a = 0 To rst.RecordCount - 1
        rst.Edit
        rst.Delete
       rst.MoveNext
   Next a


par :

If Not Nothing Is ListView1.SelectedItem Then
    dbs.Execute "DELETE FROM [T_Record] WHERE [T_NumFacture]='" & Replace(ListView1.SelectedItem.Text, "'", "''") & "'"
End If


idem pour la seconde requete.

enfin, pour la forme,
remplace :
ListView1.ListItems.Remove (ListView1.SelectedItem.Index)
par
ListView1.SelectedItem.Remove


(Tu testeras bien evidemment qu'un element au moins de ton ListView est selectionné...)


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
21 mars 2011 à 10:40
bonjour Renfield
merci pour ta réponse,j'ai modifier.mais j'ai toujours cette erreur 5 dans mon exécutable pas dans l'exécution.
pourtant il me supprime la fiche dans la base,c'est pour ça que je ne comprends pas cette erreur
petchy
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 mars 2011 à 10:52
tu catches les erreurs...
On Error GoTo err

du coup, j'ai peine à croire que ton souci vien de cette proc là...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
22 mars 2011 à 15:46
bonjour
tu as raison,en fait quand je click sur "oui" pour valider la suppression,il doit recharger la form.
donc à mon avis c'est dans se code que l'erreur doit venir.
Quand je suprime le msgbox pour confirmer la supression,et que je crer l'exe je n'est pas d'erreur.
Private Sub IniFillListView()ListView1.ListItems.Clear
If chk_année.Value = 1 Then
    Set rst = dbs.OpenRecordset("Select * from [T_Record]")
   Else
    Set rst = dbs.OpenRecordset("Select * from [T_Record] where [T_AnneeIndex]='" & Lst_ClassementAnnee.Text & "' And [T_DateCreation]like '*" & Lst_Mois.Text & "*'")
    End If

   rst.MoveLast
   rst.MoveFirst

  lbl_NumFacture.Caption = rst.Fields(0)
  Lbl_NomClient.Caption = rst.Fields(3)
   Lbl_DateFacture.Caption = rst.Fields(18)
  lbl_TotalFacture.Caption rst.Fields(16)    Label3.Caption rst.Fields(4)

  For a = 0 To rst.RecordCount - 1
  Set itmX = ListView1.ListItems.add(, , rst.Fields(0))
           itmX.Bold = True
           itmX.ForeColor = &HFF0000
          itmX.SubItems(1) = rst.Fields(3)
           itmX.SubItems(2) = rst.Fields(18)
           itmX.SubItems(3) = rst.Fields(16)
           rst.MoveNext
   Next a

   Set rst = dbs.OpenRecordset("Select * from [T_Facture_personne] where [T_NumFacture]='" & ListView1.SelectedItem.Text & "'")
   rst.MoveLast
   rst.MoveFirst
   nbproduit = 0
   prixttc = 0
  For a = 0 To rst.RecordCount - 1
   nbproduit = nbproduit + 1
   prixttc = val(prixttc) + val(rst.Fields(4))
   Next a

   lbl_personne.Caption = nbproduit & " Produit(s) pour " & prixttc & " €"
   Me.Caption = ListView1.ListItems.Count & " Fiches"
End Sub


mais je ne vois pas ou est l'erreur
merci
petchy
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 mars 2011 à 15:50
j'aime pas ta facon de faire des requetes incluant des dates...
Moi, ca passe, ton SGBD risque de pas aimer du tout...

desactive ta gestion d'erreur (bouton droit dans le code, basculer)

et regarde a quel niveau l'erreur survient.


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Rejoignez-nous