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 :

plusieurs tables avec un seul DBnavigator et DBGRID


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut plusieurs tables avec un seul DBnavigator et DBGRID
    bonjour,
    voila je voudrai à l'aide d'un seul DBnavigator et un seul dbgrid gerer les données de plusieurs tables.

    Donc avec le DBnavigator pour editer, faire de nouveaux enregistrement,... et le DBGRID qui afficherai tout ca

    la structure des tables se trouve dans ce dossier pdf
    http://www.iepsm.be/cours/bdd/Travail1.pdf

    qu'il n'y ai qu'un seul DBgrid n'est pas obligatoire, mais par contre obligé d'avoir un seul DBnavigator, je sais pas faire autrement.

    merci de votre aide.

    edit: j'ai oublié de dire que j'utilisais des ADOquery

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    c'est bon j'ai trouvé comment on faisais.

    je met la solution au cas ou ca pourrai servir a quelqu'un

    Donc dans mon ADOquery j'ai mis select *from Table1,Table2,Table3,...

    et donc j'ai toutes les tables qui sont liées entre elle et je peux ainsi gerer les 3tables simultanement a l'aide de mon dbnavigator et de mon dbgrid

    tellement simple que je n'y avais pas pensé lool

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Le problème c'est qu'avec ca , tu ne peux pas modifier tes tables, de plus si tu as des liaisons entre tes tables elles vont se faire n'importe comment et si tes tables n'ont pas le meme nombre de champs et qu'ils n'ont pas le meme nom, ca va te générer des lignes en plus.
    donc méfiance avec ta solution.

    Pour ma part j'aurais plus fait une listbox avec la liste des tables de la db et quand tu en sélectionnes une ca te l'affiche dans la dbgrid.

    Récupération des tables de la db :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Adoconnection.GetTableNames(lsttable.Items);
    sur le onclick de la listbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With AdoQuery do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select * from ' + lsttable.items.strings[lstTable.ItemIndex]);
      Open;
    end;
    Comme ton Adoquery est relié à la dbgrid via un datasource, tu as l'affichage en direct.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Malatar
    Le problème c'est qu'avec ca , tu ne peux pas modifier tes tables, de plus si tu as des liaisons entre tes tables elles vont se faire n'importe comment et si tes tables n'ont pas le meme nombre de champs et qu'ils n'ont pas le meme nom, ca va te générer des lignes en plus.
    donc méfiance avec ta solution.
    c'est bizarre que tu dise ca car je n'est pas le moindre problème, je peux modifier mes tables, les liaisons se font correctement et je n'est pas de lignes en plus, tout fonctionne bien comme si j'avais 3 DBGRID et 3 DBnavigator

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    bon en fait ca marche pas, ca crée des doublons comme tu as dis

    je vais donc devoir utiliser les 3tables séparement

    est ce que tu as une idée pour editer les 3 tables en même temps a l'aide du DBnavigator ou a l'aide d'autres boutons ?

    j'ai bien regardé dans l'aide de delphi mais j'y trouve rien de concluant

    sinon j'avais pensé : comme il fait 3 enregistrement identique a chaque fois, on peut peut etre en supprimer deux pour qu'il n'en reste qu'un ?
    j'avoue c'est un peu barbare mais ca devrai marcher.
    Comment est ce que je peux faire ca ?

    merci

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    bon j'ai trouvé la solution qui est de mettre un dbnavigator que je crée moi même avec des boutons

    seulement j'arrive pas a faire marcher mes requettes SQL

    je poste ici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    datamodule2.adoquery1.SQL.Clear;
    datamodule2.adoquery1.sql.add('insert into Tlivre ');
    datamodule2.adoquery1.sql.add('(isbn, titre, typeformat) ');
    datamodule2.adoquery1.sql.add(' values("'+dbedit20.Text+'","'+dbedit21.text+'", "'+dbedit22.text+'") ');
    datamodule2.adoquery1.execsql;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    datamodule2.adoquery1.SQL.Clear;
    datamodule2.adoquery1.sql.add('update Tlivre ');
    datamodule2.adoquery1.sql.add('set isbn= "dbedit20.Text" and PUventeHTVA="dbedit21.text" and titre= "dbedit22.text" and typeformat="dbedit23.text"');
    datamodule2.adoquery1.execsql;
    end;
     
    procedure TForm1.Button3Click(Sender: TObject);
    begin
    datamodule2.adoquery1.SQL.Clear;
    datamodule2.adoquery1.sql.add('delete from Tlivre ');
    datamodule2.adoquery1.sql.add('set isbn= "dbedit20.Text" and PUventeHTVA="dbedit21.text" and titre= "dbedit22.text" and typeformat="dbedit23.text"');
    datamodule2.adoquery1.execsql;
    end;
     
    end.
    voila a chaque fois il plante, sauf pour l'insertion, j'ai beau chercher en long en large et en travers je ne vois pas pourquoi

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    tes requetes sont tres mal ecrites :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    With datamodule2.adoquery1 do
    begin
      Close;
      SQL.Clear;
      sql.add('update Tlivre ');
      sql.add('set isbn=' + quotedstr(dbedit20.Text) + ',');
      SQL.add('PUventeHTVA=' + dbedit21.text + ',');
      SQL.Add('titre= ' + Quotedstr(dbedit22.text) + ',');
      SQL.Add('typeformat=' + Quotedstr(dbedit23.text));
      Execsql;
    end;
    Je pense que tu devrais revoir tes cours de sql

    Pour le delete faut savoir ce que tu veux supprimer car ta requete est aussi fausse que l'update.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Je pense que tu devrais revoir tes cours de sql
    le problème c'est qu'on as pas de cours de SQL mdr
    on a juste eu 2h comme ca vite fait :s

    en tout cas merci de ta reponse

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Les tutos sur le site sont tres bon, va y jetter un oeil, j'y vasi régulièrement lorsque j'ai un doute sur l'ecriture d'une requete
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

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

Discussions similaires

  1. creer plusieurs tables avec un seul script
    Par abj8077 dans le forum Requêtes
    Réponses: 8
    Dernier message: 18/02/2011, 19h32
  2. Réponses: 2
    Dernier message: 11/04/2007, 12h14
  3. [VBS] Tester plusieurs répertoire avec un seul If
    Par Edoxituz dans le forum VBScript
    Réponses: 38
    Dernier message: 25/02/2006, 20h18
  4. plusieurs tables dans une seule table
    Par scully2501 dans le forum Access
    Réponses: 1
    Dernier message: 10/10/2005, 09h19
  5. Plusieurs commandes avec 1 seule R-commande
    Par pouldo dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 01/04/2005, 18h44

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