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

Bases de données Delphi Discussion :

Delphi 6 et ADO


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Par défaut Delphi 6 et ADO
    bonjour
    Je veux faire une jointure entre commune et site (des tables access) en utilisant TADOQuery.
    A l’exécution de la requête je reçois le message suivant « le moteur de base de donnée microsoft jet ne peut pas la table ou la requête source commune »
    le code executé est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.Button1Click(Sender: TObject);
    var adoRecordset:TADOQuery;
    begin
      adoRecordset:=TADOQuery.Create(Owner);
      with adoRecordset do begin
       ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\oran\site.mdb;';
       CursorLocation:=clUseClient;
       CursorType:=ctStatic;
       LockType:=ltBatchOptimistic;
       SQL.Add('SELECT com.nom,site.nom FROM com,site WHERE com.MAPINFI_ID=site.MAPINFI_ID');
       Active:=True;
       DataSource1.DataSet:=adoRecordset;
       end;
    end;
    ADOQuery se connect a une seul table "voir ConnectionString",
    Est ce c possible de faire une jointure avec ADOQuery? si oui alors commen ?

  2. #2
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    salut,
    voila comment moi je procède en général:
    je construit ma requête sql à l'aide d'acces
    je copie le code sql que j'assigne à la propriété sql de mon TADOQuery
    j'ouvre le TADOQuery. si cette requete marche sous acces, alors elle marche aussi avec le TADOQuery (enfin sauf lorsque j'utilise certaines fonctions acces dans la requête)

    je pense que ta requête sql n'est pas très correcte, vu que tu veux faire une jointure entre 2 tables, mais que je ne vois nulle part l'instruction JOIN

  3. #3
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    Tout d'abord pour confirmer ce que te faisais remarquer Evarisnea, il est toujours préférable d'utiliser un join pour définir une jointure à la place d'une clause Where.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SQL.Add('SELECT com.nom,site.nom ' +'
                 'FROM com INNER JOIN site ' +
                 'ON com.MAPINFI_ID=site.MAPINFI_ID');
    Ensuite tu as écrit:
    ADOQuery se connect a une seul table "voir ConnectionString",
    Est ce c possible de faire une jointure avec ADOQuery? si oui alors commen ?
    Je me trompe peut-être, mais il me semble que tu confonds Base de données (*.mdb) et table.
    Un exemple de jointure entre table est simplement la chaîne SQL que j'ai écrite ci-dessus.

    Mais si tu veux faire une requête où joindre deux tables présentes dans deux Bases de données différentes, tu peux le faire également en précisant simplement le chemin d'accès à la base dans la clause FROM.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    FROM [MonLecteur:\MonChemin\MaBase.mdb].MaTable
    ...
    Voilà @+

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    Citation Envoyé par Claudius40
    Salut,
    Mais si tu veux faire une requête où joindre deux tables présentes dans deux Bases de données différentes, tu peux le faire également en précisant simplement le chemin d'accès à la base dans la clause FROM.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    FROM [MonLecteur:\MonChemin\MaBase.mdb].MaTable
    ...
    merci, ça je ne le savais pas

  5. #5
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    Je sais que ca marche parfaitement dans l'environnement Access, mais je ne l'ai jamais utilisé avec les compos TADO. Donc a tester !

    Salut Eva @+

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Par défaut
    [quote="Zouaoui"]Salut,

    j'ai trouvé cette solution en utilisant mapinfo et ces la méme chose que vous venez de mentionez.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    FROM [MonLecteur:\MonChemin\MaBase.mdb].MaTable
    ...
    Je me trompe peut-être, mais il me semble que tu confonds Base de données (*.mdb) et table.
    t'avait raison.
    merci a tout les forumiste

Discussions similaires

  1. delphi -> SQLserver via ADO ?
    Par shnider dans le forum Bases de données
    Réponses: 8
    Dernier message: 29/07/2006, 10h43
  2. connexion Delphi-ORACLE avec ADO
    Par hrezzaz dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/03/2006, 15h27
  3. [DELPHI 2005] Paramètre ADO, SQL Server et chaîne vide (' ')
    Par danbern dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/08/2005, 16h21
  4. [MS SQL Server 2000 - Delphi 6 Ent. - ADO ]
    Par paca_mike dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/07/2005, 21h27
  5. [Delphi 2005/Oracle/ADO]Taille de champ incorrecte
    Par Frank dans le forum Bases de données
    Réponses: 20
    Dernier message: 15/04/2005, 15h12

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