cs_zaatout
Messages postés156Date d'inscriptiondimanche 19 novembre 2006StatutMembreDernière intervention20 novembre 2013
-
26 avril 2008 à 11:47
cs_zaatout
Messages postés156Date d'inscriptiondimanche 19 novembre 2006StatutMembreDernière intervention20 novembre 2013
-
27 avril 2008 à 15:03
Bonjour les Amis
comment ecrire la rêquete suivante
j'ai une table stock et autre compta
les champs stock :
date ,nbr,mtbr,compte,struct,etat
les champs compta :
arr,piece,br,mt,cpte,etat1
je voudrais cherche les numeros (nbr) qui existe en stock et qui n'existe pas en compta (br)
et les inserés dans la table tstk qui comporte les même champs que stock.
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 26 avril 2008 à 12:44
Salut,
Est_ce que nbr de Stock et br de Compta sont de même type ?
Si oui, fais une requete de non correspondance.
Lies ta table Stock à Compta sur nbr d' un coté et br de l' autre.Propriétés de la relation: Tout de Stock et seulement
ceux de Compta pour lesquels les enregistrements sont égaux.
Sélectionnes ensuite tout les champs de Stock avec la condition Compta.br est null.
Tu pourras ensuite faire l' Insertion du résultat de cette requete dans tstk.
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 26 avril 2008 à 14:42
oui oui j' ai compris !
le numero qui exite en stock et non pas en compta...
Bon , fais d' abord ta requete Selection
"SELECT DISTINCTROW Stock.sDate, Stock.nbr, Stock.mtbr, Stock.compta, Stock.struct, Stock.etat
FROM Stock LEFT JOIN compta ON Stock.nbr = compta.br WHERE (((compta.br) Is Null));"
pour voir si elle te renvoit quelque chose.
Ensuite tu passeras à l' insertion.
Chez moi il n' y a pas d' erreur au niveau de la selection.
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 26 avril 2008 à 18:17
Salut
Zaatout : "ça ne marche pas" ne veut rien dire.
Soit tu as une erreur et tu nous diras laquelle, soit l'action n'insère pas de données et là c'est dans le SQL que ça se passe.
Pour info, la requète que tu nous a fourni fonctionne :
bdd.Execute "insert into tstk " & _
"SELECT stock.date, " & _
" stock.nbr, " & _
" stock.mtbr, " & _
" stock.compte, " & _
" stock.struct, " & _
" stock.etat, " & _ <-- Pas de virgule finale
" FROM stock " & _
" where nbr not in (select br from compta)"
sauf :
- Qu'il ne faut pas de virgule après le dernier terme, celui juste avant le FROM
- Par précaution, désigne le nom de la table dans chaque champ car ici les deux tables tstk et stock comportent les mêmes noms de champ :
" where stock.nbr not in (select compta.br From compta)"
Cette mise en forme est aussi possible :
bdd.Execute "insert into tstk " & _
"SELECT tstk.date = stock.date, " & _
" tstk.nbr = stock.nbr, " & _
" tstk.mtbr = stock.mtbr, " & _
" tstk.compte = stock.compte, " & _
" tstk.struct = stock.struct, " & _
" tstk.etat = stock.etat " & _
" FROM stock " & _
" where stock.nbr not in (select compta.br from compta)"
De plus, pour contrôler l'insertion, la commande Execute accepte un deuxième paramètre permettant de renvoyer le nombre de lignes touchées par la requète :
Dim NbLignes As Long
bdd.Execute "insert into tstk ....", NbLignes
MsgBox NbLignes
PS : Merci d'avoir fait l'effort de la mise en forme de la requète beaucoup plus facile à lire (pas fréquent dans ce forum).
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)