Pointer une case d'une base de donnée a partir d'une requete sql

cs_Maitre_Gonzo Messages postés 29 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 19 novembre 2007 - 25 mai 2004 à 11:52
cs_Maitre_Gonzo Messages postés 29 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 19 novembre 2007 - 28 mai 2004 à 09:53
Bonjour tout le monde
j'effectue en ce moment mon stage de premiere année de bts .
Je rencontre le problème suivant : Je suis désireux d'afficher des données d'une BDD via une requête sql afin de les trier. Mais , j'aimerais ajouter une commande supprimer , hors si j'utilise la commande delete en cliquant sur une cellule du tableau engendré par la requète sql cela me suprimme une donnée de la base de donnée n'importe comment . Ma question est de savoir commment lorsque je clique sur une cellule du tableau de la requete sql , puis-je pointer sur la cellule correspondant dans la base de donnée afin de supprimer l'enregistrement .
Merci d'avance

10 réponses

TheShAmAn Messages postés 148 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 1 février 2006
25 mai 2004 à 13:25
bah une des possiblité, ca serait de :
En supposant ke tu affiche l'identifiant ds la premeire colonne de ton tableau...

sur l'evenement OnCellClick, tu fais:
DBgrid.SelectedIndex := 0;
TaVar:=:= DBGrid.SelectedField.AsString;

Requetes.SQL.Clear;
Requetes.SQL.Add('DELETE ... Where id = '''+TaVar+''' ');
Requetes.ExecSQL;

Là, ca va te supprimer l'enregistrement de ta base ;)

Sic po ca ke tu voulais, dis le, et je verrai pr corriger :big)
0
cs_Maitre_Gonzo Messages postés 29 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 19 novembre 2007
25 mai 2004 à 14:39
merci bcp je v essayer ca
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
25 mai 2004 à 18:10
Ou, plus direct :
DbGrid.DataSource.DataSet.Delete;

Quand on clique sur une ligne du DbGrid, l'enregistrement sélectionné devient l'enregistrement courant de l'ensemble de données lié.
En appelant la méthode Delete, l'ensemble de données supprime alors l'enregistrement courant.

Attention : cette méthode ne fonctionnera pas si les enregistrements sont issus d'une requête multitables.
0
cs_Maitre_Gonzo Messages postés 29 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 19 novembre 2007
26 mai 2004 à 11:29
Etrange , lorsque j'utilise la solution de Delphiprog , le projet se lance et lorsque je tente de lancer la procedure de supression , le programme me retourne l'erreur : "la table est en lecture seule" . Cela en entrant les instructions suivantes (categoriegrid etant le nom de ma grille) :
categoriegrid.datasource.dataset.delete ;
Merci de vous pencher dessus , pour le moment je vais tester la solution de the shaman .
0

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

Posez votre question
cs_Maitre_Gonzo Messages postés 29 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 19 novembre 2007
26 mai 2004 à 11:44
Decidement , encore un probleme avec la solution de The shaman , qui me retourne comme erreur "utilisation incorecte du mot cé * " (ou * est la saisie suivane : ('DELETE * Where id = '''var''' ');
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
26 mai 2004 à 12:01
Pour la solution de TheShaman, tu as oublié de préciser dans quelle table tu veux effectuer les suppressions (voir syntaxe de la commande SQL delete) :
'Delete * From QuelleTable where Id = "var"'
0
cs_Maitre_Gonzo Messages postés 29 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 19 novembre 2007
26 mai 2004 à 12:11
le probleme ne vient pas de la car j'avais penssé a preciser from table
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
26 mai 2004 à 12:13
Mille excuses, mais j'ai oublié d'indiquer de mettre la propriété RequestLive du composant TQuery à True dans la solution que j'ai proposée. ?-)
0
cs_Maitre_Gonzo Messages postés 29 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 19 novembre 2007
26 mai 2004 à 12:26
Erf , "table en lecture seule" persiste et signe .
0
cs_Maitre_Gonzo Messages postés 29 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 19 novembre 2007
28 mai 2004 à 09:53
Bon le probleme n'est pas résolu et je viens de me rendre compte les ajouts de nouvelles entrées subissaient le meme probleme a savoir qu'elles etaient ajoutées ds le tableau généré par la requète sql et non dans la table elle même. Le plus simple serait de retrier les infos de ma base de donnée pour l'afficher directement . Donc , je cherche un moyen pour trier les informations de ma base de donnée et réorganiser celle ci en conséquence . Merci de m'aider .
0
Rejoignez-nous