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

C# Discussion :

Gestion d'une DBB via Access en C#.


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut Gestion d'une DBB via Access en C#.
    Salut je viens vous présenter un petit problème que je rencontre :

    3 jours que je galère un peu à cause de mon manque de connaissance en SQL surement (je reprend le programme d'un collegue, pas toujours facile de comprendre ce que font les autres).

    Bref, voici les tables :

    Nom : bddcadrerouge.png
Affichages : 69
Taille : 81,1 Ko

    Ici on s'intéresse à ce qui est encadré en rouge car c'est là que se situe mon problème.

    Ensuite la requête SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (cbRchType.Text == "Cosse") 
                    {
                        req = " SELECT Cosses.*, Pinces.DocTechPince, Positionneurs.DocTechPos " +
                              " FROM (Pinces INNER JOIN Cosses ON Pinces.RefPince = Cosses.PinceElecAssociee) INNER JOIN Positionneurs ON (Positionneurs.RefPositionneur = Cosses.MatriceAssociee) AND (Pinces.RefPince = Positionneurs.PinceAssociee)";
     
                        TypeRecherche = "Cosse"; update_dgvTable(dropTable(req)); 
                    }
    Cette requête fais parti d'une méthode recherche dans ce programme, il permet d'afficher des recherches par critères dans une DataGridView.

    Voilà la table avec les différents cas de figures possibles :

    Nom : BaseAccessTest.png
Affichages : 72
Taille : 19,9 Ko

    Et voici ce qu'il s'affiche lors de la recherche :

    Nom : ResultatRecherche.png
Affichages : 78
Taille : 11,9 Ko

    Bref, vous l'aurez compris tout ne s'affiche pas. Je pense que cela viens de la requête sauf qu'étant débutant en SQL je ne comprend pas ce que mon collègue a voulu faire avec cette requête malgrés mes 3 derniers jours à lire de la doc...

    Merci d'avance, Vich.

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Regarde la différence entre INNER JOIN (l'enregistrement est éliminé si il n'y a pas de jointure) et OUTER JOIN (tous les enregistrements sont conservés, même si le champs de liaison est null).

  3. #3
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    il suffirais juste de remplacer les INNER JOIN par des OUTER JOIN ? x)

  4. #4
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    Malheureusement Access n'a pas l'air d'aimer les OUTER JOIN ...

    "Erreur de syntaxe dans l'opération JOIN ... " Qu'il me dit ... J'ai vérifié la synthaxe sur MSDN et normalement y'a pas de soucis.

  5. #5
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    Petit up car je coince :/.

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Peux-tu poster la requête ? Il y a peut-être un problème dans la syntaxe.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    Encore toi Matt :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                    if (cbRchType.Text == "Cosse") 
                    {
                        req = " SELECT Cosses.*, Pinces.DocTechPince, Positionneurs.DocTechPos " +
                              " FROM (Pinces INNER JOIN Cosses ON Pinces.RefPince = Cosses.PinceElecAssociee) INNER JOIN Positionneurs ON (Positionneurs.RefPositionneur = Cosses.MatriceAssociee) AND (Pinces.RefPince = Positionneurs.PinceAssociee)";
     
                        TypeRecherche = "Cosse"; update_dgvTable(dropTable(req)); 
                    }
    D'après ce que j'ai lu encore une fois, il suffirais juste de remplacer les INNER JOIN par des OUTER JOIN mais le message d'erreur est "Erreur de syntaxe dans l'opération JOIN" donc oui, il y a une erreur de syntaxe x).

  8. #8
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Essaye LEFT JOIN ou RIGHT JOIN à la place de OUTER JOIN.

  9. #9
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    Déjà essayé, il me met expression non supportée. Il doit y avoir une combine en Access.

  10. #10
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    C'est peut-être à cause des parenthèses, il n'est pas nécessaire d'en mettre. Essaie avec ça :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    req = " SELECT Cosses.*, Pinces.DocTechPince, Positionneurs.DocTechPos " +
    " FROM Pinces OUTER JOIN Cosses ON Pinces.RefPince = Cosses.PinceElecAssociee OUTER JOIN Positionneurs ON Positionneurs.RefPositionneur = Cosses.MatriceAssociee AND Pinces.RefPince = Positionneurs.PinceAssociee";
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  11. #11
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    Bien pensé mais non malheureusement ce n'est pas ça.

  12. #12
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Hmmh c'est étrange, en tout cas Access supporte bien les jointures externes : http://office.microsoft.com/en-gb/ac...001034555.aspx
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  13. #13
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    Oui effectivement. Sinon il y a peut-etre un moyen de contourner cela ?

  14. #14
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Là je ne sais pas trop, je n'ai pas Access sur mon poste au boulot Si tu lances la requête ci-dessous dans Access directement, est-ce que ça fonctionne correctement ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 	  Cosses.*
    	, Pinces.DocTechPince
    	, Positionneurs.DocTechPos
    FROM Pinces
    	LEFT OUTER JOIN Cosses ON Pinces.RefPince = Cosses.PinceElecAssociee
    	LEFT OUTER JOIN Positionneurs ON Positionneurs.RefPositionneur = Cosses.MatriceAssociee AND Pinces.RefPince = Positionneurs.PinceAssociee
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  15. #15
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    J'ai essayé de bidouiller un peu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    req = " SELECT DISTINCT Cosses.*, Pinces.DocTechPince, Positionneurs.DocTechPos " +
    " FROM Cosses, Pinces, Positionneurs";
    Cela donne : Nom : BDDDoublon.png
