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 :

adoquery +sqlserveur + IHM pourri


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 62
    Points
    62
    Par défaut adoquery +sqlserveur + IHM pourri
    bon voila je présente tout dabord mon application,
    sou delphi 7, sgbd sql serveur connexion ado
    les table concerné par mon probleme sont

    commande:numcde,datcde...
    lignedecommande:numlignecodprod,numcde

    codpro etant le code produit
    numcde numero de commande
    numligne numero de ligne de commande , " c'est just pour etre le plus clair possible " numcde et numligne sont autoacrémenté

    bon le problem le voila kan je veu créé une nouvelle commande j insert la date systeme pour avoire un numcde,"parceque il autoacrementé" pas tres propre je sais, pui j prend ce numcde et a chque fois que j ajoute une ligne de commande je l insert dans lignecommande
    "vraiment pas tres propre"



    bein ce que je veu faire c'est créé une form avec un dbgrid qui afiche les produit de la commande que je suis entrein de créé
    j réussi a créé une liste des commandes avec leurs porduits avec 2 adoquery en maitre detail autour de numcde
    mai j arrive pas a les voir quand j les ajoute , ,mon dbgrid rest vide , bien que j les ataché a la mem datasource de la liste des poduits des commandes,et en les rafrichisant, heuu j'ésper que j pas trop bafouillé


    peace

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Ce n'est pas clair ! Essaye de ne pas faire trop de fautes et évite de "t'auto-commenter" style :
    "vraiment pas tres propre"
    ç a n'apporte rien à la compréhension de ton problème.

    Bon ..
    A part ça déja : quand tu as tes commandes de créées dans ta base, puis que tu lances ton application : vois-tu tes commandes dans ta DBGrid ?

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    oui tout est présent dans la base, mem quand je fait 2 adoquery en maitre detail ya pas de problem!


    le probleme est que j'ai une fiche nouvelle commande, cet fiche possede un dbgrid qui contient les produit commandé, donc ce que je veu fair c'est a chaque fois que j'ajoute un porduit il doit apraitre dans le dbgride, ce qu'il n'arrive pas

  4. #4
    Membre actif Avatar de liazidf
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2002
    Messages : 281
    Points : 261
    Points
    261
    Par défaut ihm
    Vérifier si votre table commande à un DisableControls

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    bon pour etre plus claire voila ma fiche




    c'est mieu qu'un long discour

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 357
    Points
    357
    Par défaut
    Citation Envoyé par napz
    bon le problem le voila kan je veu créé une nouvelle commande j insert la date systeme pour avoire un numcde,"parceque il autoacrementé" pas tres propre je sais, pui j prend ce numcde et a chque fois que j ajoute une ligne de commande je l insert dans lignecommande
    "vraiment pas tres propre"

    Boo le langage sms ou je sais pas trop quoi quand on a un vrai clavier c'est vraiment pas très propre non plus

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 357
    Points
    357
    Par défaut
    Sinon pour le bouton Ajouter, tu peux initialiser le champ numcde dans l'événement AfterInsert de la requete des lignes genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TFrm_Cmde.adoQ_LigneAfterInsert(DataSet: TDataSet);
    begin
      adoQ_Ligne.fieldByName('numcde').value := adoQ_Cmde.fieldByName('numcde').value;
     
    end;

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    pouriez vous etre plus claire a propos de l'évenemment AfterInset pour un ADOQUERY ??


    sinon pour votre code, ce que j 'ai compirs c'est que vous donné la valeur de numcde de commande a celui de la lignedecommande,pour moi le probleme ne se pose pas la !


    ps: désolé pour le language semi-sms

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 357
    Points
    357
    Par défaut
    Si ton chan numcde é 1 autoincr il fô forcé le post avant d'insérer qqe choz ds les lignes.

    Pour l'événement AfterInsert, euh que dire de plus... Tu regardes dans la partie evénementielle de ton control si c'est ce que tu utilises...

  10. #10
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    normalement si vous faite la liaison d'integrieté dans la base de données le compimateur génère une exception lorsque en essai d'ajouter un champs détails sans le maitre tu peut expoité.

  11. #11
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    je vous remercie infinement pour vos répence ,

    Si ton chan numcde é 1 autoincr il fô forcé le post avant d'insérer qqe choz ds les lignes.
    évidament que je le force en insérant les 2 autre champs non clé,

    normalement si vous faite la liaison d'integrieté dans la base de données le compimateur génère une exception lorsque en essai d'ajouter un champs détails sans le maitre tu peut expoité.
    rien compirs !!!

    sinon voila le scénario pour un ajout d 'une commande dans mon apli.

    -l'utilisateur ouvre la fiche nouvelle commande
    -il sélection un client
    -il doit enregistrer une commande pour ajouter des produits
    -apres avoire enregistree la commande il commence a faire sa selection des produits

    ma démarche dans tous ça!

    -comme la clé commande est auto j'insert les autres champs
    - puis je récuper la clé commande et je la mets dans un Tedit invisible
    -en ajoutant un porduit dans ma fiche j insert dans la table lignedecommande la valeur du Tedit et les codes produit

    mes questions sont les suivantes:

    -il n'y aurai pas une autres façon de faire a par le Tedit ?
    - j'arrive pas a afiché les produit "fraichement ajouter" sur le dbgrid de la fiche nouvelle commande en utilisant un ADOquery en maitre detail

    voila ma form nouvelle commande


  12. #12
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 357
    Points
    357
    Par défaut
    C'est bien de nous montrer ta fiche mais en conception ce serait plus clair !

    Je te corrige les fôtes au passage :

    Quantité Commandée
    Vous devez enregistrer la commande pour pouvoir y ajouter des produits

    Si tes clients sont enregistrés, pourquoi ne pas mettre un combo qui permet de les sélectionner ?

    Quels sont les objets bd que tu utilises ?

    Quel est le code derrière le bouton Ajouter ?

  13. #13
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    Si tes clients sont enregistrés, pourquoi ne pas mettre un combo qui permet de les sélectionner ?
    si il ya une centaine de client sa fait un peu bocoup pour un combo,bein du moin je crois .

    Quels sont les objets bd que tu utilises
    bon pour le bouton enregistrer j'ai ça

    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
    procedure TFinsertcde.Button4Click(Sender: TObject);
    begin
    if MessageDlg('Confirmez-vous la creation de la nouvelle commande  du client dont le code est '+
                    DBEdit1.Text,
                    mtConfirmation, [mbYes, mbNo], 0) = mrYes
       then begin
                     with ADOQuery1 do
                 begin
                   SQL.Clear;
                   SQL.Add('Insert into commande (codcli,datcde) Values (');
                   SQL.Add(Quotedstr(DBEdit1.Text)+',');
                   SQL.Add(Quotedstr(DateToStr(Date))+')');
                   ExecSQL;
                   Close;
                   end;
     
          button2.Enabled:=true;
          button4.Enabled:=false;
         end;           
    end;
    a ce moment la le bouton ajouté n'est plus grisé , donc il ouvre une forme avec un dbrgid qui contient les produit, dans cet forme j'ai un bouton ajouté
    qui a la mem procedure d'ajout de commande avec un adoquery


    ps: merci pour la corection des fautes

  14. #14
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    heuu désolé, la question reste la mem,

    j'arrive pas a afiché chaque produit ajouter dans le DBgrid de cette fiche,
    j'utilise comme je l'ai dit deja ,un composant adoquery detail voila sa requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select codprod 
    from lignecommande
    where numcde =:numcde
    voila cordialement Mouh

  15. #15
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Je ne comprend pas ta dernière ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where numcde =:numcde

  16. #16
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    Je ne comprend pas ta dernière ligne
    c'est un adoquery detaill , il est lié a l'adoquery maitre par le parametre numcde

  17. #17
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Ah..(je ne connais pas l'utilsation du Maitre/Détail en fait) et si tu passe le N° de cde en paramêtre et que tu fais la requète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select codprod 
    from lignecommande
    where numcde =1233
    où ici 1233 est le N° de cde ?

  18. #18
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    voila ce que j'ai réussi a faire,

    pour inseré une nouvelle ligne de commande j'utilise un adoquery de la sorte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     with Finsertcde.ADOQuery2 do
        var codprod:string;
    begin
      codprod:=Fajoutprod.DBGrid1.DataSource.DataSet.Fields.Fields[0].AsString;
      with Finsertcde.ADOQuery2 do
        begin
          SQL.Clear;
          SQL.Add('Insert into lignecommande (codprod,qte) Values (');
          SQL.Add(Quotedstr(codprod)+',');
          SQL.Add(Quotedstr(Edit1.Text)+')');
          ExecSQL;
          Close;
        end;
    puis dans l'evenement afterinsert de ce dernier je mets ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TFinsertcde.ADOQuery2AfterInsert(DataSet: TDataSet);
    begin
    ADOQuery2.fieldByName('numcde').value := ADOQuery1.fieldByName('numcde').value;
    end;
    ça marche pas !! numcde d'est pas inseré dans lignedecommande !

Discussions similaires

  1. [ADOQuery]Comment ajouter un prametre a un ADOQuery
    Par bitou dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/04/2004, 15h08
  2. [ADOQuery] Propriété Fields
    Par bitou dans le forum Bases de données
    Réponses: 7
    Dernier message: 21/04/2004, 11h24
  3. Probleme S/ UPDATE : ADOQUERY base = .DBF , D7
    Par bzh56 dans le forum Bases de données
    Réponses: 5
    Dernier message: 18/02/2004, 01h56
  4. import de bd access 97 => sqlserveur : Data overf
    Par neo.51 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/03/2003, 15h17
  5. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24

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