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

Lazarus Pascal Discussion :

Manipuler un TDbGrid pour gérer les saisies


Sujet :

Lazarus Pascal

  1. #1
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut Manipuler un TDbGrid pour gérer les saisies
    Bonjour,

    Voilà, j'aimerais que certaines saisies soient réalisées directement dans une table (en générale je préfère passer par une fenêtre de saisie avec des champs d'édition). Mais ces données ne sont pas modifiées très souvent (voire peut-être jamais) donc, une simple saisie dans une table devrait suffire.
    Toutefois, je dois effectuer des contrôles (pas de doublons dans les clef) et certaines autres choses (comme limite haute et basse dans certains champs).

    J'aimerais me servir des évènements liés à la table (type Zeos) et à ceux de la "grid".

    J'utilise une base de données SQLite 3 et suis en version 0.9.30.2 et FPC 2.4.4 sous Seven 32 bits.

    Si quelqu'un peut m'éclairer sur ce sujet,

    Merci d'avance

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Avec les composants ZEOSDBO rien de plus simple :

    une fiche avec un dbgrid,un dbnavigator(optionnel mais bien pratique),
    un ZConnection,unZTable ou TZQuery, et un TZUpdateSQL et enfin un TDataset . Voila pour la partie Fiche

    pour la gestion des erreurs : évènements TZTable.onposterror et TZTable.onDeleteError
    TZTable.onNewRecord pour l'initialisation de champs si besoin
    et en gros c'est déjà fonctionnel

    une petit évènement en plus sur le onclose de la fiche au cas ou il y aurait une modification non validée et le programme est bâclé

    un petit bout de code pour la gestion des erreurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TPays.TPaysPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    begin
    with EZDatabaseError(E) do
      begin
        case ErrorCode of
          -625 : ShowMessage('La colonne "Code" doit avoir une valeur');
          -803 : ShowMesssage('Code déjà existant '+#13+#10+'Il ne peut y avoir deux Codes identiques');
          else ShowmessageMessage(E.Message);
        end;
      end;
    Action:=daAbort;
    end;
    Attention ErrorCode de Firebird dans ce bout de code
    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 extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Bon, je vais regarder ça de plus prêt.

    Je n'ai jamais utilisé TZUpdateSQL, découverte donc.

    Et pourquoi faut-il un TDataSet en plus ?

    PS : J'ai essayé avec OnUpdateRecord du TZTable, mais il n'entre jamais dans cet évènement !
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour, en réponse :
    -le TDataset , pour la liaison avec le DbGrid et le DBNavigator
    -pour le OnUpdateRecord , si tu n'as pas mis de TZUpdateSQL c'est comme si la table était en readonly (a bien noter le "comme si" , je n'ai jamais tester cet event , si j'ai un peu de temps je ferais un essai par curiosité)
    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

  5. #5
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Il faut saisir les lignes UPFATE/INSERT/DELETE nécessaires dans le TZUpDateSQL ? Parce que c'est justement ce que j'aime bien du TZTable, y a pas à ce saisir ces lignes particulièrement pénibles... (Comment ça je suis fainéant ? Ben, non, juste informaticien ! )
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    Il faut saisir les lignes UPFATE/INSERT/DELETE nécessaires dans le TZUpDateSQL ?
    oui , mais (moi aussi j'ai une devise : "en faire le moins possible")
    1) il y a un outil qui s'ouvre et qui permet de générer ces sql
    2) on ne veux pas toujours tout modifie dans une table (dans ce cas le TZupdate est très utile ) je pense par exemple :
    - aux champs computed by,
    -au champs fournis par Triggers (par exemple les générateurs)
    etc...
    j'ai pris ces habitudes avec des composants non BDE like (comme l'est ZEOSDBO) et franchement je pense que ce sont de bonnes habitudes à prendre surtout dans une optique multi-utilsateurs/réseau etc..
    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 extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Soit, j'ai mal installé, soit avec SQLite il n'y a pas d'outils qui s'ouvre pour aider

    Juste un bête éditeur de TStrings
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    soit tu as tout simplement oublié de lier la TZQuery/TZTable au TZUpdateSQL (bien sur il faut que la connexion soit active )

    ah petite remarque quand même (je viens de lancer Lazarus pour en être sur , tu m'avais fait douter) j'ai tester ceci avec la version Lazarus 9.27 et les ZEOS 7.0 (téléchargés via SVN) , un clic droit sur le ZSQLUpdate (lié ) me propose en 1° option menu SQLUpdate Editor le double clic lance directement l'éditeur
    Bon bien sur moi je teste avec Firebird mais je ne pense pas que cela fasse de différence
    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

  9. #9
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Bonjour et merci, je ne peux hélas pas vérifier pour le moment, étant cloue sur un lit d'hôpital avec, l'iPad de ma fille comme moyen de communication.

    Merci, et j'essaie tout cela des que je peux

    A+

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    étant cloue sur un lit d'hôpital avec, l'iPad de ma fille comme moyen de communication.
    je compatis (aux 2 maux , l'hôpital et ... )
    bon rétablissement
    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

  11. #11
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    je compatis (aux 2 maux , l'hôpital et ... )
    bon rétablissement
    et merci
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

Discussions similaires

  1. Quels modules Perl pour gérer les documents XML ?
    Par djibril dans le forum Modules
    Réponses: 8
    Dernier message: 02/12/2010, 23h54
  2. [Info] Conseils pour gérer les ressources
    Par calogerogigante dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 05/07/2009, 12h49
  3. Réponses: 13
    Dernier message: 07/02/2007, 12h10
  4. Méthode simple pour gérer les collisions
    Par Hyoga dans le forum OpenGL
    Réponses: 2
    Dernier message: 19/02/2005, 13h43

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