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

Signaler
Messages postés
29
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
19 novembre 2007
-
Messages postés
29
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
19 novembre 2007
-
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

Messages postés
148
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
1 février 2006

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)
Messages postés
29
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
19 novembre 2007

merci bcp je v essayer ca
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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.
Messages postés
29
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
19 novembre 2007

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 .
Messages postés
29
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
19 novembre 2007

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''' ');
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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"'
Messages postés
29
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
19 novembre 2007

le probleme ne vient pas de la car j'avais penssé a preciser from table
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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. ?-)
Messages postés
29
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
19 novembre 2007

Erf , "table en lecture seule" persiste et signe .
Messages postés
29
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
19 novembre 2007

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 .