Aide - Recherche - Membres - Calendrier
Version complète : Probléme avec Access et les requête SQL, aidez moi
Trucs et astuces Express > Discussions Informatique > Microsoft Office 2003 / 2007 > Access
LohR
Salut tout le monde!
alors voila je suis nouvelle sur le forum je m'appéle Laure, j'ai 18piges et chuis en terminal STT informatique de gestion, et donc je suis entrain de faire mon activité du bac qui est sur ACCESS et sur le SQL et donc j'ai petit probléme, j'aimerai savoir si est-ce quelqu'un s'y connait en Access (visual basic) et en SQL svp???
je vous remercie d'avance de votre aide!
@bientôt j'espére! icon_wink.gif
dafou
salut, oui il a surement quelqu'un qui peut te répondre
LohR
c'est sympa merci, alors voila ou chuis bloké avec visual basic access :
j'ai une base de donnée avec des clients des factures et des produits; quand un client fait une commande il faut que la quantité commander soit retiré des stocks donc de la table "produit", c'est-à-dire, je dois taper une requette SQL dans le code visual basic acces pour faire une mise à jour de cette table à chaque produit commandé donc retirer des stoks.
voici le début du code, à la place des points d'intérrogations il doit y avoir une ou des requettes SQL.
CODE
Private Sub Commande6_Click()
Dim Bd As Database, Rs As Recordset


Set Bd = Application.CurrentDb
   Dim StrReq As String

