IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Probleme Requete avec BDD access


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 115
    Points : 39
    Points
    39
    Par défaut Probleme Requete avec BDD access
    Hello,
    J'ai fignolé un petit programme, mais je bloque sur une requête depuis maintenant plusieurs semaines ...
    étant donné que je n'arrive pas à poster mon programme ici,
    si une ame bienveillante voudrait bien m'aider, je pourrait lui envoyer par mail...

    pour le problème, il s'agit d'une requête Update (imbriqué) à partir d'un DGW d'une autre requête.... c compliqué, c'est pour cela qu'il faut le programme sous les yeux je pense
    Merci

  2. #2
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Il y a surement moyen de sortir la partie problématique de l'ensemble du projet.

    C'est quoi le probléme et c'est quoi le but ? T'as une erreur ? ... ça fait rien ?

    Tu dois pouvoir illustrer ton probléme en sortant tout ce qui ne concerne pas le point où ça bloque.

    C'est un forum, il faut que tout le monde en profite !

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 115
    Points : 39
    Points
    39
    Par défaut
    Okai, je vais essayer d'être le plus claire possible.

    J'ai cette base de donnée sous access :


    J'affiche ensuite dans ListBox les recettes disponibles, c'est a dire, les recettes dont les Ingrédients nécessaire à sa préparation (QtéNécessaire) < Qtédispo grâce à la requete :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Trecette.NomRecette
    FROM Trecette
    WHERE (((Exists (SELECT * FROM Trec_ing WHERE Trecette.NomRecette = Trec_ing.NomRecette AND NOT EXISTS ( SELECT * FROM Tingredient WHERE Tingredient.NomIngredient = Trec_ing.NomIngredient AND Tingredient.QtéDispo >= Trec_ing.QtéNecessaire)))=False))
    ORDER BY Trecette.NomRecette;

    jusqu'ici, tout va bien.

    Seulement maintenant, je souhaite créé un bouton, qui lorsque je clique fasse un Update sur la Table Tingredient, en soustrayant les Qténecessaire au Qté dispo (QtéDispo-QtéNécessaire) de chaques ingredients dont dispose la recette.
    Et c'est à ce se moment la que ca bloque, lorsque j'essaile de faire une requette du type :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Tingredient SET QtéDispo = QtéDispo - Trec_ing.QtéNecessaire WHERE Trec_ing.NomRecette = ?
    dans le dataset de Tingredient
    et l'exécute à partir du bouton comment cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Me.TingredientTableAdapter.UpdateQuery(Me.textBox.Text)
            'Rempli la Table de donnée
            Me.TingredientTableAdapter.Fill(Me.BDDRecIngDataSet.Tingredient)
    La requête UPDATE est surement mauvaise, j'en ai essayé plein plus ou moins possible, mais rien de fonctionne...
    Quelqu'un serait ?

  4. #4
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Ok.

    Repose les bases car t'as premiére requête me semble déjà bien compliquée !

    Si je comprend tout, tu ne veux dans la listbox que les recettes dont tu as suffisamment d'ingrédient pour les réaliser.

    Si c'est le cas, il y a plus simple (je le fais en français ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Select nom from recette 
    where not exists (
    select * from ingredient inner join lien-ingredient-recette
    where ingrédient.quantité-qui-reste < lien-ingredient-recette.quantité-qui-faut
    and lien-ingredient-recette.nom = recette.nom
    )
    Cela dit, pour ton update, il va falloir que tu boucles car tu ne t'en sortiras pas avec un seul ordre SQL.

    Donc l'idée serait de faire un select des lien-ingrédient-recette (via un datareader par exemple) et pour chaque ligne faire un update pour l'ingrédient concerné avec la quantité nécessaire récupérée dans le reader.

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 115
    Points : 39
    Points
    39
    Par défaut
    Merci de ta reponce, pour la 1iere requête, elle fonctionne déjà à merveille la mienne, je met la tienne de coter, mais je me pencherai dessus quand mes autres problèmes seront résolue

    pour la 2nd requête, je comprend le principe, mais je ne voie pas comment l'appliquer ... si je pouvais avoir quelques précision, que j'y réfléchisse cette nuit
    merci

  6. #6
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Re.

    Et bien quand tu valides ta form, tu récupéres le nom de la recette qui est dans le combo.

    Tu fais un select sur la table lien ingrédient-recette en utilisant un DataReader (cf. F1) pour récupérer la quantité nécessaire et le nom de l'ingrédient.

    Pour chaque ligne lue via le DataReader, tu Updates la quantité dispo pour l'ingrédient correspondant (celui que tu viens de récupérer via le DataReader) avec un OleDb.OleDbCommand.ExecuteNonQuery par exemple si t'es sur une db Access (cf F1).

    Je peux pas être plus précis que cela sans te donner le code et donc te faire perdre la joie d'y être arrivé tout seul !

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 115
    Points : 39
    Points
    39
    Par défaut
    merci je mis met, la nuit sera longue

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 115
    Points : 39
    Points
    39
    Par défaut
    J'ai finalement réussi via la première solution,
    poru ce qui est du datareader .... j'y ai passé plusieurs H, rien ....

  9. #9
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Citation Envoyé par theoffss Voir le message
    J'ai finalement réussi via la première solution,
    poru ce qui est du datareader .... j'y ai passé plusieurs H, rien ....
    C'est à dire en un seul update ?

    Si c'est le cas, je suis preneur de l'ordre SQL car cela me semblait impossible.

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 115
    Points : 39
    Points
    39
    Par défaut
    oui, en un seul update :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE       Tingredient INNER JOIN
                             Trec_ing ON Tingredient.NomIngredient = Trec_ing.NomIngredient
    SET                Tingredient.QtéDispo =QtéDispo-QtéNecessaire
    WHERE        NomRecette LIKE ?

    puis un tout simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Me.TingredientTableAdapter.UpdateQuery1(Me.NomRecetteListBox.SelectedValue)
            'Rempli la Table de donnée
            Me.TingredientTableAdapter.Fill(Me.BDDRecIngDataSet.Tingredient)
    pour le Bouton.

    Pour ce que tu m'avais conceillé, ça m'intringue, j'aimerai comprendre

  11. #11
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Un update inner join !!!!!!!!!!! Je savais même pas que c'était possible ce truc !

    Bah, pour la solution que je proposais, te torture pas, la tienne est bien plus élégante !

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme requete avec access
    Par k_boy dans le forum VB.NET
    Réponses: 7
    Dernier message: 26/11/2009, 18h39
  2. probleme requete avec access
    Par k_boy dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/11/2009, 11h44
  3. [WD9] Probleme requete avec SQLExec
    Par flecheverte dans le forum WinDev
    Réponses: 3
    Dernier message: 13/02/2007, 10h01
  4. [MySQL] probleme requete avec comparaison du temps ecoule
    Par arnogef dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/11/2006, 20h11
  5. [C#]Problème OleDbCommand.ExecuteReader avec BdD Access
    Par Renesis57 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/09/2006, 18h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo