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 :

interroger une Base de données?


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 175
    Points : 82
    Points
    82
    Par défaut interroger une Base de données?
    bonsoir tous le monde
    j'ai crée une base de données gestion de facturation, je suis arriver à créer tous les formulaires, juste certaine choses dans le formulaire Facture, ce formulaire utilise trois tables :
    employer(ce celui qui chargé d'établir la facture son nom et prénom),
    le client (le nom et le prénom du client dans la facture),
    et facture (n° facture, et date de facturation)
    et une requête qui affiche dans une grille :Réfproduit, désignation, prixunitaire, quantité, montant)
    tous ça je l'ai fais grâce à Master source et master field
    bon, maintenant je ne sais pas comment faire pour créer une nouvelle facture, supprimer la facture, modifier,....à cause de ses relations
    si c'était une table, je peu mais plusieurs non
    comment faire.....?
    merci

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Salut;

    vaste vaste vaste est ta question. j'essayerais d'y répondre mais pas exhaustivement.
    • La réponse dépend fortement du SGBD utilisé, donc autant nous dire qu'utilise-tu comme SGBD
    • Les composants mis en jeu; BDE, ADO ou autres
    • Faut voir du coté des tuto cela te permettra de t'entrainer à la MAJ de deux tables et plus pour cela tu peux utilisés les tables ou les query


    Mon conseil est que tu t'oriente davantage vers le SQL il est dédié à interroger plusieurs tables et à fournir un résultat dans une table temporaire exploitable.

    Bonne chance.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 175
    Points : 82
    Points
    82
    Par défaut
    ah! désoler j'ai oublier de vous dire que j'ultise ADO, une orientation s'a m'aidera, parceque j'ai fais une recherche sue google, mais je n'ai pas trouvé , peut être que c'est moi qui n'a pas tapé le mot exacte

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 175
    Points : 82
    Points
    82
    Par défaut
    au moins un exemple,
    commet je peut faire pour créer un nouveau formulaire, alors que ce dernier est crée à partir de 02 tables en relation
    merci

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Ok

    supposons deux tables Employe et Departement structurées ainsi:

    Table Employe : id_emp, nom_empl
    Table Departement : id_dep, nom_dep, id_emp

    la nouveauté est que la table Departement contient un champ id_emp appelé clé étrangère puisque c'est l'index primaire de la table Employe. Toute l'astuce est là, c'est ce champ même qui sert à lié les deux tables.

    créons deux fiches pour la mise à jour de chacune des tables, chacune des fiches contient un DBNavigator, un DBGrid, un composant Table et un DataSource. Activons les tables et alimentons notre base de données.

    A présent, on crée une troisième fiche, on dépose deux DBGrid, Deux DBNavigator, deux composants Tables et deux DataSource.
    on relie la Table Employe au composant Table nommé TableEmp de même pour la table Departement TableDep, bien sûr chaque Table est elle même relié à un DataSource; ds_Emp et ds_Dep. Le DBNavigator de chaque forme ainsi que le DBGrid sont reliés au DataSource qui y est déposé.

    Maintenant, on renseigne la propriété MasterSource de la Table Employe TableEmp par TableDep, ce qui veut dire qu'on établi une relation maître/détail, pour finir l'élaboration de la relation on a besoin de renseigner la propriété MasterField par le champ id_dep.

    Si tout est dans l'ordre établi je vous laisse le soin de naviguer dans la table Departement et voir la réaction de la table Employe. Vous obtiendrez l'effet d'un filtre !

    Ceci dit, ce n'est pas l'unique méthode pour la réalisation d'une relation maître/détail, mais remarquer qu'on a rien coder, n'est ce pas fabuleux !

    Bonne chance.

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 175
    Points : 82
    Points
    82
    Par défaut
    salut, merci beaucoup Just-Soft
    mais je connais cette methode, ce que je ne connais pas c'est celle avec du code
    ex: j'ai une fiche facture qui utilise un champs de la table employer, et une requête qui contient (n) produit, désignation, qt, prix, montant),et les autres de la table facture, comment faire pour ajouter une nouvelle facture
    merci

  7. #7
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    mais bon peut-être que ce sera utile pour un autre. maintenant faut voir où est-ce que tu en est ? as-tu fais quelque chose ? poste ton code comme ça on y travaillera ensemble.

    Bonne chance.

  8. #8
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Soit :
    MaRequeteEmployer (celui qui chargé d'établir la facture son nom et prénom),
    MaRequeteClient (le nom et le prénom du client dans la facture),
    MaRequeteFacture (n° facture, et date de facturation)
    MaRequeteGrille (Réfproduit, désignation, prixunitaire, quantité, montant))



    Je pose un gestionnaire d'evénement sur BeforeDelete de "MaRequeteFacture";


    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
     
     
    procedure TXXXXX.MaRequeteFactureBeforeDelete(DataSet: TDataSet);
    begin
      // 1- Je verifie si cette facture contient des détails :
      If Not MaRequeteGrille.IsEmpty then
      begin
        // 2- Je signale à l'utilisateur que l'ensemble des lignes va être supprimé
        if MessageDlg('l''ensemble des lignes va être supprimé', MtConfirmation, [mbOK, mbCancel],0) = mrOk) then
        Begin
          // Si il approuve je supprime les détails
          MaRequeteGrille.EmptyDataset;
        end
        else Abort;
      end;
    end;
    Bien sur une transaction autour de ce code ne serait pas du luxe.

    a+

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 780
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 780
    Points : 5 537
    Points
    5 537
    Par défaut
    Citation Envoyé par Yurck Voir le message
    Soit :
    MaRequeteEmployer (celui qui chargé d'établir la facture son nom et prénom),
    MaRequeteClient (le nom et le prénom du client dans la facture),
    MaRequeteFacture (n° facture, et date de facturation)
    MaRequeteGrille (Réfproduit, désignation, prixunitaire, quantité, montant))



    Je pose un gestionnaire d'evénement sur BeforeDelete de "MaRequeteFacture";


    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
     
     
    procedure TXXXXX.MaRequeteFactureBeforeDelete(DataSet: TDataSet);
    begin
      // 1- Je verifie si cette facture contient des détails :
      If Not MaRequeteGrille.IsEmpty then
      begin
        // 2- Je signale à l'utilisateur que l'ensemble des lignes va être supprimé
        if MessageDlg('l''ensemble des lignes va être supprimé', MtConfirmation, [mbOK, mbCancel],0) = mrOk) then
        Begin
          // Si il approuve je supprime les détails
          MaRequeteGrille.EmptyDataset;
        end
        else Abort;
      end;
    end;
    Bien sur une transaction autour de ce code ne serait pas du luxe.

    a+
    Je ne suis pas trop partisant du mélange entre le traitement et les données. Il serait préférable poser la question sur le cilc du bouton supprimer et de lancer ensuite la suppression qui,de tout façon, déclenchera le BeforeDelete

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 175
    Points : 82
    Points
    82
    Par défaut
    merci beaucoup pour votre ça m'a aidé

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/07/2011, 14h30
  2. interroger une base de données mysql avec Quartz
    Par yousse dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/08/2009, 13h04
  3. interroger une base de donnée a distance
    Par Msysteme dans le forum C#
    Réponses: 42
    Dernier message: 27/05/2009, 13h11
  4. [1.x] Interroger une base de données
    Par rockybalboa dans le forum Symfony
    Réponses: 4
    Dernier message: 11/05/2008, 22h05
  5. Interroger une base de données blacklist
    Par undercrash dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 29/04/2008, 09h54

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