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 :

[débutant] Requête SQL sur 2 tables


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 18
    Points
    18
    Par défaut [débutant] Requête SQL sur 2 tables
    Bonjour,

    Alors je veins à peine de commencer à m'intéresser à Access et j'aimerais savoir comment avoir accès à deux tables séparées en une requête.

    Voilà le Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= C:\Users\Documents\BDD Access\BDD_2.mdb;"
                strSql = "SELECT Equipes.* FROM Equipes"
                ObjetConnection = New OleDbConnection()
                ObjetConnection.ConnectionString = strConn
                ObjetConnection.Open()
                ObjetCommand = New OleDbCommand(strSql)
                ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
                ObjetCommand.Connection() = ObjetConnection
                ObjetDataAdapter.Fill(DataSet1, "Equipes")
                DataTableEquipes = DataSet1.Tables("Equipes")
                DataTableJoueurs = DataSet1.Tables("Joueurs")
    J'ai la table "Equipes" et la table "Joueurs" lorsque j'exécute le code tel que vous le voyez depuis un programme VB, seul le "DataTableEquipes" contient bien la table "Equipes", le DataTableJoueurs reste vide.

    L'idée c'est que j'aimerais avoir accès aussi à cette table et donc je voudrais savoir si il faut refaire une autre requête ou si on peut avoir accès aux deux tables en ne faisant qu'une seule requête.

    Voilà merci d'avance pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Ca c'est du code VB.NET pas du VBA. Access ne comprend pas cette version de VB.
    Philippe.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    Euh oui c'est du VB.Net mais ca marche très bien j'ai Office 2007 et j'arrive à récupérer les données dans mon appli VB.Net

    C'est juste que j'arrive à accéder qu'à une seule table de la base de données à moins de fermer la connection et d'en recréer une auter en changeant de table, à chaque fois que j'ai besoin d'accéder à une autre table ( ce qui est pas très pratique : /)

    En fait j'arrive pas à accèder à 2 tables en même temps

    EDIT : J'ai peut-être oublier de préciser que le but c'est de remplir un DataSet grâce à "fill" et c'est dans ce dataset que j'aimerai charger les deux tables pour pouvoir ensuite y accéder.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Ok, tu utilise uniquement la base de données d'Access.
    A mon avis, tu peux garder la même connexion ouverte, mais tu vas devoir instancier 2 objets Command avec une saql propre à chaque tables.
    Le dataadapter devrai rester le même.
    Tu peux aussi poster ta question sur le forum Visual Basic.NET, plus adapté.
    Philippe

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    dans le code que tu nous mets il n'y a qu'une requete, et qu'une execution de requete, donc tu n'as qu'un jeu de résultats
    si tu veux 2 tables prends 2 objets ou alors fait une jointure dans ta requete

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Si tu utilises une version non express de VS, tu peux utiliser les assistants "Sources de données" pour générer tes dataset à partir de plusieurs tables, je le fais souvent, pour des données provenant de SQL Server et Oracle.

    Si tu utilises une version Express, tu peux tout de même générer des DataSet pour des bases SQL Server, il me semble.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    oui mais quel type de jointure parce que j'ai trouvé des articles avec une quantité astronomique de jointure mais je sais pas laquelle il faut prendre.

    Sinon je pense avoir réussi mais je dois changer d'objet command à chaque fois que je veux changer de table, donc si je suis sur la table equipes et que je veux passer sur la table joueurs je doit faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    strSqlJoueurs = "SELECT Joueurs.* FROM Joueurs"
                ObjetCommandJoueurs = New OleDbCommand(strSqlJoueurs)
                ObjetDataAdapter = New OleDbDataAdapter(ObjetCommandJoueurs)
                ObjetCommandJoueurs.Connection() = ObjetConnection
                ObjetDataAdapter.Fill(DataSet1, "Joueurs")
                DataTableJoueurs = DataSet1.Tables("Joueurs")
    En gros impossible d'avoir plus d'une table à la fois dans le DataSet.
    Enfin si il faut faire comme ca ben ca ira ^^

    Si vous pouviez juste me donner une petite précision sur la jointure à utiliser pour que je teste et voir si c'est pas pus pratique.

    Merci de votre aide en tout cas

    EDIT : j'avais pas vu ton message SaumonAgile désolé, j'ai la version express de VB mais j'ai pas regardé si il y avait quelque chose pour gérer les bases de données acces je vais voir ca merci

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    tout dépend de ce que tu veux au final


    par exemple pour avoir la liste des joueurs ainsi que le nom de leur equipe il faut un truc dans le genre :

    select J.*,E.nom
    from joueurs J inner join equipes E on J.id_equipe = E.id_equipe

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    C'est bon j'ai trouvé il y a un assisstant bas de données qui crée automatiquement un DatSet avec les données de la base de données qu'on lui indique.

    On peut ainsi sélectionner les tables et même les Champs qu'on veut y faire figurer.

    Merci à tous pour votre aide

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

Discussions similaires

  1. [SQL] Problème avec script de pagination et requête sql sur deux tables
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h06
  2. problème de requête SQL sur 3 tables pour un while
    Par carmen256 dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/04/2006, 16h55
  3. requêtes sql sur plusieurs tables
    Par zahiton dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/11/2005, 10h59
  4. [SQL] requêtes SQL sur plusieurs tables
    Par zahiton dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/11/2005, 16h32
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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