Requête SQL sous delphi

Résolu
toubal_99
Messages postés
45
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
29 juillet 2008
- 12 avril 2006 à 23:04
haceneking
Messages postés
5
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
23 juillet 2010
- 26 mars 2010 à 10:43
ma questions concerne sql mais je vais comeme la poser ici puisque je travaills sous delphi.
voici la requétte :
DELETE from Stock WHERE Stock.N_Lot <gras>( select Detail1.N_Lot from Detail1 JOIN Aprovisionnements on (Aprovisionnements.N_Service :N_Ser) and (Aprovisionnements.N_Apr = Detail1.N_Apr) )</gras>

le :N_Ser est un parametre qui est egale a 1 par exemple.
g essayer directement aussi :
DELETE from Stock WHERE Stock.N_Lot ( select Detail1.N_Lot from Detail1 JOIN Aprovisionnements on (Aprovisionnements.N_Service 1) and (Aprovisionnements.N_Apr = Detail1.N_Apr) )

il me sorte la meme ereure : Ereure a la creation du handle du curseur

a noter que meme quand j'utilise directement DELETE from Stock il me sorte la meme ereure sauf que cette fois il efface les enregistrements.

12 réponses

cs_Delphiprog
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
9 janvier 2013
32
13 avril 2006 à 23:29
Ok.
En regardant la requête SQL de plus près, je m'interroge sur l'utilité de demander une jointure avec la table approvisionnements. Cela n'a aucun sens et la requête peut être simplifiée ainsi :
DELETE FROM Stock
WHERE N_Lot = ANY ( SELECT N_Lot
FROM Detail1
WHERE Date_Per < "01/01/2005" )

En clair :
Supprimer les enregistrements de la table Stock pour lesquels le champ N_Lot figure dans une liste contenue dans la table Detail1 et pour laquelle le champ Date_Per est inférieur à 01/01/2005. C'est bien cela ?

Autre façon d'écrire cette requête :
DELETE FROM Stock
WHERE N_Lot IN ( SELECT N_Lot
FROM Detail1
WHERE Date_Per < "01/01/2005" )

May Delphi be with you !

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
3