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 :

traitement sur facture


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 144
    Points : 16
    Points
    16
    Par défaut traitement sur facture
    Bonjour tout le monde,

    Voilà, j'ai un petit probléme dans un masque de saisie, j'ai crée une fenêtre pour la mise à jour de facture. je veux réaliser deux opérations mais je coince

    1er probléme

    dans la saisie des lignes de facture, je veux mettre un contrôle, en permettant à l'utilisateur de saisir une seule fois un article et pas en repetition dans un dbgrid

    2éme probleme

    dans l'édition de la facture par quickreport, je veux limiter le nombre de lignes sur une page facture à 15 lignes (articles)

    Quel q'un d'entre vous pourez m'aider sur ça, je lui serai très reconnaissant

    merci d'avance

    a+

  2. #2
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour

    Il faudrait préciser un peu.
    Test articles, ils sont dans une liste (StringList, Listbox, Combobox...)

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 144
    Points : 16
    Points
    16
    Par défaut
    Bon je m'explique

    j'ai une table Facture qui est reliée à 2 autres tables qui sont (Client, Articles)

    ce que je souhaite faire c'est 2 opérations

    1. j'ai un Dbgrid que je rempli manuellement pour alimenter la table facture qui est en relation avec la table article sur le champ Reference. Ce que je veux c'est que quand un utilisateur saisie dans la facture N° 0001 par exemple la reference 001 une deuxiéme fois, un message d'erreur s'affiche qon lui disant que "cette article est dejà saisie" donc il ne poura pas le rajouter une deuxieme fois.

    2. dans l'edition d'une facture sur imprimante ou bien on la visualisant à l'écran, je veux limiter le nombre d'articles (lignes) à imprimer sur une page (par exemple à 15), pour information j'utilise quickreport avec edition maitre/detail

    voilà et merci

  4. #4
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    ben tu testes dans l'événement oncellclick si la référence existe déjà.

  5. #5
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Bonjour,

    1. Tu crées une 2ème table détail qui pointe sur la même table que la première sans la lier au DBGrid et dans l'événement BeforePost de cette dérnière tu teste la présence de la référence dans la 2ème.
    ex.: TDet1 et TDet2. 2 TTables qui pointent sur la même Table détail.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TfrmFact.TDet1BeforePost(DataSet: TDataSet);
    begin
       if TDet2.Locate('REFERENCE',
                 DataSet.FieldByName(''REFERENCE').AsString then begin
          ShowMessage('Référence déjà saisie.....');
          myDBGrid.SetFocus;
          SysUtils.Abort;
       end;
    end;
    2. Tu crées une variable globale dans la fiche qui contient le rapport.
    Tu l'initialise à zéro dans l'événement OnBeforePrint du rapport.
    Tu l'incrémente dans l'événement OnBeforePrint de la bande détail et
    tu fais le test pour tes 15 lignes. Si c'est plus grand tu fais un saut de
    page .

    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
    implementation
    {$R *.DFM}
     
    var nbLine : ShortInt
     
    procedure TfrmRptFact.RptFactBeforePrint(
      Sender: TCustomQuickRep; var PrintReport: Boolean);
    begin
      nbLine := 0;
    end;
     
    procedure TfrmRptFact.bdDetailBeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    begin
     
     
       inc(nbLine);
       if nbLine > 15 then myQuickRep.NewPage;
    end;
    J'espère t'avoir aidé et bon DEV !

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 144
    Points : 16
    Points
    16
    Par défaut
    Salut

    Merci Akli pour tes reponses.

    j'ai actuellement appliquer ta 2éme reponse concernant l'impression de la facture, mais je rencontre un petit probléme, j'utilise un QRSubDetail dans mon rapport, j'arrive à imprimer la premiére page avec 15 lignes avec le code que tu m'a donné sauf qu'à partir de la 16éme ligne et +, j'ai un seul enregistrement par page.

    Voilà comme exemple

    j'ai une facture qui comporte 50 Articles, à l'impression la 1er page affiche reellement 15 lignes (articles) et la suite des lignes affichent une ligne par page.

    Comment faire pour régler cela ?

    Merci d'avance

  7. #7
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Salut,

    Pour regler ton problème, il suffit de remettre la variable nbLine à 0.
    soit tu fais comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TfrmRptFact.bdDetailBeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    begin
     
       inc(nbLine);
       if nbLine > 15 then begin
         myQuickRep.NewPage;
         nbLine := 0;
       end
    end;
    soit tu remet à 0 dans l'événement OnBeforePrint de l'entete de group.


    Bon Dev.

    PS : Voici mon email : LogicoSoft@yahoo.fr
    Akli.

  8. #8
    Membre habitué Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Points : 150
    Points
    150
    Par défaut
    Pour ton 1er pb, tu peux utiliser l'évènement OnValidate du Tfield code article, en reherchant la valeur code article qui est nouvellement saisi dans dbgrid par la méthode locate.
    Réussir c'est faire le bon choix.

    Voici ma supper fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fonction ChercherSolution(User_id:login in www.developper.com):Vrai;

  9. #9
    atb
    atb est déconnecté
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Autre

    Informations forums :
    Inscription : Novembre 2004
    Messages : 639
    Points : 929
    Points
    929
    Par défaut pb d'insertion d'enregistrements double sur une table
    bonjour,
    si tu utilise un TClientDataSet ,tu peux travailer avec la propriété IndexDefs
    pour ajouter des index dans ton cas sur le code de l'article si ta table detail
    ta qu'a faire champ_de_larelation_M/D ,nom_article ,tu pourra toujourfaire ton propre traitement dans le onPostError du cliendatset du genre 'article deja ajouter !!!!'
    pour les index ,ça sert à sa et au trie automatique de ta table

  10. #10
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut Attention à la collecte par des robots...
    Bonjour,

    akli_agha écrivait :
    [...] soit tu remet à 0 dans l'événement OnBeforePrint de l'entete de group.


    Bon Dev.

    PS : Voici mon email : Lxxxxxxxxx@yahxx.fr
    Akli. [...]
    Rien de tel pour se faire spammer par les robots qui passent sans arrêt à la collecte d'émails valides.

    J'ai ixé ici mais à toi de voir pour ton message

    Bon dév' !

  11. #11
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Merci J-P pour ta pertinente remarque !

    J'avoue que je n'y ai pas pensé.

    Encore une fois, merci.

Discussions similaires

  1. [C++] Textbox et traitement sur le texte
    Par poporiding dans le forum Framework .NET
    Réponses: 8
    Dernier message: 28/12/2005, 19h10
  2. Traitement sur un selectedIndex inexistant ?
    Par 10-nice dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/08/2005, 10h33
  3. [C#] [.NET 1.1] [VSTUDIO 2003] Traitement sur les fontes
    Par stailer dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/08/2005, 19h53
  4. [VB.NET] Traitement sur chaine (simple)
    Par Tempotpo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/03/2005, 13h20
  5. [FLASH MX 2004] Traitements sur le resultat d'un AS.
    Par Med_Prog dans le forum Flash
    Réponses: 8
    Dernier message: 21/11/2004, 13h59

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