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

FastReport Discussion :

saisir une entête de facture


Sujet :

FastReport

  1. #1
    Membre actif

    Inscrit en
    mai 2010
    Messages
    388
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 388
    Points : 290
    Points
    290
    Par défaut saisir une entête de facture
    Bonjour ,
    svp , j'ai besoin de votre aide et idées pour la saisie d'une entête de facture.
    cette entête doit être paramétrer c-a-d chaque client possède son propre entête de facture (bien-sure).
    j'ai mis des champs memo sur mon rapport fastReport et je rempli les données via mon programme delphi.
    mais chaque client propose d'autre information, par exemple : un client veut insérer un logo ,un autre client non ,
    et un troisième veut insérer deux logo sur la facture.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 627
    Points : 39 800
    Points
    39 800
    Billets dans le blog
    59
    Par défaut
    Bonjour,

    la solution consiste certainement à stocker un report (fr3) par client dans une base de données
    reports(n°client,reportblob)
    et de charger le report en fonction (ça fonctionne très bien)
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre actif

    Inscrit en
    mai 2010
    Messages
    388
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 388
    Points : 290
    Points
    290
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    la solution consiste certainement à stocker un report (fr3) par client dans une base de données
    reports(n°client,reportblob)
    et de charger le report en fonction (ça fonctionne très bien)
    Svp,
    j'ai pas compris votre solution

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 627
    Points : 39 800
    Points
    39 800
    Billets dans le blog
    59
    Par défaut
    Ma solution est simple : stocker le report dans un blob d'une base de données
    Tout dépend bien sûr de votre bdd. Créer une table exemple Firebird
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE GABARITS
    (
      Client INTEGER NOT NULL,
      GABARIT blob sub_type 0,
      CONSTRAINT PK_GABARITS PRIMARY KEY (CLIENT)
    );


    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
    31
    32
    33
    34
    35
     
    Etat : TfrxReport;
    AStream : TMemoryStream;
    AQuery : // une requête
     
    ....
    // Sauvegardes -----------------------------------------------
    // mais bien sûr on peut très bien remplir la table avec un GUI qui permet de modifier les blobs en chargeant un fichier (un .fr3)  
    AStream:=TMemoryStream.Create;
    try
      Etat.SaveToStream(AStream);
      //  sauvegarder dans BDD
       AQuery.SQL.Text:='UPDATE OR INSERT INTO GABARITS (CLIENT, FRX)  VALUES (:CLIENT,:GABARIT) MATCHING (CLIENT)';  
       AQuery.ParamByName('CLIENT').AsInteger:=StrToIntDef(CodeClient.Text,0); 
       AQuery.ParamByName('GABARIT').LoadFromStream(AStream,TFieldType.ftBlob);
       AQuery.ExecSQL; 
    finally
     AStream.Free;
    end;
    // --------------------------------------------------------------------
     
    // Charger
    // recupérer l''enregistrement
    AQuery.SQL.Text:='SELECT CLIENT,GABARIT FROM GABARITS WHERE CLIENT=:C';
    AQuery.ParamByName('C').asInteger:=StrToIntDef(CodeClient.Text,0);
    AStream:=TMemoryStream.Create;
    try
       // bien sûr il faudra songer à gérer si AQuery.FieldByName('GABARIT').isnull  
     
       TBlobField(AQuery.FieldByName('GABARIT')).SaveToStream(AStream);
       AStream.Position := 0;
       Etat.LoadFromStream(AStream);
    finally
     AStream.Free;
    end;
    Mais comme vous ne fournissez ni SGBD, ni version de Delphi, ni composants de connexion à la BDD ceci n'est qu'un exemple.
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Membre actif

    Inscrit en
    mai 2010
    Messages
    388
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 388
    Points : 290
    Points
    290
    Par défaut
    Merci Sergio pour le suivi .
    j'utilise Delphi 10.4.
    Firebird 3 comme base de données.
    pour les outils de connexion j'utilise Firedac.

    ce que j'ai pas compris , ou est l’entête de la facture. avec les Logo ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 627
    Points : 39 800
    Points
    39 800
    Billets dans le blog
    59
    Par défaut
    Où est l’entête de la facture, avec les Logos ?
    Mais tout simplement dans l'état je croyais que c'était évident : un état par client
    Après, il est toujours possible de modifier la structure de table pour ajouter d'autres spécificités clients (1 logo dans un blob).

    Ce que vous ne semblez pas comprendre c'est qu'il n'y a pas un seul état mais plusieurs : par exemple un standard (au cas où) et un par client avec spécificités. La limite est qu'il faut que tous utilisent les mêmes frxdataset

    exemple d'un programme de mon application
    Nom : Capture.PNG
Affichages : 393
Taille : 299,9 Ko
    Vous remarquerez que c'est FMX, mais surtout que je fourni la possiblité aux utilisateurs (autorisés) la possibilité de modifier le fastreport (bouton Modifier) et d'indiquer la facture qui sera utilisée pour le test.
    Avantage, une modification non structurelle (modification des datassets) se fait sans modifier le programme
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

Discussions similaires

  1. checksum d'une entête ICMP
    Par poporiding dans le forum C++
    Réponses: 6
    Dernier message: 20/01/2006, 14h19
  2. [C#] MessageBox qui demande de saisir une valeur
    Par Radium133 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/01/2006, 10h25
  3. [Ergonomie] Moyen pour saisir une heure dans une page web ?
    Par mic79 dans le forum Webdesign & Ergonomie
    Réponses: 7
    Dernier message: 16/12/2005, 14h03
  4. saisir une fonction dans un formulaire
    Par arnogef dans le forum IHM
    Réponses: 14
    Dernier message: 12/12/2005, 10h40
  5. vba excel - Comment saisir une cellule sans faire entrer
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/11/2005, 17h50

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