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++Builder Discussion :

Probleme de liaison entre deux tables d'une base de donnees


Sujet :

C++Builder

  1. #21
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Citation Envoyé par blondelle
    C'est pour les recherches elles vont se faire sur le nom de l'Autheur c'est pour cela que j'avais pense aux deux champs
    honnetement je vois pas ou est le problème...
    Alors, je ne sais pas quels sont tes connaissances en DB mais bon...

    alors en partant du principe qu'on a une table AUteur, et une table livre avec IDAuteur en foreignkey (clef etrangère).
    Une requete de cherche de livres par nom d'auteur donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM t_livre 
    INNER JOIN t_auteur ON t_livre.IDAuteur = t_auteur.IDAuteur
    where t_auteur.nom like 'mon_param'
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM t_livre 
    NATURAL JOIN t_auteur
    where t_auteur.nom like 'mon_param'
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM t_livre 
    where t_auteur.nom like 'mon_param' and t_auteur.IDAuteur = t_livre.IDAuteur

    EN revanche, je n'arrive pas à situer si le pb relève de la conception ou de la technique dans BCB, comme semble le pensait Sunchaser.
    D'ailleurs, j'ai tendance à préférer les TQuery aux TTable qui offre plus de souplesse au travers du SQL...mais cela suppose d'en connaitre un minimum

    Bon courage

  2. #22
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Merci pour ta reponse say:
    Alors, je ne sais pas quels sont tes connaissances en DB mais bon...
    Niveau connaissances bases de donnees c'est le troisieme sous-sol
    Je n'ai que deux composants pour l'instant TADOConnection et TADOCommande pour creer ma Base en dynamique.
    Voila ou j'en suis avec mon champ INDEX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // on cree une table vide
            ADOCommand1->CommandText = "CREATE TABLE auteur";
            ADOCommand1->Execute();
     
    // creer les champs 
            ADOCommand1->CommandText = "ALTER TABLE auteur ADD ID_Ste INTEGER";
            ADOCommand1->Execute();
            ADOCommand1->CommandText = "CREATE UNIQUE INDEX idxPrimary ON auteur (ID_Ste) WITH PRIMARY";
            ADOCommand1->Execute();
    Je pense qu'il faut "CREATE UNIQUE INDEX" la commande UNIQUE.
    Je n'ai pas trouve comment faire pour que l'index s'increment en automatique
    Si je ne me trompe pas les commandes que tu a donne c'est pour faire la liaison entre les deux tables.

  3. #23
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Citation Envoyé par blondelle
    Si je ne me trompe pas les commandes que tu a donne c'est pour faire la liaison entre les deux tables.
    En fait, c'était pour répondre au fait que tu voulais utiliser une clef et le nom, et te montrer que ce n'est pas nécessaire.

    en revanche, j'avais pas vu que tu voulais créer les tables depuis l'interface, et donc finalement, tu cherches surtout la syntaxe permettant de créer la clef autoincrémentée.

    peux tu repréciser ton pb et tes objectifs, je crois que je suis hors sujet dans mes réponses

    A+

  4. #24
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Citation Envoyé par blondelle
    Je n'ai pas trouve comment faire pour que l'index s'increment en automatique
    moi si!!!
    après une recherche google "access sql numéroauto"..j'ai trouvé ça :
    numauto en sql

    donc il reste qu'à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADOCommand1->CommandText = "ALTER TABLE auteur ADD ID_Ste COUNTER";
    Finalement, si j'ai bien compris, tu as 3 soucis :

    • notions de bases de données
    • SQL spécifique ACCESS
    • les DB et ADO dans BCB

  5. #25
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Alors, je cree mon programme champ par champ pour la creation et l'initialisation de la Base le critere temps et peu important on ne s'en sert qu'une fois.
    Les champs vont etre rempli par l'operateur a partir d'un support papier c'est pour cela que je construit de cette facon ma base quand je vais lire ou ecrire je cherche a ce que l'Edit1 corresponde au champ1 sinon ca devient tres vite un probleme pour s'y retrouver.
    En fait, c'était pour répondre au fait que tu voulais utiliser une clef et le nom, et te montrer que ce n'est pas nécessaire.
    Si cela fonctionne avec la clef primaire je ne vais pas chercher de complications.
    Par contre si on peut programmer la clef primaire pour qu'elle s'incremente en automatique ca m'interresse, les seuls documents que j'ai viennent des Tuto Delphi.

  6. #26
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Desole les post se sont croises.

  7. #27
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    J'ai quelques notion sur les bases de donnees, pour SQL et ADO je travail avec les supports Delphi et les exemples du Forum essentiellement

  8. #28
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Merci say:
    Alors j'ai fait l'essai il faut dabord definir le champ comme compteur puis comme clef primaire.
    Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // on cree une table vide
            ADOCommand1->CommandText = "CREATE TABLE auteur";
            ADOCommand1->Execute();
    // creer les champs
            ADOCommand1->CommandText = "ALTER TABLE auteur ADD ID_Proc COUNTER";
            ADOCommand1->Execute();
     
            ADOCommand1->CommandText = "CREATE UNIQUE INDEX idxPrimary ON auteur (ID_Proc) WITH PRIMARY";
            ADOCommand1->Execute();

  9. #29
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    vi, vi je sais, j'ai fait le test sur un prog à moi

    il reste quoi comme soucy?

  10. #30
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Alors dans la requette:
    ADOCommand1->CommandText = "CREATE UNIQUE INDEX idxPrimary ON auteur (ID_Proc) WITH PRIMARY";
    Si j'ai bien compris on ne peu pas avoir deux fois la meme valeur dans le champ

    Dans les champs numerique est ce que l'on peu parametrer le nombre de chiffres comme pour du texte (je n'ai pas encore fait de teste)

  11. #31
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Alors...
    Comme je te le disais plus haut...la clef primaire garantie l'unicité..c'est-à-dire qu'elle est donc unique.
    Ce qui garantie que ton COUNTER soit unique vient plus du fait que tu le mets en clé primaire que du fait qu'il soit en autoincrément.

    Dans l'absolu, il est par défaut unique, mais (par expérience), il arrive qu'Access vienne à s'embrouiller avec ça.

    Pour ce qui est de forcer le nombre de chiffres...il me semble que c'est possible, cependant en SQL, je sais pas comment.

    Mais est-ce nécessaire? Dans l'absolu une clef primaire est une clef technique et n'a pas vocation à être fonctionnelle. Si c'est pour tes utilisateurs, tu peux tjrs formatter à l'affichage uniquement.

    bon courage

  12. #32
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Merci pour ton aide say:
    Si on ne peu pas parametrer le nombre de chiffre je le ferais a la saisie.
    Le squelette de ma Base est presque termine le meilleur arrive je vais ecrire dedans apres j'irais lire et apres les requettes
    Plein de joie en perspective
    Je met un resolu sur ce post.
    Encore une fois merci say ainsi qu'a tous les autres FORUMERS

  13. #33
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Pour parametrer le nombre de chiffres il faut executer la requette suivante
    ADOCommand1->CommandText = "ALTER TABLE Livre ADD CODE NUMERIC(10,0)";
    ADOCommand1->Execute();

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Probleme de liaison entre un formulaire et une base de données chez OVH
    Par Raphaelphp dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 29/11/2011, 12h22
  2. Probleme de relation entre deux tables
    Par Mimisio dans le forum Modélisation
    Réponses: 5
    Dernier message: 17/07/2007, 14h30
  3. Liaison entre deux tables
    Par knoll dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/02/2007, 17h23
  4. [VBA-A] liaison entre deux tables
    Par lumbroso dans le forum VBA Access
    Réponses: 16
    Dernier message: 01/06/2006, 10h22
  5. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11

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