Requete sql
jai un formulaire avec different bouton
jai un bouton supprimer qui me permet d"effacer un agetn de ma table
jai créer un requete sql de type delete from mais qui ne fait rien
aucun message d'erreur
Private Sub Cmd_valid_Click()
On Error GoTo Err_cmd_valid_Click
DoCmd.RunCommand acCmdRecordsGoToNew
lst_id.Requery
lst_id = ""
Me.Refresh
If chx = "s" Then
DoCmd.RunSQL "DELETE avril09.* FROM avril09 WHERE identifiant = " & CLng(lst_id.Value)
DoCmd.RunSQL req
End If
DoCmd.Close acForm, "frm_personnel"
End Sub
merci de m'aider pour trouver le probleme
--
c'est dans la souffrance que l'on progresse
fait le moins que tu peux et ce peu fait le faire aux autres
Configuration: Windows XP Internet Explorer 6.0
28 réponses
La suppression d'un enregistrement via un bouton dans un formulaire Access ne s'exécute pas: le DELETE ne produit ni message ni effet, laissant perplexe sur l'origine du problème. La syntaxe utilisée mélange 'DELETE avril09.* FROM avril09 WHERE identifiant = ...' alors qu'une instruction standard est 'DELETE FROM nom_table WHERE nom_champ = valeur', ce qui peut être invalide en SQL Access. Réponses suggèrent aussi d'éviter les guillemets autour d'un identifiant numérique et d'utiliser CLng(lst_id.Value) directement, par exemple: req = 'DELETE FROM avril09 WHERE identifiant = ' & CLng(lst_id.Value). Enfin, il est conseillé de vérifier que identifiant est bien de type long et que CLng(lst_id.Value) renvoie une valeur, car, si la colonne est numérique, les guillemets nuisent à l'exécution.
-
merci mais j'ai trouvé la solution tout marche niquel c'est gentil d'essayé de m'aider
-
si tu a mi le msgbox entre le if chx="s" et le DoCmd.RunSQL "DELETE FROM avril09 WHERE identifiant = '" & lst_id.Value & "';"
et que malgrès tout le msgbox ne s'affiche pas c'est que tu ne rentre pas dans ta condition, donc c'est quoi chx et le s ? -
jai mis le msgbox mais il me retourne aucun message
jai essayé la requete sans succès^^ -
^^ je n'ai fait que t'expliquer pourquoi selon moi, ca foirai :P
msgbox "|" & lst_id.Value & "|"
'le msgbox si dessus sert a tester s'il n'y a pas d'espace qui entoure la valeur, dans le cas où il y a un espace il faudrai rajouter dans la requete un ltrim(lst_id.Value) a la place de lst_id.Value
DoCmd.RunSQL "DELETE FROM avril09 WHERE identifiant = '" & lst_id.Value & "';" -
oué j'ai pas trop compris^^
sa va donner quoi comme requete alors
-
et CLng c'est bien la fonction pour convertir en long non ?
si c'est le cas alors c'est là que ca bug, comment veut tu convertir un type string (alphanumérique) en type long (numérique) ?
et puisque c'est un string il faut donc entourer la valeur de ' ' dans la requete sql
si ca règle ton problème dis le :) -
lst_id correspond a des identifiant de type fg2455
je n'est pas verifier que clng renvoyait une valeur je vais mettre un msgbox genre if... then msgbox" " ?
identifiant est une chaine de caractere -
la valeur dans la condition étant un long, les ' ' sont inutile non ?
est ce que tu a vérifié que CLng(lst_id.Value) renvoyai bien une valeur ? (met un msgbox entre ton if et ta requete pour tester en même temp si tu entre dans la condition)
as tu vérifier que le type de la colonne identifiant était bien de type long ?
quel est la valeur maximum quepeut prendre lst_id.Value ?
voila mes ptites question ^^ -
prend ton temps^^
-
pfiouu attend, je vais scruté ta requête attentivement et je te donne une réponse...
-
jai changé ma requete mais qui ne marche tj pas
rq = "delete from avril09 where identifiant =('" & Form_frm_personnel.lst_id & "') AND Nom =('" & Form_frm_personnel.txt_nom & "') AND ('" & Form_frm_personnel.txt_prenom & "') AND identifiant =('" & Form_frm_personnel.lst_id & "') AND Nom=('" & Form_frm_personnel.txt_nom & "') AND Prenom =('" & Form_frm_personnel.txt_prenom & "') AND Service =('" & Form_Formdem_SUPP.txtService & "') AND division =('" & Form_frm_personnel.division & "') AND section =('" & Form_frm_personnel.section & "') AND clasniv_fct =(" & Form_frm_personnel.Libelle_fonction & ") AND entité_pilotage=('" & Form_frm_personnel.txt_entite & "') AND Grade =('" & Form_frm_personnel.Grade & "') AND Date_naissance =(#" & Format(CDate(Form_frm_personnel.txt_date_naiss.Value), "MM/DD/YYYY") & "#);"
DoCmd.RunSQL rq -
j'ai essayé comme sa mais sa ne marche pas non plus =(
-
tu peux le mettre si tu veux, mais ca ne changera rien du moins je pense
mais tu veux met le :-)
Set Rst = Base.OpenRecordset("DELETE FROM avril09 WHERE identifiant = '" & CLng(lst_id.Value) & " ' ; ")
-
il ne manque pas un ; a la fin?
-
j'ai essayé ton code est bien mais pourtant sa ne fonctionne pas
je ne comprend pas jai essayé plusieurs requetes sans succes -
Dim Base AS DAO.Database
Dim Rst as DAO.Recordset
Set Base = CurrentDB
Set Rst = Base.OpenRecordset("DELETE FROM avril09 WHERE identifiant = '" & CLng(lst_id.Value) & " ' ")
je t'en ai fait un... -
j'ai deja entendu parlé mais je ne me rapelle plus ce que cest
-
ok ok
Ta essayé avec la méthode des jeux d'enregistrements??
-
oui l'utilisateur choisit un identifiant dans une liste déroulante.cest requete doit alimenter mon formulaire en completant les champ en fonction de l'identifiant
-
ha merci , je me disais qu'il manquait quelque chose ^^
la requete elle s'effectue sur un choix de l'utilisateur c sa??
- 1
- 2