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 :

Saisie dans DbGrid et impression dans QReport


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut Saisie dans DbGrid et impression dans QReport
    Bonjour,

    Depuis toujours, j'utilise la DbGrid pour afficher les données utilisant une table, un Dataset, ou un Query.
    Voilà ce que je veux faire : Permettre a un utilisateur de saisir les données dans un DbGrid vide lié à une table, par exemple Qte, Prix unitaire et un calcul de qte * pu dans une colonne montant et ensuite enregistrer les données saisies dans la table.
    Enfin je veux imprimer la DbGrid dans un Qreport dans un tableau que j'ai déjà tracer avec des QRShape.

    Merci pour toutes interventions...

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    et alors ? quel est le soucis ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Pouvez-vous me montrer comment après la saisie de qte * pu le résultat est calculer automatiquement dans la cellule montant ?.
    Pour l'impression dans QReport je veux savoir comment imprimer la ligne sélectionne par un utilisateur.
    Merci.

  4. #4
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Une précision : Dans la DbGrid, il ya une colonne Numero. Je veux extraire ce numéro et l'utiliser dans la clause where de ma requête SQL.

  5. #5
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    J'ai pu trouve de l'aide dans un support pour extraire le numéro de ligne sélectionner un utilisateur.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ligne := Format('%2d',[TdrawGrid(DbGrid1).Row]); 
    Line := StrToInt(Ligne);
    Maintenant le problème que je rencontre c'est avec ma requête sql.
    La valeur de Ligne est string, je le converti en integer.
    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Form2.Query1.SQL.Add('Select Pd_Date, Pd_Compte, Pd_Dest, Pd_Montant, Pd_Centre, Pd_Libelle from Depense');
    Form2.Query1.SQL.Add('Where Pd_Numero = ' + (Line);
    Ma question qu'est ce qu'il faut mettre avec Line pour que l'exception "[Erreur] : Types incompatibles : 'String' et 'Integer' ne se produise plus?.

    Merci.

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par sondo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ligne := Format('%2d',[TdrawGrid(DbGrid1).Row]); 
    Line := StrToInt(Ligne);
    pourquoi utiliser strtoint ? Line:=DBGrid1.Row est plus simple non ? cependant j'ai des doutes sur cette idée , que va t'il se passer quand le nombre d'enregistrement seras supérieur à la taille de la grille ......

    Citation Envoyé par sondo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Form2.Query1.SQL.Add('Select Pd_Date, Pd_Compte, Pd_Dest, Pd_Montant, Pd_Centre, Pd_Libelle from Depense');
    Form2.Query1.SQL.Add('Where Pd_Numero = ' + (Line);
    Ma question qu'est ce qu'il faut mettre avec Line pour que l'exception "[Erreur] : Types incompatibles : 'String' et 'Integer' ne se produise plus?.
    Là justement l'erreur c'est de mettre Line , le SQL est une String donc Form2.Query1.SQL.Add('Where Pd_Numero = ' + Ligne)

    Citation Envoyé par sondo Voir le message
    Pouvez-vous me montrer comment après la saisie de qte * pu le résultat est calculer automatiquement dans la cellule montant ?.
    vu que c'est un champ calculé , il faut a) empêcher la saisie dans cette zone et b) faire le calcul avant validation de l'enregistrement si la base de données ne le fait pas automatiquement (je pense a paradox)
    donc pour le point a il faut gérer l'évènement d'entrée dans la cellule (SelectCell) et pour le point b) L'évènement BeforePost de la Table

    bon courage
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 605
    Points
    605
    Par défaut
    bonjour

    j'ai pas trop saisi ton problème (j'ai pas trop lu non plus )

    mais je pense que tu doit utilIser les champs calculés
    regarde du coté de l'évenement OncalcField de ton datasET

    voila

  8. #8
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Merci pour vos différentes interventions.
    Pour la requête j'ai fais ceci, mais le pronlème persiste toujours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.ButtonImprimerClick(Sender: TObject);
    var Ligne : Integer;
    begin
      Depense.Post;
      ligne := TDrawGrid(DBGRID1).Row;
      Form2.Query1.SQL.Clear;
      Form2.Query1.SQL.Clear;
      Form2.Query1.SQL.Add('Select Pd_Date, pd_Compte, Pd_Dest, Pd_Montant, Pd_Centre, Pd_Libelle from Depense');
      Form2.Query1.SQL.Add('Where Pd_Numero =' + QuotedStr(IntToStr(ligne)));
      Form2.Query1.Open;
      Form2.QuickRep1.Preview;
    end;
    La requête fonctionne bien.
    J'ai remarquer qu'après avoir quitter delphi, tous les données de la table s'éffacent. Est-ce que DbGrid fais un Table.post après la saisie de chaque ligne, ou bien y'a t-il un autre moyen?.
    Pendant qu'on y est, SergioMaster a dit : que va t'il se passer quand le nombre d'enregistrement seras supérieur à la taille de la grille ......
    Combien de ligne un DbGrid peur coctenir?

    Merci.

Discussions similaires

  1. Champ de saisie dans DBGrid
    Par sondo dans le forum Bases de données
    Réponses: 9
    Dernier message: 15/06/2009, 19h02
  2. Réponses: 1
    Dernier message: 11/09/2006, 10h21
  3. Doublons affichage dans DBGrid mais pas dans ma BDD
    Par socooooool dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/07/2006, 19h16
  4. DBLookupComboBox dans DBGrid
    Par KThrax dans le forum Bases de données
    Réponses: 7
    Dernier message: 24/08/2004, 16h18
  5. Couleur des lignes dans DBGrid
    Par eddie dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/06/2002, 19h15

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