Set Rs = Bd.OpenRecordset("??????????????), dbOpenDynaset)

  StrReq = "????????????????????.
   
   DoCmd.RunSQL StrReq

Set Rs = Nothing
Set Bd = Nothing


PS : je débute en SQL!
et je pense que la requete doit commencer par "update..." m

merci bcp d'avance.
Webmaster
SQL
UPDATE ta_table SET champ = value, champ2 = value2 WHERE identificateur_produit = numéro_produit


et ainsi de suite icon_wink.gif
LohR
CITATION(Webmaster @ 17-01-2006 - 11:14)
SQL
UPDATE ta_table SET champ = value, champ2 = value2 WHERE identificateur_produit = numéro_produit


et ainsi de suite icon_wink.gif

aahh merci, je vais essayé pour voir mais avant ya moyen que tu m'explique un chti peu stp??
dafou
le where est bien important, sinon c'est tous les produits que leur quantité va changer, expérience personnelle whistling.gif
Webmaster
CITATION(dafou @ 18-01-2006 - 13:14)
le where est bien important, sinon c'est tous les produits que leur quantité va changer, expérience personnelle whistling.gif

ptdr.gif je men rappel ouais ptdr.gif
LohR
oui je sais t'inkiéte!! icon_mrgreen.gif icon_mrgreen.gif
merci infiniment les gars! je vous tiendrais au courant! icon_wink.gif
micbar
CITATION(Webmaster @ 17-01-2006 - 11:14)
SQL
UPDATE ta_table SET champ = value, champ2 = value2 WHERE identificateur_produit = numéro_produit


et ainsi de suite icon_wink.gif

Juste une remarque, peut être idiote,ce ne serait pas DELETE au lieu de UPDATE ?
Cordialement
dafou
CITATION(micbar @ 19-01-2006 - 13:38)
Juste une remarque, peut être idiote,ce ne serait pas DELETE au lieu de UPDATE ?
Cordialement

Non, ici elle voulait mettre des champs à jour, pas supprimer des lignes.
LohR
Sayé j'ai trouvé les forumles mais elles ne marche toujours pas et j'arrive pas à trouver pourquoi? j'ai passé 3 jours la dessus et je trouve pas pourtant c'est logique pour moi.
alors voila mes 2 requettes :

CODE
Private Sub Sauvergarder_Click()
Dim Bd As Database, Rs As Recordset

Set Bd = Application.CurrentDb
   Dim StrReq As String

Set Rs = Bd.OpenRecordset("SELECT N°PRODUIT FROM LIGNE_DE_FACTURE WHERE N°FACTURE =" & CStr(Me.N°FACTURE), dbOpenDynaset)

  StrReq = "UPDATE PRODUIT INNER JOIN PRODUIT ON LIGNE_DE_FACTURE.N°PRODUIT = PRODUIT.N°PRODUIT set PRODUIT.QTÉ_STOCK_PDT = [PRODUIT.QTÉ_STOCK_PDT]-[LIGNE_DE_FACTURE.QUANTITÉ_LIGNE_FACT]" & "where LIGNE_DE_FACTURE.N°FACTURE" & Me.N°FACTURE
           
   
   DoCmd.RunSQL StrReq

Set Rs = Nothing
Set Bd = Nothing


et voila le modéle relationnelle ou modéle logique :


si quelqu'un pourrais m'aidé par pitié lol ça serai vraiment simpa. innocent.gif
Helger
Hello.
Euh, j'ai un gros doute sur ton set qui ne fait appelle qu'à une table, malgré le "inner join" de la requête.
Je pense que les deux tables doivent être appelées avant.
(Les spécialistes de Sql, à vos claviers. icon_mrgreen.gif ).

Sujet déplacé. tongue.gif
dafou
si je me fis à ma grande connaissance, et dieu comment je suis intelligent whistling.gif d'après moi, dans le select, tu n'as pas besoin de mettre ton where vu qu'il est dans le recordset. Et je ne vois souviens pas qu'on puisse mettre un inner join.
LohR
le prof nous a donné la moitié de la phrase parce qu'on a pas les base du SQL et donc on peut pas le deviné! je vien juste d'apprendre le SQL moi et j'essaye de comprendre cette requette, j'ai réussi à remplir ce qu'il fallait remplir dans cette requette, mais ça fonctionne toujours pas! dite moi ce que je doit changer ce que je doit enlevé!
ya un autre truc aussi c'est que je travaille mon activité principalement au lycée, et au lycée y ACCESS 2000 et chez moi j'ai ACCESS Xp! est-ce que ça change quelque chose à votre avis?
exit26
pour decouvrir sql il peut etre ineterssant de passer par une requete classique pour voir ce qui se passe puis celle ci au piont de demander l'affichage sql. le code genere est impeccable. mai_chinese.gif
dafou
Les requêtes de base en SQL sont assez simples

CODE
select champ1, champ2, champ3 ... from table1, table2, table3 ...

insert into table champ1, champ2, champ3 ... values valeur1, valeur2, valeur3 ...

delete table

update table set champ1 = valeur1,  champ2 = valeur2 ...


Il ne faut pas oublier les where, sinon ça donne beaucoup de champs avec un select (nbChamps_Table1 * nbChamps_tables2 * ...) alors que dans les trois autres cas, ça affecte toute la table et non le champ que tu voulais modifier.

Pour ce que tout ce qui touche les join, union, etc. ça touche juste au select.

En espérant que je t'ai aidé et non nuit
Helger
CITATION(dafou @ 23-01-2006 - 20:31)
et non nuit

Euh, c'est à dire ? icon_mrgreen.gif
LohR
je connaissait deja le select mais pas les autres merci infiniment Dafou!
mais je ne comprend toujours pas où est l'erreur dans ma requette!! sad.gif pour moi elle est logique!!
dafou
l'erruer est surement dans le update, mais je me demande juste une chose, pourquoi a tu mis le recordset et la database a Nothing au lieu de les fermer?
LohR
CITATION(dafou @ 25-01-2006 - 21:57)
l'erruer est surement dans le update, mais je me demande juste une chose, pourquoi a tu mis le recordset et la database a Nothing au lieu de les fermer?

euh...je sais pas c'est pas moi qui l'a mis! j'ai tenté de comprendre pourquoi le prof l'a mis mais apparement lui non plus il ne sais pas! faut savoir que c'est pas un prof d'info mais un prof de compta qui apprend en même temps que nous l'informatique! et ce code apparement il l'a trouver sur le net! huh.gif
si j'avais un vrai prof d'info j'aurai trouvé depuis longtemps... dry.gif
Helger
Hello.
Euh, question bête, mais elle est où la clé correspondante entre les deux tables ? blink.gif
LohR
je comprend pas ta question...rrhoo et puis laisser tomber! tant pis!
merci infiniment pour vous, vous m'avez vraiment aidé, même si c'est pas dans l'activité, dans le SQL en général!
merci icon_drink.gif
Helger
Hello.
Tu attaques deux tables, "Produits" et N° de facture", non ?
Quelle est la relation entre les deux tables ? Je n'arrive pas à la voir. icon_mrgreen.gif
LohR
hello
nop, j'utilise la table PRODUIT et LIGNE_DE_FACTURE.
N°PRODUIT fait partie de la table PRODUIT, et LIGNE_DE_FACTURE c'est là où il y a l'enregistrement de la commande que le client va commander!
Ceci une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquez ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.