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 :

Liaison Adotable, adoquery, dbgrid, sur 2 tables.


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut Liaison Adotable, adoquery, dbgrid, sur 2 tables.
    Bonjour

    Suite a mon poste precedent j'ai trouver que jet 4.0 ne supportait pas les modifications sur les tables comportants plus de 99 champs...
    J'ai donc diviser en 2 ma table. Apres avoir farfouiller un peu j'ai trouver un tutaurial pour lier 2 tables (il date, dommage) grace a 2 Adotables et 2 datasources. J'ai ensuite relier le adotable 1 a la datasource 2 par le mastersource.
    J'ai par la suite placer un adoquery, relier a la datasource 1 pour pouvoir faire des requetes de tries (je ne connais pas la syntaxe avec un adotable, ni meme si c'est possible...).
    Donc cela ressemble maintenant a ca :




    Ma dbgrid est relier a la datasource1, au lancement elle reste vide... quand j'insere une valeur un nouvelle ligne est creer. Le trie ne fonctionne plus, pas de messages d'erreur mais la bdgrid est juste rafraichi.

    C'est dommage, j'avais presque fini.... La limitation gache tout

    Je suis un peu perdu... pouvez vous m'aider ?
    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut
    Bon, finalement j'ai virer les 2 adotables, laissant un seul adoquery avec la requete "Select * from blabla1, blabla2" relier a une seule datasource...
    Le probleme c'est que je ne vois toujours pas s'il faut que je relie les tables dans access, ou si je dois faire une manip particuliere en delphi...

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Par défaut
    Salut,

    Un passage dans la section tutoriel sur SQL te feras avancée plus vite.
    Néammoins je te donne une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT 
        TBL1_CHAMPS1,TBL1_CHAMPS2,
        TBL2_CHAMPS2
    FROM TABLE1
    JOIN TABLE2 ON (TBL1_CHAMPS1 = TBL2_CHAMPS1)
    Et que
    TBL1_CHAMPS1 et TBL2_CHAMPS1 doivent être de même type
    Bon Dev.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut
    J'ai utiliser l'analyse d'access pour diviser ma table en 9 tables...
    Il a mis automatiquement des "numéro" en numéroauto dans 8 tables, un N° en numéroauto egalement, dans la table principal.
    Dans la table principal j'ai aussi des "Se refere a blabla1"... ainsi que "blabla2_numéro" (d'ailleurs je en sais pas pourquoi je me retrouve avec 2 choses differentes...).
    Sous delphi j'ai donné comme requete a mon adoquery "Select * from blabla1...9"
    Tout les DBEdit se sont reatribuer tout seul.

    J'ai lancer le programme et ma dbgrid est rester vide (elle contient tout les champs de toutes mes tables).... et quand j'ai essayer d'ajouter une valeur, un nouvel enregistrement s'est crée avec un numero en auto increment...
    Je ne comprend plus rien

    Pourquoi les enregistrements deja presents dans ma premiere table ne s'affiche pas dans ma dbgrid ? Comme les enregistrements ne sont pas presents je ne peux pas tester les "connexions" des differentes tables, mais, a premiere vue, elles fonctionneront ?


    Merci d'avance.

  5. #5
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Par défaut
    Salut,
    Sans plus d'infos sur tes tables, je risque de ne pas pouvoir t'aider.

    A+

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut
    Desolé, j'ai deja fait 2 postes pour resoudre deux problems precedent, sur ce meme programme. Bien evidemment tu n'es pas forcement au courant


    Donc j'explique.

    Je reçoit par internet des "fiches" contenant des infos sur des personnes, ces fiches sont en format excel .csv, les donnees sont toujours rangees dans le meme ordre. Je dois creer un programme qui permet a une personne totalement neophyte en matiere d'informatique de mettre a jour ces fiches tout en rajoutant des donnees apres avoir telephoner aux personnes decritent sur les fiches.


    Pour ca j'ai donc créé :

    _Une base de donnee Access contenant une unique table.
    _les champs de la table sont organisé de maniere a ce que je puisse importer les fiches sans problemes.
    _Un programme sous delphi avec :

    Form1 = DBGrid, DBEdit qui affiche les donnees quand on clique sur une ligne de la DBGrid, un bouton de trie en fonction de la valeur de la donnee "bon_numero", 2 bouton rentrant automatiquement dans la ligne selectionner un V ou F dans le champ "Bon_numero" + ouverture de la form3 si V.

    Datamodule2 = ADOconnection lié a ma base de données, ADOquery (Select * from Table1), Datasource relier a ADOquery.

    Form3 = Ensemble de bouton remplissant des champs de l'enregistrement selectionner dans la form1 + bouton vers la form4.

    Form4 = Recapitulatif dans des DBEdit des donnees inscrites dans les form precedentes + un ensemble de DBEdit + dbchexbox + dbcombobox mettant a jour encore d'autres champs.



    Voila, grace a l'aide de Malatar, sur ce forum, j'avais reussi a tout faire fonctionner.... jusqu'a ce que j'arrive a 100 champs differentes...

    Erreur "la requete est trop complexe" j'ai decouvert que jet 4.0 ne supporte pas les modifications sur des tabes de plus de 99 champs...

    Depuis j'essaye de trouver un moyen de diviser ma table en au moins 2 parties sans trop trop compliquer le programme...

    Je ne pense pas pouvoir developper plus

    Vous voyez un moyen d'y arriver ?


    PS: J'essaye de mettre une relation 1 à 1 sur access, mais tout les tutoriaux que je trouve disent tous la meme chose "on prefere souvent mettre tout dans une meme table", mais je peux pas !

Discussions similaires

  1. [Firebird] Ajout d'enregistrements sur une table de liaison
    Par Pedro dans le forum Bases de données
    Réponses: 8
    Dernier message: 29/05/2013, 16h40
  2. [MySQL] Requête sur 4 tables - problème liaison / count
    Par Angel31 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/03/2012, 16h02
  3. Réponses: 11
    Dernier message: 30/11/2010, 09h44
  4. créer TRIGGER sur 1 table avec liaison sur 2 autre table
    Par shaka84 dans le forum Développement
    Réponses: 2
    Dernier message: 11/04/2006, 11h10
  5. Liaison sur 2 tables.
    Par ines09 dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 22h13

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