|
supression d'enregistrements par SQL |
Iniciado por denis, 23,nov. 2004 16:33 - 2 respuestas |
| |
| | | |
|
| |
Publicado el 23,noviembre 2004 - 16:33 |
Bonjour,
dans mon programme je dois lire une table (Access) et, au fur et à mésure, je doit supprimer ce que j'ai lu...
Pas de problèmes avec la lecture: sqlconnecte... sqlexec("SELECT * FROM TABLE") SQLPremier("REQ1") TANTQUE PAS SQL.EnDehors // Je traite ...
// Et ici j'aimerais supprimer l'enregistrement en question. "SQLSupprime"
SQLSuivant("REQ1") FIN
Mais comment supprimer ? J'ai essayé sqlexec("SELECT TOP 1 * FROM TABLE") mais on ne peut pas faire sqlexec("DELETE TOP 1 FROM TABLE")
La table lue vient d'un programme externe et est "variable". Il n'y a donc pas un identifiant unique connu d'avance.
Merci pour vos éventuelles idées.
Denis |
| |
| |
| | | |
|
| | |
| |
Publicado el 23,noviembre 2004 - 17:17 |
Il se trouve que Business Software SA - Denis Ramstein a formulé :
Bonjour,
dans mon programme je dois lire une table (Access) et, au fur et à mésure, je doit supprimer ce que j'ai lu...
Pas de problèmes avec la lecture: sqlconnecte... sqlexec("SELECT * FROM TABLE") SQLPremier("REQ1") TANTQUE PAS SQL.EnDehors // Je traite ...
// Et ici j'aimerais supprimer l'enregistrement en question. "SQLSupprime"
SQLSuivant("REQ1") FIN
Mais comment supprimer ? J'ai essayé sqlexec("SELECT TOP 1 * FROM TABLE") mais on ne peut pas faire sqlexec("DELETE TOP 1 FROM TABLE")
La table lue vient d'un programme externe et est "variable". Il n'y a donc pas un identifiant unique connu d'avance.
Merci pour vos éventuelles idées.
Denis
Salut,
Si tu n'as pas d'identifiant unique et du fait que tu utilises ACCESS, tu ne peux pas identifier l'enregistrement par un rowid (par exemple). Pour le supprimer, il faut donc que tu trouves un couple de valeurs qui te permettent de dire que l'enregistrement en unique. Par exemple, une table personne (nom, prenom, date_de_naissance, fonction). Tu devra construire ta requete de suppression de la manière suivante : DELETE FROM personne WHERE nom = "TOTO" AND prenom = "Titi" AND date_de_naissance = "12/10/2000" En effet, tu as plus de chances d'avoir un enreigstrement unique avec ces trois critères que si tu ne prends que le nom. Cependant, si, sur ta table, tu as 2 enregistrements dont 9 champs sur 10 sont identiques et que tu ne donne un critère que sur ces 9 champs, tu vas supprimer les 2 d'un coup. Je te conseillerais donc de prendre en critère tous les champs de l'enregistrement.
En espérant avoir répondu à ta question
-- Michel GILLET Société AVALONE michel@avalone-fr.com |
| |
| |
| | | |
|
| | |
| |
Publicado el 23,noviembre 2004 - 17:32 |
Une solution me vient à l'esprit qui, si elle n'est pas la plus simple, a au moins le mérite de fonctionner. Il est possible, avec sql.nbcol et sql.titrecol, de récupérer la liste des colonnes de la table renvoyée. Il est donc possible de reconstruire de toute pièce une requête de suppression qui contient tout les champs de l'enregistrement retourné et leur valeur respective. Parmis ceux-ci ce trouve forcément la clé unique, qu'elle soit "simple" ou composée. Reste à prendre en compte le type de donnée ( pour mettre des ' à bon escient ) avec sqlColonne.
Frédéric. |
| |
| |
| | | |
|
| | | | |
| | |
|