Suppression d'enregistrements

Signaler
Messages postés
4
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
12 juin 2007
-
Messages postés
4
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
12 juin 2007
-
Bonjour, je suis nouveau sur le site. J'aimerai poser une question s'il vous plaît:

   En supprimant les enregistrements de tables parents par la commande de type  "DELETE", un message d'erreur apparaît  : " Error -2147217904.No value given for one ore more parameters".
   Pourtant le code fonctionne pour une table-parent. De plus, la requête suppression fonctionne très très bien dans Access pour tous les tables-parents.
j'aimerais comprendre ce "phénomène".
Merci!

7 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
peux tu poster le code (la requete et plus) que tu as mis dans VB6 pour essayer ce DELETE.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
quelle fût ta requete ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
4
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
12 juin 2007

Ah merci, voici le code:
AU NIVEAU MODULE :<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

'LES CONNEXIONS POUR SUPPRESSION D'ENREGISTREMENTS

'Procédure commune pour chaque

Private Sub ConnectionToDelete(CnxD AsADODB.Connection, ComStrD As String)

Set CnxD = New ADODB.Connection

With CnxD
   .Provider = "Microsoft.Jet.OLEDB.4.0"

   .ConnectionString = "C:\My Documents\rsf\Initiations\project\stationsmcar\StationsMcar.mdb"

   .Open
End With

CnxD.Execute ComStrD

End Sub

******
Les codes ci-dessous concernent des formulaires existants dont le second étant le (fameux) seul à faire marcher la commande.

'CategoriesAssainissements

Public Sub ConnectDelCategAssn(Crit As String)

Dim CnnTempstr As String
CnnTempstr " DELETE CategAssainissements.*, CategAssainissements.CodeAssain <gras>FROM CategAssainissements WHERE (((CategAssainissements.CodeAssain)</gras>" & Crit & "));"

Call ConnectionToDelete(ConnexDelCategAssn, CnnTempstr)

End Sub

 

'Stations

Public Sub ConnectDelSS(Crit As String)

Dim CnnTempstr As String
CnnTempstr " DELETE Stations.*, Stations.N°Ord <gras>FROM Stations WHERE (((Stations.N°Ord)</gras>" & Crit & "));"

Call ConnectionToDelete(ConnexDelSS, CnnTempstr)

End Sub



'Procédure de "Flags" pour savoir quel formulaire est chargé

Public Sub FindFlag()

Dim i As Integer

  For i = 0 To 11

    If FrmFlags(i) Then

      Posn = i

      GoTo Sort

    Else

      Posn = -1

    End If

  Next i

Sort:

End Sub

 

'Procédure de suppression d'enregistrement en cours

Public SubEnregSuppr(Posflag)

Dim Box, Box2, i As Integer

If  Posflag = -1 Then

   Box = MsgBox("Aucun formulaire n'est actif" & vbCrLf & "Veuillez ouvrir le formulaire concerné", vbCritical + vbOKOnly, "Absence d'objet")

Else

    Box2 = MsgBox("Êtes-vous sûr(e) de vouloir supprimer l'enregistrement en cours" & vbCrLf & "de manière définitive ?", vbExclamation + vbOKCancel, "Suppression d'enregistrement")

End If

If Box2 = vbOK Then

   If Posflag = 0 Then

    RSAssn.Delete adAffectCurrent

   ElseIf Posflag = 1 Then

    If MsgBox("Cette action entraînera aussi la suppression des enregistrements des formulaires connexes." & vbCrLf & "de manière définitive. Voulez-vous continuer ?", vbExclamation + vbOKCancel, "Suppression") = vbOK Then

      Call ConnectDelCategAssn(RsCategAssn.Fields("CodeAssain").Value)

    End If

   ElseIf Posflag = 2 Then

     If MsgBox("Cette action entraînera la suppression des enregistrements des formulaires connexes." & vbCrLf & "de manière définitive. Voulez-vous continuer ?", vbExclamation + vbOKCancel, "Suppression") = vbOK Then

      Call ConnectDelCategServ(RsCategServ.Fields("CodeServicing").Value)

     End If

   ElseIf Posflag = 3 Then

    RsCuves.Delete adAffectCurrent

   End if



End Sub

 

AU NIVEAU DU FORM MERE:

Private Sub Tbar_ButtonClick(ByVal Button As MSComctlLib.Button)

If Button.Key = "Nouveau" Then

 Call FindFlag

 Call EnregNouv(Posn)

ElseIf Button.Key = "Supprimer" Then

 Call FindFlag

 Call EnregSuppr(Posn)

End If

End Sub
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
semble manquer des quotes autour de ton critère (qui n'est pas numérique)
CnnTempstr " DELETE CategAssainissements.*, CategAssainissements.CodeAssain <gras>FROM CategAssainissements WHERE (((CategAssainissements.CodeAssain)</gras>'" & Crit & "'));"

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
il semble qu'il te manque des quotes autour de tes parametres de type string
CnnTempstr " DELETE CategAssainissements.*, CategAssainissements.CodeAssain <gras>FROM CategAssainissements WHERE (((CategAssainissements.CodeAssain)</gras>'" & Crit & "'));"

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
4
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
12 juin 2007

Eh! C'est vrai ca! je vais voir....
Messages postés
4
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
12 juin 2007

Effectivement, c'était ce "petit" détail qui gênait tout.
Encore merci Renfield!