[RESOLU]suppression occurence dans une zone de liste (ACCESS)
Dernière réponse : dans Programmation
salut !
je suis actuellement en stage et on me demande de reprendre un programme déjà existant sur ACCESS concernant une gestion de stock
l'utilisateur peut faire une entrée en stock, une entrée peut avoir plusieurs produit (ex: entrée 01 => 5 pain, 10 farine etc)
si l'utilisateur se trompe il peut modifier une entrée mais il doit pouvoir aussi supprimer l'entrée (le code est déjà fait pour la suppression de l'entrée entiére)
le probleme est que je n'arrive pas à faire en sorte de supprimer un produit supprimer dans une entrée (ex: entrée01: sélectionner uniquement les '5 pains' et les supprimer )
pour l'instant mon code ressemble à cela :
Private Sub Cmdsupsup01_Click()
Dim base As Database
Dim tentree As Recordset
Set base = CurrentDb()
Set tentree = base.OpenRecordset("DÉTAIL_ENTREE", DB_OPEN_DYNASET)
Dim critere As String
critere = "N°ENTREE='" + Lstpdtsup.Column(0) + "'" + "N°DETAIL='" + Lstpdtsup.Column(14) + "'"
tentree.FindFirst (critere)
tentree.Delete
Lstpdtsup.Requery
donc voila lorsque j'essaye de supprimer le produit selectionné (cliqué avec la souris) un message d'erreur apparait sur "tentree.FindFirst (critere)" => erreur de syntaxe opérateur absent de l'expression
pourtant mon critere récupere bien le N°ENTREE et le N°DETAIL
enfin bref, je commence à avoir access en horreur et je dois encore y passer un mois
donc si quelqu'un pouvait apaiser ma peine cela serait fort sympathique
voila merci d'avance
byebye
je suis actuellement en stage et on me demande de reprendre un programme déjà existant sur ACCESS concernant une gestion de stock
l'utilisateur peut faire une entrée en stock, une entrée peut avoir plusieurs produit (ex: entrée 01 => 5 pain, 10 farine etc)
si l'utilisateur se trompe il peut modifier une entrée mais il doit pouvoir aussi supprimer l'entrée (le code est déjà fait pour la suppression de l'entrée entiére)
le probleme est que je n'arrive pas à faire en sorte de supprimer un produit supprimer dans une entrée (ex: entrée01: sélectionner uniquement les '5 pains' et les supprimer )
pour l'instant mon code ressemble à cela :
Private Sub Cmdsupsup01_Click()
Dim base As Database
Dim tentree As Recordset
Set base = CurrentDb()
Set tentree = base.OpenRecordset("DÉTAIL_ENTREE", DB_OPEN_DYNASET)
Dim critere As String
critere = "N°ENTREE='" + Lstpdtsup.Column(0) + "'" + "N°DETAIL='" + Lstpdtsup.Column(14) + "'"
tentree.FindFirst (critere)
tentree.Delete
Lstpdtsup.Requery
donc voila lorsque j'essaye de supprimer le produit selectionné (cliqué avec la souris) un message d'erreur apparait sur "tentree.FindFirst (critere)" => erreur de syntaxe opérateur absent de l'expression
pourtant mon critere récupere bien le N°ENTREE et le N°DETAIL
enfin bref, je commence à avoir access en horreur et je dois encore y passer un mois
donc si quelqu'un pouvait apaiser ma peine cela serait fort sympathique
voila merci d'avance
byebye
Autres pages sur : resolu suppression occurence zone liste access
Lassé par la pub ? Créez un compte
Salut, Lazy87
Pour une recherche multi-critère, il faut séparer les critères avec les opérateurs booléens habituels. Ici, cela devrait donner:
critere = "N°ENTREE='" + Lstpdtsup.Column(0) + "' AND N°DETAIL='" + Lstpdtsup.Column(14) + "'"
Par ailleurs, après lancement de la recherche (FindFirst), il serait souhaitable de vérifier qu'elle a bien abouti. Pour cela, tu peux utiliser la propriété "NoMatch" (regarde dans l'aide en ligne d'Access pour plus d'infos). A ta place, j'écrirais quelque chose comme:
If tentree.NoMatch = False Then
tentree.Delete
End If
Dis-nous si cela te convient.
Au passage, les spécialistes Microsoft Access doivent se compter sur les doigts de la main de Mickey, sur ce forum. A l'avenir, si tu as besoin d'une réponse rapide, passe par un forum un peu plus spécialisé comme CELUI-CI.
Bonne continuation
Pour une recherche multi-critère, il faut séparer les critères avec les opérateurs booléens habituels. Ici, cela devrait donner:
critere = "N°ENTREE='" + Lstpdtsup.Column(0) + "' AND N°DETAIL='" + Lstpdtsup.Column(14) + "'"
Par ailleurs, après lancement de la recherche (FindFirst), il serait souhaitable de vérifier qu'elle a bien abouti. Pour cela, tu peux utiliser la propriété "NoMatch" (regarde dans l'aide en ligne d'Access pour plus d'infos). A ta place, j'écrirais quelque chose comme:
If tentree.NoMatch = False Then
tentree.Delete
End If
Dis-nous si cela te convient.
Au passage, les spécialistes Microsoft Access doivent se compter sur les doigts de la main de Mickey, sur ce forum. A l'avenir, si tu as besoin d'une réponse rapide, passe par un forum un peu plus spécialisé comme CELUI-CI.
Bonne continuation
salut merci de ta réponse gillou_gre !!
mais il y a toujours un message d'erreur sur le "tentree.findfirst critere"
=> type de données imcompatible dans l'expressoin du critére
donc je suppose que c'est ce qui est récupérée qui est problématique puisque c'est "type de données imcompatible" ... donc voilà je suis pas bien sur mais bon ... je vais creuser de ce coté et si je trouve pas j'irai sur la forum que tu m'as laissé
donc voila merci beaucoup quand même pour avoir pris du temps
byebye
PS: je laisse le message actif jusqu'à ce que je trouve la solution, on sait jamais si une bonne âme doué en ACCESS passe par là
mais il y a toujours un message d'erreur sur le "tentree.findfirst critere"
=> type de données imcompatible dans l'expressoin du critére
donc je suppose que c'est ce qui est récupérée qui est problématique puisque c'est "type de données imcompatible" ... donc voilà je suis pas bien sur mais bon ... je vais creuser de ce coté et si je trouve pas j'irai sur la forum que tu m'as laissé
donc voila merci beaucoup quand même pour avoir pris du temps
byebye
PS: je laisse le message actif jusqu'à ce que je trouve la solution, on sait jamais si une bonne âme doué en ACCESS passe par là
Salut, Lazy87
De la façon dont il est fait, le critère suppose que les champs "N°ENTREE" et "N°DETAIL" sont des chaînes de caractères. Est-ce bien le cas ?
Si non et que ce sont des numériques, il faut enlever les quotes simples ('), ce qui donne ceci:
critere = "N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL=" & Lstpdtsup.Column(14)
C'est mieux ?
De la façon dont il est fait, le critère suppose que les champs "N°ENTREE" et "N°DETAIL" sont des chaînes de caractères. Est-ce bien le cas ?
Si non et que ce sont des numériques, il faut enlever les quotes simples ('), ce qui donne ceci:
critere = "N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL=" & Lstpdtsup.Column(14)
C'est mieux ?
oui j'ai tenté du coup, ca me fait plus rien ... mais quand je dis rien ... c'est rien ^^' ... bon point : y'a plus d'erreur
mais aprés ... ca supprime toujours pas : /
mais du coup j'avais pensé (logique bizarre je vous préviens ^^)
access ca ressemble (oui je sais ... pas du tout) a excel
et sous excel on peut faire un truc genre :
pour i = 1 à list.listcount
list.listindex = i-1
si list.listindex=list.value
j = list.listindex
j.delete
fsi
fp
non ?! parcque du coup les qualificateurs sont pas bons mais pour le reste du code je me dis que ca pourrait marcher non ?
mais aprés ... ca supprime toujours pas : /mais du coup j'avais pensé (logique bizarre je vous préviens ^^)
access ca ressemble (oui je sais ... pas du tout) a excel
et sous excel on peut faire un truc genre :
pour i = 1 à list.listcount
list.listindex = i-1
si list.listindex=list.value
j = list.listindex
j.delete
fsi
fp
non ?! parcque du coup les qualificateurs sont pas bons mais pour le reste du code je me dis que ca pourrait marcher non ?
Je ne comprends pas bien ce que tu veux faire avec .listindex mais je doute que ce soit plus efficace...
Tu as vérifié dans la table que l'enregistrement est toujours présent ? Il se peut que la suppression se fasse mais qu'elle ne soit pas visible immédiatement sur le formulaire qu'il faudrait "rafraîchir" avec un "Me.Requery".
Il y a bien une autre solution qui est sûrement plus simple vu que tu n'as qu'un seul enregistrement à supprimer. Il s'agit d'exécuter une requête SQL de suppression. Voila à quoi cela pourrait ressembler :
CurrentDb.Execute "DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'"
Une seule ligne et le tour est joué
L'inconvénient, c'est que, si les noms de tes tables ou de tes champs sont modifiés, il faut penser à modifier tous les bouts de code qui les utilisent.
Je te souhaite un bon week-end et te donne rendez-vous à lundi si tu as encore des soucis.
A+
Tu as vérifié dans la table que l'enregistrement est toujours présent ? Il se peut que la suppression se fasse mais qu'elle ne soit pas visible immédiatement sur le formulaire qu'il faudrait "rafraîchir" avec un "Me.Requery".
Il y a bien une autre solution qui est sûrement plus simple vu que tu n'as qu'un seul enregistrement à supprimer. Il s'agit d'exécuter une requête SQL de suppression. Voila à quoi cela pourrait ressembler :
CurrentDb.Execute "DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'"
Une seule ligne et le tour est joué
L'inconvénient, c'est que, si les noms de tes tables ou de tes champs sont modifiés, il faut penser à modifier tous les bouts de code qui les utilisent.
Je te souhaite un bon week-end et te donne rendez-vous à lundi si tu as encore des soucis.
A+
salut !
donc pour la premiére méthode j'étais allé vérifier dans la table mais aucune suppression et maintenant pour la suppression grâce au SQL ... et bien toujours aucun résultat, vraiment aucun, pas de suppression dans la table mais pas de message d'erreur non plus donc voilà ... tout cela me laisse relativement pantoi ... juste pour savoir si je suis pas complétement stupide ... le SQL fallait bien que je le mette sur le bouton de commande, dans propriété et "sur clic" ?!!
enfin bref voilà merci c'était une super bonn eidée pourtant
donc pour la premiére méthode j'étais allé vérifier dans la table mais aucune suppression et maintenant pour la suppression grâce au SQL ... et bien toujours aucun résultat, vraiment aucun, pas de suppression dans la table mais pas de message d'erreur non plus donc voilà ... tout cela me laisse relativement pantoi ... juste pour savoir si je suis pas complétement stupide ... le SQL fallait bien que je le mette sur le bouton de commande, dans propriété et "sur clic" ?!!
enfin bref voilà merci c'était une super bonn eidée pourtant
Salut, Lazy87
Youpi, on progresse
!
Si la suppression ne se fait pas sur le bon élément, c'est peut-être qu'il y a une instruction qui modifie l'élément courant entre le moment où tu sélectionnes la ligne dans le tableau et l'instruction delete. Vérifie les choses du style ".Requery" qui, en plus de raffraîchir le contenu d'un formulaire ou d'une liste (entre autres) ont aussi pour effet de modifier l'élément courant pour se replacer sur le premier.
Allez, courage, tu y es presque
!
Youpi, on progresse
!Si la suppression ne se fait pas sur le bon élément, c'est peut-être qu'il y a une instruction qui modifie l'élément courant entre le moment où tu sélectionnes la ligne dans le tableau et l'instruction delete. Vérifie les choses du style ".Requery" qui, en plus de raffraîchir le contenu d'un formulaire ou d'une liste (entre autres) ont aussi pour effet de modifier l'élément courant pour se replacer sur le premier.
Allez, courage, tu y es presque
!
Bon, comme dirait l'autre, je fais un pas en avant et deux pas en arrière
. Après avoir était malade hier, je me dis, c'est bon aujourd'hui c'est le grand jour, et bien non, car ce matin j'arrive de "bonne humeur" pour travailler et je me rend compte que rien ne se supprime ... La seule modification que j'ai effectué c'est de mettre la requête dans le code VB au lieu de le mettre dans la propriété du bouton de commande. D'après le peu d'expérience que j'ai d'access, cela ne devrait absolument rien changer ... mais apparement si ... Donc j'avais mis ce code (car il y a aussi de fortes chances pour que se soit de ma faute ^^'):
Dim r2 as recordset
Set base = currentDb()
Dim req as string
req = "SELECT * FROM DÉTAIL_ENTREE WHERE N°ENTREE = " etc ...
Set r2 = base.OpenRecordset (req, DB_OPEN_DYNASET)
Do cmd.requery "Lstpdtsup"
Donc cela tout seul ne fonctionne pas ... avec le code qu'il y avait avant ... ça marche pas non plus ... donc pour l'instant la seule méthode valable que j'ai pour supprimer une occurence c'est :
1°) mettre cette requête dans la propriété de mon bouton de commande :
-"DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'"
2°) mettre ce code (dans VB) sur le bouton de commande :
-Dim base As Database
Dim tentree As Recordset
Set base = CurrentDb()
Set tentree = base.OpenRecordset("DÉTAIL_ENTREE", DB_OPEN_DYNASET)
Dim critere As String
critere = "N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'"
tentree.FindFirst (critere)
tentree.Delete
Lstpdtsup.Requery
Donc voilà après comme tu m'as dit que le problème de la suppression (étant donné que dans l'état cela me supprime toujours la première occurence de la table) j'ai essayé de chaner les ".requery" par un "do Cmd.requery", méthode qu'un de mes profs m'a donné ... mais cela ne change rien ... donc je vais me petit suicider avec du flamby
byebye
. Après avoir était malade hier, je me dis, c'est bon aujourd'hui c'est le grand jour, et bien non, car ce matin j'arrive de "bonne humeur" pour travailler et je me rend compte que rien ne se supprime ... La seule modification que j'ai effectué c'est de mettre la requête dans le code VB au lieu de le mettre dans la propriété du bouton de commande. D'après le peu d'expérience que j'ai d'access, cela ne devrait absolument rien changer ... mais apparement si ... Donc j'avais mis ce code (car il y a aussi de fortes chances pour que se soit de ma faute ^^'):Dim r2 as recordset
Set base = currentDb()
Dim req as string
req = "SELECT * FROM DÉTAIL_ENTREE WHERE N°ENTREE = " etc ...
Set r2 = base.OpenRecordset (req, DB_OPEN_DYNASET)
Do cmd.requery "Lstpdtsup"
Donc cela tout seul ne fonctionne pas ... avec le code qu'il y avait avant ... ça marche pas non plus ... donc pour l'instant la seule méthode valable que j'ai pour supprimer une occurence c'est :
1°) mettre cette requête dans la propriété de mon bouton de commande :
-"DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'"
2°) mettre ce code (dans VB) sur le bouton de commande :
-Dim base As Database
Dim tentree As Recordset
Set base = CurrentDb()
Set tentree = base.OpenRecordset("DÉTAIL_ENTREE", DB_OPEN_DYNASET)
Dim critere As String
critere = "N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'"
tentree.FindFirst (critere)
tentree.Delete
Lstpdtsup.Requery
Donc voilà après comme tu m'as dit que le problème de la suppression (étant donné que dans l'état cela me supprime toujours la première occurence de la table) j'ai essayé de chaner les ".requery" par un "do Cmd.requery", méthode qu'un de mes profs m'a donné ... mais cela ne change rien ... donc je vais me petit suicider avec du flamby
byebye
Ah ... autant pour moi ... plus rien ne marche ... quoi ça supprime plus rien ... même quand je remets comme c'était lundi ... incompréhensible .
Et puis maintenant j'ai une nouvelle erreur ... quoi deux en faite ...
un coup ça me dit que " Gestion de stock ne peut pas trouver la macro "CurrentDb.Execute "DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'" "
ou sinon ça me dit que la macro currentDb n'est pas trouvable ... Enfin bref ... je comprend plus rien ça me gonfle
Et puis maintenant j'ai une nouvelle erreur ... quoi deux en faite ...
un coup ça me dit que " Gestion de stock ne peut pas trouver la macro "CurrentDb.Execute "DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'" "
ou sinon ça me dit que la macro currentDb n'est pas trouvable ... Enfin bref ... je comprend plus rien ça me gonfle
Oula ! Je reprends du début.
Tout ce que je t'ai donné jusqu'à présent, c'est du code VBA. Pour qu'il fonctionne (par exemple) sur clic d'un bouton, il faut:
1) dans la propiété "Sur clic" du bouton, choisir "[Procédure événementielle]"
2) cliquer sur le bouton contenant "..." à droite de cette même propriété
3) copier le code sous la ligne:
"Sub NomDeTonBouton_Click()"
et au dessus de la ligne:
"End Sub"
Si tu mets autre chose que "[Procédure événementielle]", ce doit être le nom d'une macro. Les macros sont des objets Access tombés en désuétude, vestiges des premières tentatives d'automatisation d'Access. Les deux seuls rescapés sont la macro "AutoExec" qui permet de lancer un code au démarrage de la base et la macro "AutoKeys" qui permet d'intercepter des raccourcis clavier.
Etant en stage, je suppose que ton temps est limité et que tu n'as peut-être pas envie de t'investir plus que nécessaire dans l'apprentissage d'Access mais cela ne peut pas te faire de mal. Tu trouveras ICI quelques sites qui peuvent t'aider à mieux appréhender Access... et les bases de données en général.
Continue comme ça, tu vas y arriver !
Tout ce que je t'ai donné jusqu'à présent, c'est du code VBA. Pour qu'il fonctionne (par exemple) sur clic d'un bouton, il faut:
1) dans la propiété "Sur clic" du bouton, choisir "[Procédure événementielle]"
2) cliquer sur le bouton contenant "..." à droite de cette même propriété
3) copier le code sous la ligne:
"Sub NomDeTonBouton_Click()"
et au dessus de la ligne:
"End Sub"
Si tu mets autre chose que "[Procédure événementielle]", ce doit être le nom d'une macro. Les macros sont des objets Access tombés en désuétude, vestiges des premières tentatives d'automatisation d'Access. Les deux seuls rescapés sont la macro "AutoExec" qui permet de lancer un code au démarrage de la base et la macro "AutoKeys" qui permet d'intercepter des raccourcis clavier.
Etant en stage, je suppose que ton temps est limité et que tu n'as peut-être pas envie de t'investir plus que nécessaire dans l'apprentissage d'Access mais cela ne peut pas te faire de mal. Tu trouveras ICI quelques sites qui peuvent t'aider à mieux appréhender Access... et les bases de données en général.
Continue comme ça, tu vas y arriver !
Oui je sais que le code que tu me donné c'est sous VB puisque y'a currentDB.execute ... c'est juste que quand j'ai réussi à supprimer la premiére occurence c'était en mettant la requête sur procédure evennementielle tout en laissant le code en VB derrière (bizarre hein !!) ... Bon bin du coup je pense que je vais tenter jusqu'à la fin de la semaine d'aller faire un tour sur les sites que tu me proposes tout en cherchant la solution à mon problème ... et puis si je trouve toujours pas la réponse j'ai un prof qui vient me voir mardi prochain donc dans tout les cas j'aurais la réponse ... mais je pourrais pas l'impressionner ^^"
Enfin bref encore un grand merci à toi et si tu trouve la réponse d'ici mardi te gêne pas pour m'aider à impressionner mon profs xD
ByeBye
Enfin bref encore un grand merci à toi et si tu trouve la réponse d'ici mardi te gêne pas pour m'aider à impressionner mon profs xD
ByeBye
petite question qui a un rapport avec le début tu as dis que c'était sur excess mais pourquoi ne pas le faire sur MySql ? c'est plus simple et beaucoup mieux ...
sinon pour ce qui est de ton problème désolé mais ca fais longtemps que j'ai laché excess ^^ je ne saurais te répondre mais écoute grillou apparement il connais
sinon pour ce qui est de ton problème désolé mais ca fais longtemps que j'ai laché excess ^^ je ne saurais te répondre mais écoute grillou apparement il connais
Si tu avais tout bien compris dès le début, le code suivant devrait fonctionner:
Private Sub Cmdsupsup01_Click()
CurrentDb.Execute "DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'"
End Sub
Si ce n'est pas le cas, c'est que ce ne sont pas les bonnes données qui sont passées en paramètre. Essaie avec ceci:
Private Sub Cmdsupsup01_Click()
'CurrentDb.Execute "DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'"
MsgBox "ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL=" & Lstpdtsup.Column(14), , "Test"
End Sub
et voit quelles sont les données qui s'affichent.
Si ce ne sont pas les bonnes données, je ne sais pas trop comment t'aider plus... Désolé
Stagiaire01 => il s'agit d'un programme existant qu'il s'agit de modifier, je doute qu'on a laissé à Lazy87 le choix du programme... De plus, il n'est que stagiaire... comme toi
Bonne continuation
Private Sub Cmdsupsup01_Click()
CurrentDb.Execute "DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'"
End Sub
Si ce n'est pas le cas, c'est que ce ne sont pas les bonnes données qui sont passées en paramètre. Essaie avec ceci:
Private Sub Cmdsupsup01_Click()
'CurrentDb.Execute "DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL='" & Lstpdtsup.Column(14) & "'"
MsgBox "ENTREE=" & Lstpdtsup.Column(0) & " AND N°DETAIL=" & Lstpdtsup.Column(14), , "Test"
End Sub
et voit quelles sont les données qui s'affichent.
Si ce ne sont pas les bonnes données, je ne sais pas trop comment t'aider plus... Désolé
Stagiaire01 => il s'agit d'un programme existant qu'il s'agit de modifier, je doute qu'on a laissé à Lazy87 le choix du programme... De plus, il n'est que stagiaire... comme toi
Bonne continuation
Donc je viens de faire ta première solution :
=>Erreur d'execution'3464': type de donnée imcompatible dans l'expression du critére
puis :
Donc maintenant j'essaye la deuxième solution :
=>Erreur d'execution'3464': type de donnée imcompatible dans l'expression du critére
Et j'ai fais que du copier/coller ... plus copier/coller que ça je pense que ça existe pas ... quoi j'ai vérifier qu'il n'y ai pas d'erreur d'orthographe ... c'est tout.
Donc voilà, je vais me lancer dans la lecture passionnante des guides d'utilisation ACCESS xD.
Allez souhaitez moi bonne chance
=>Erreur d'execution'3464': type de donnée imcompatible dans l'expression du critére
puis :
Donc maintenant j'essaye la deuxième solution :
=>Erreur d'execution'3464': type de donnée imcompatible dans l'expression du critére
Et j'ai fais que du copier/coller ... plus copier/coller que ça je pense que ça existe pas ... quoi j'ai vérifier qu'il n'y ai pas d'erreur d'orthographe ... c'est tout.
Donc voilà, je vais me lancer dans la lecture passionnante des guides d'utilisation ACCESS xD.
Allez souhaitez moi bonne chance
Il est temps d'utiliser les fonctions de débogage d'Access.
Place toi dans l'éditeur VBA sur la ligne qui exécute la commande SQL (CurrentDB.Execute ...) et presse la touche F9. La ligne sera surligné d'une jolie couleur marron
. Ouvre ton formulaire et clique sur le bouton qui lance la commande. L'éditeur VBA va revenir au premier plan sur la ligne précédente. Sélectionne alors le premier paramètre ( Lstpdtsup.Column(0) ) et presse alors sur Shift+F9. Une fenêtre va alors t'indiquer la valeur de ce paramètre. Vérifie qu'elle est correcte puis ferme la fenêtre avec la touche Echap. Procède de même avec le second paramètre. L'erreur peut venir du fait que l'un des paramètres soit égal à Null ou à une chaîne vide ou encore que ce paramètre n'existe pas (attention: Lstpdtsup.Column(14) correspond à la 15ème colonne de la liste Lstpdtsup, la numérotation commençant à 0).
Vois un peu tout cela et dis-nous ! A+
Place toi dans l'éditeur VBA sur la ligne qui exécute la commande SQL (CurrentDB.Execute ...) et presse la touche F9. La ligne sera surligné d'une jolie couleur marron
. Ouvre ton formulaire et clique sur le bouton qui lance la commande. L'éditeur VBA va revenir au premier plan sur la ligne précédente. Sélectionne alors le premier paramètre ( Lstpdtsup.Column(0) ) et presse alors sur Shift+F9. Une fenêtre va alors t'indiquer la valeur de ce paramètre. Vérifie qu'elle est correcte puis ferme la fenêtre avec la touche Echap. Procède de même avec le second paramètre. L'erreur peut venir du fait que l'un des paramètres soit égal à Null ou à une chaîne vide ou encore que ce paramètre n'existe pas (attention: Lstpdtsup.Column(14) correspond à la 15ème colonne de la liste Lstpdtsup, la numérotation commençant à 0).Vois un peu tout cela et dis-nous ! A+
Ah il semblerait qu'il y ai un problème puisque Lstpdtsup.Column(0) récupère 005-2008 (qui est bien le n°d'entrée) mais le problème c'est qu'en faisant la méthode que tu m'a montré Lstpdtsup.column(14) récupére la même valeur ... Alors qu'en passant juste la souris dessus il récupére '1176' qui est bien le n° de détail ... Donc je suis légérement perplexe.
Alors, c'est le n° d'entrée qui est de type chaîne et n° de détail qui est numérique, c'est ça ? Dans ce cas, les quotes doivent être déplacées sur le premier paramètre comme ceci:
CurrentDb.Execute "DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE='" & Lstpdtsup.Column(0) & "' AND N°DETAIL=" & Lstpdtsup.Column(14)
Est-ce que c'est mieux ?
CurrentDb.Execute "DELETE * FROM DÉTAIL_ENTREE WHERE N°ENTREE='" & Lstpdtsup.Column(0) & "' AND N°DETAIL=" & Lstpdtsup.Column(14)
Est-ce que c'est mieux ?
OHLALALALALALA que je suis stupide ... -_-' j'ai honte mais j'ai honte ... oui donc là pour le coup ca marche très bien (>- -"<)
Je suis vraiment désolé de t'avoir fait perdre ton temps et ton énergie à rechercher un problème dont tu avait trouvé la solution en quelques posts.
Bon bin du coup je passe au problème suivant
je sens que je vais très rapidement revenir sur le forum xD.
Mais encore une fois MERCI BEAUCOUP gillou_gre.
Je suis vraiment désolé de t'avoir fait perdre ton temps et ton énergie à rechercher un problème dont tu avait trouvé la solution en quelques posts.
Bon bin du coup je passe au problème suivant
je sens que je vais très rapidement revenir sur le forum xD.Mais encore une fois MERCI BEAUCOUP gillou_gre.
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumZone de liste access
- ForumZone de liste dans access
- ForumZone de liste access vba
- ForumPb avec zone de liste access
- ForumExporter zone de liste access
- ForumZone liste access
- solutionsAccess zone liste vba
- ForumZone de liste modifiable access
- ForumZone de liste deroulante access
- ForumZone de liste vba access
- Voir plus
et je me suis fait eu