Affichages : 73
Taille : 22,3 Ko

    Soit des doublons, quelqu'un sais comment éviter ça alors que il y a déjà un SELECT DISTINCT ?

    Merci encore pour votre aide précieuse.

  16. #16
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    Lorsque je rentre la requête SQL dans Access les erreurs sont suivant ou je met les parenthèses.

    Si je les mets comme sur mon exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT 	  Cosses.*
    	, Pinces.DocTechPince
    	, Positionneurs.DocTechPos
    FROM (Pinces
    	LEFT OUTER JOIN Cosses ON Pinces.RefPince = Cosses.PinceElecAssociee)
    	LEFT OUTER JOIN Positionneurs ON (Positionneurs.RefPositionneur = Cosses.MatriceAssociee) AND (Pinces.RefPince = Positionneurs.PinceAssociee);
    Il me met que l'expression JOIN n'est pas supportée.

    Si je met aucune parenthèse il met met erreur de syntaxe.

  17. #17
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Oublie les parenthèses, elles ne servent à rien, donc tu peux dois les enlever Une fois que tu as fait ça, peux-tu poster le message d'erreur complet ?

    Pour le post précédent, tu as des doublons car tu réalises un produit cartésien. Il faut éviter de l'employer, sauf dans certains très précis, car le résultat peut être très volumineux.

    [EDIT] : correction par rapport à l'utilisation des parenthèses qui sont bien nécessaires dans Access
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  18. #18
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    Voilà l'erreur compléte :

    Nom : ErreurAccess.png
Affichages : 74
Taille : 24,3 Ko

  19. #19
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Merci. Je retire ce que j'ai dit au sujet des parenthèses, apparemment il en faut dans Access (ça m'apprendra à ne pas avoir vérifié avant de poster ).

    Regarde ici, un sujet similaire a été posté : http://www.developpez.net/forums/d16...ft-outer-join/

    Donc à priori avec ça, ça devrait rouler :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 	  Cosses.*
    	, Pinces.DocTechPince
    	, Positionneurs.DocTechPos
    FROM (Pinces
    	LEFT OUTER JOIN Cosses ON Pinces.RefPince = Cosses.PinceElecAssociee)
    	LEFT OUTER JOIN Positionneurs ON Positionneurs.RefPositionneur = Cosses.MatriceAssociee AND Pinces.RefPince = Positionneurs.PinceAssociee
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  20. #20
    Membre averti
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Par défaut
    Et bien non ^^'.

    "Expression JOIN non supportée". Access n'a pas l'air d'aimer, je suis sur une license officielle version 2010 donc il devrais pas y avoir de problèmes en théorie ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [SP-2010] Mise à jour d'une liste via Access
    Par fclus dans le forum SharePoint
    Réponses: 2
    Dernier message: 08/01/2013, 14h59
  2. gestion d'une carte via un port serie
    Par leo_OrNg dans le forum Composants
    Réponses: 1
    Dernier message: 04/12/2008, 16h41
  3. Gestion d'une cantine sous ACCESS
    Par mystikgirl30 dans le forum Access
    Réponses: 13
    Dernier message: 02/03/2007, 15h33
  4. se connecter à une base mysql via access
    Par Thom N2h dans le forum Access
    Réponses: 3
    Dernier message: 28/11/2005, 23h54
  5. commander une carte fax via access
    Par dpie dans le forum Access
    Réponses: 5
    Dernier message: 09/09/2005, 17h20

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