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 :

nouveau problême d'insertion des données dans la base de données


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut nouveau problême d'insertion des données dans la base de données
    bonjour à tous!
    j'ai un problème d'insertion dans ma base de données , au fait je dois insérer des données dans trois tables differentes lorsque je clicke sur mon bouton.
    Je voudrais encoder une facturation; sur la feuille d'encodage j'ai:
    1-la date de facturation qui vient de la table DetailFacture
    2-le type de facture qui vient aussi de DetailFacture
    3-le type de contact qui vient de la table Contact
    4-numero de facture qui vient de la table DetailFacture
    5-la somme de la facture qui vient de la table DetailFacture
    6-detail facture qui vient de la table Facture
    7-taux tva qui vient de la table Facture
    j'ai donc 7 champs à encoder dans 3 tables differentes
    voici mon code source
    procedure TAjoutFactForm.Button1Click(Sender: TObject);
    begin
    with DM.tbDetailFact do
    begin
    DM.tbDetailFact.Insert;
    DM.tbDetailFactNUMFACT:= DM.tbFactureNUMFACT;
    DM.tbFactureIDCONTACT:= DM.tbContactIDCONTACT;
    DM.tbContactTYPECONTACT.Value:=dbcombocontact.Text;
    DM.tbDetailFactNUMFACT.Value:=StrToInt(Edit_numfact.Text);
    DM.tbFactureDETAILFACT.Value:=Edit_detailfact.Text;
    DM.tbDetailFactDATEFACT.Value:= DatePicker1.Date;
    DM.tbDetailFactSOMFACT.Value:=StrToFloat(Edit_somfact.Text);
    DM.tbDetailFactTYPEFACT.Value:=DbcomboxTypFact.Text;
    DM.tbFactureTVAFACT.Value:=StrToFloat(Edit_tauxfact.Text);
    DM.tbDetailFact.Post;
    end ;
    DM.tbDetailFact.Refresh;
    DM.tbDetailFact.First;
    il execute bien le code sans erreur; mais lorsque je saisis les données et que je clicke sur le bouton , il me dit que la table facture ou contact n'est pas en mode insert.
    voici mon interface:

  2. #2
    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
    Citation Envoyé par tchimou
    il execute bien le code sans erreur; mais lorsque je saisis les données et que je clicke sur le bouton , il me dit que la table facture ou contact n'est pas en mode insert.
    voici mon interface:
    Normal, tu n'as ouvert en mode insertion qu'une seule table

    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
    28
    29
    30
     
    procedure TAjoutFactForm.Button1Click(Sender: TObject);
    begin
    with DM do // C'est bien d'utiliser un with, mais faut il s'en servir vraiement :P
    begin
      tbDetailFact.Insert; // ouverture en mode insert de la table DetailFact
      tbFacture.Insert; // Ouverture en mode insert de la table Facture  
      tbContact.Insert; // Ouverture en mode insert de la table Contact  
     
      tbDetailFactNUMFACT:= tbFactureNUMFACT;
      tbFactureIDCONTACT:= tbContactIDCONTACT;
      tbContactTYPECONTACT.Value:=dbcombocontact.Text;
      tbDetailFactNUMFACT.Value:=StrToInt(Edit_numfact.Text);
      tbFactureDETAILFACT.Value:=Edit_detailfact.Text;
      tbDetailFactDATEFACT.Value:= DatePicker1.Date;
      tbDetailFactSOMFACT.Value:=StrToFloat(Edit_somfact.Text);
      tbDetailFactTYPEFACT.Value:=DbcomboxTypFact.Text;
      tbFactureTVAFACT.Value:=StrToFloat(Edit_tauxfact.Text);
     
      // Validation des modifications
      tbDetailFact.Post;
      tbFacture.Post;
      tbContact.Post;
     
      tbDetailFact.Refresh;
      tbFacture.Refresh;
      tbContact.Refresh;
       // tbDetailFact.First; // Pas besoin après un refresh ca revient automatiquement sur le 1er enregistrement
    end;
    end;
    Modérateur Delphi

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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut insertion base de données
    Bonjour !
    merci pour l'aide pour le code;
    Lorsque j'execute le code, tout va bien, mais lorsque j'ai saisis les données et que je clicke sur le bouton ok, il m'affiche une erreur : tbDetailFact : dataset not in edit or insert mode;
    je suis allé mettre active=true à la dataset liée à cette table , mais il ne s'est rien passé; toujours la même erreur.
    Merci

  4. #4
    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
    En fait, en regardant bien mieux ton code, je ne comprend pas vraiement ce que tu veux faire.

    Il serait bien de voir la structure de tes tables.
    Et de connaitre le fonctionnement global de cette partie du programme et de ce que doit faire ton interface.
    Modérateur Delphi

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

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut insertion base de données
    Bonjour!
    au fait mon projet gère la gestion d'une caisse(la caisse d'un gerant d'entreprise)
    Cette caisse virtuelle appartient à un gérant , et le permet de suivre les mouvements opérés dans son entreprise (tout ce qui est entrée ou recette et ce qui est sortie comme depense).
    Et dans cette partie ici qui est la facturation , je gère tout ce qui facture ; il y a deux type de facture ( facture client->entrée un client qui achète un produit, et facture fournisseur->sortie)
    j'ai crée une table contact qui regroupe les données client et fournisseur avec un champs typecontact qui dit si c'est un client ou un fournisseur.

    Dans mon interface , en l'encodage d'une facture que lorsque je choisis le type de facture (si c'est entrée qu'il me donne les noms prenoms des clients de ma table et vice versa pour les sorties qu'il me donne les fournisseurs),

    helas je ne sais comment faire car typefacture appartient à la table DetailFacture et les noms prénoms à table Contact.
    et je voudrais aussi encoder les autres informations liées à la facture comme fait ci dessus.
    je vous envoie mon analyse en pièce jointe.
    Merci de me mettre sur le bon chemin car je n'ai jamais fait une telle application

  6. #6
    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
    La c'est un peu chaud car il faudrait tout te faire, et ce n'est pas le but de ce forum.

    sinon je te donnes un exemple de ce que je fais pour mon propre système de facture pour l'ajout d'un article dans la facture


    frmFactuV2Article est la form d'ajout d'un article, c'est juste des composants DbEdit connectés par un DataSource qui est directement connecté à ma Table ArticleFacture

    DsFactureList <- une autre table qui me permet d'avoir le numéro de facture

    Le bouton qui permet d'ajouter un article

    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
     
    procedure TfrmFactureV2.TBAddArticleClick(Sender: TObject);
    begin
      frmFactuV2Article := TfrmFactuV2Article.Create(self);
      With frmFactuV2Article,dsFArticleList do
      try
        Caption := 'Ajouter un article';
        // J'ajoute une ligne dans la table ArticleFacture
        DataSet.Append;
        DataSet.FieldByName('IdFacture').AsInteger := DsFactureList.DataSet.FieldByName('IdFacture').AsInteger;
        case ShowModal of
          mrOk : begin
            DataSet.Post;
          end;
          mrCancel: begin
            DataSet.Cancel;
          end;
        end;
      finally
        frmFactuV2Article.Release;
      end;
    end;

    Ci dessous, c'est le bouton qui permet de modifier l'article (tu remarqueras que j'utilise la même form que celle du bouton d'ajout.
    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
     
    procedure TfrmFactureV2.ToolButton8Click(Sender: TObject);
    begin
      frmFactuV2Article := TfrmFactuV2Article.Create(self);
      With frmFactuV2Article,dsFArticleList do
      try
        Caption := 'Modifier un article';
        // Mode edition pour la table articleFacture
        DataSet.Edit;
        case ShowModal of
          mrOk : begin
            DataSet.Post;
          end;
          mrCancel: begin
            DataSet.Cancel;
          end;
        end;
      finally
        frmFactuV2Article.Release;
      end;
    end;
    J'espère que cela t'inspirera
    Images attachées Images attachées  
    Modérateur Delphi

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

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut insertion base de données
    Merci pour l'exemple, je vais m'inspirer de cela et j'espère que ça ira.
    Encore merci

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

Discussions similaires

  1. [MySQL] Problème d'insertion des accents dans une base de donnée MYSQL
    Par maroon1970 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/08/2011, 18h35
  2. Réponses: 5
    Dernier message: 28/02/2011, 21h42
  3. Réponses: 1
    Dernier message: 24/12/2010, 13h06
  4. problème d'insertion des dates dans une base
    Par guy_antoine_mav dans le forum C#
    Réponses: 13
    Dernier message: 02/12/2009, 17h34
  5. insertion des blob dans une base de données
    Par ala1986 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 05/04/2009, 15h48

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