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 :

ZQuery et Delete


Sujet :

Lazarus Pascal

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut ZQuery et Delete
    Bonjour,

    Toujours avec mes TZeos.

    J'ai ajouter un bouton afin de réaliser les Delete dans ma table.
    Le code du bouton est Bref, c'est du complexe.

    Mais voilà, si la ligne disparait bien du dbGrid, l'enregistrement, lui, il reste, et à l'ouverture suivante, il réapparait !

    Qu'est-ce que j'ai loupé ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Un petit commit peut-être ?
    Plus sérieusement , qu'est il indiqué au niveau au niveau de ta TZConnection , propriété transactionIsolationlevel ? (par défaut c'est tiNone)

    d'expérience je te dirais de mettre tiReadCommitted pour avoir un fonctionnement semblable au BDE (ce qui est l'objectif de ZEOS) . Je ne sais d'ailleurs pas pourquoi c'est initialisé à tinone .

    je ne ferais pas de cours sur les transactionIsolationlevel (même si mon pseudo contient Master , cela fait longtemps que j'ai laissé tombé la casquette formateur) il y a quelques tutoriels et explications Firebird sur ce sujet.
    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
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    OK, merci Maître

    Je vais regarder de ce coté.

    Petite question, pourquoi ça marche en ajout et modif (insert et update) et pas en suppression (delete) ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Ach , alors ce n'est pas ça le problème
    il faut en faire voir d'avantage
    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
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Après test, ce n'est effectivement pas ça le problème.
    J'ai passé le TransactionIsolationLevel à tiReadComitted et le Delete n'a toujours aucun effet !

    Qu'as-tu besoin de plus comme information ?

    Après tests encore plus poussés, les update/insert ne fonctionnent pas !
    Disons que c'est bizarre ! Je n'y comprend plus rien !

    J'ai réussi à ajouter des éléments au démarrage, mais depuis, plus rien !
    Je crois que les éléments ont ajouté avant que je passe par les composants ZEOS !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je sais que je vais passer encore passer pour un vieux c.. et friser le "hors sujet" par rapport à votre problème, mais j'estime que le dbGrid -enfin ce que j'ai pu comprendre de son fonctionnement- doit être utilisé uniquement comme un composant exclusivement d'affichage (dont pas de saisie dedans). Les interceptions et chargements se font au niveau des dataSource et dataSet d'autant que je rappelle que Lazarus n'est vraiment pas net au niveau de l'UTF8 et qu'en plus il faut ajouter à la difficulté le propre encodage de la base (la présence d'un accent dans un mot peut bloquer la transaction de manière inopinée et sans aucun message du debugger de Lazarus : on a l'impression qu'il ne se passe rien et en effet la base n'est pas mise à jour... alors que le dbGrid ne signale rien... C'est normal, il n'est pas fait pour cela.)

    De plus, je crois que vous utilisez du sqLite donc pas d'accès concurrentiel mais avec une saisie en dbGrid compte-tenu qu'il faut bloquer la base (euh l'enregistrement c'est mieux) puis effectuer son action (ce qui nécessite 2 requêtes), bonjour la méthode "dbGrid". Enfin, cela n'engage que moi, mais j'estime que le zUpdateSQL, la saisie directe en dbGrid sont des simplications très théoriques et une perte de temps réelle. Enfin, toujours méthode de vieux "c..", on gère les transactions et verrous par le code SQL et pas par la fonction implémentée pour le transactionnel dans Zeos.

    Sinon, faut pas désespérer... en attendant qu'un illustre "connaisseur" nous montre comment on utilise ce "complexe" en situation de production sur au moins 2 bases [un code portable c'est mieux] gérant les accès concurrentiels... Par exemple, comment identifie-t-on "finement" avec les zUpdateSQL pourquoi une opération de delete ou d'update est interdite ou impossible (bloquée ou déjà effacée) ?

    Cordialement. Gilles
    Dernière modification par Invité ; 26/02/2010 à 14h39.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Bonjour,

    Non, non, je suis assez d'accord pour éviter les saisies dans les dbGrid, mais là, c'est plus par curiosité et surtout parce que ce sont des tables de paramètres, alors je n'ai pas envie de trop coder. De plus, c'est un programme pour moi, et moi seul, alors...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Ah OK... dans ce cas, c'est un bon sujet d'étude... si vous avez du temps !!!
    Bonne fin de journée.

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Je ne suis pas pressé sur ce programme et j'ai surtout beaucoup de curiosité.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Oui faut rester curieux. Sinon petite remarque pour ne pas rester sur une critique à propos de ces composants : utilisés à "l'ancienne", nous n'avons pas rencontré mieux en fiabilité, sécurité concurrentielle et même vitesse en exploitation que ces composants Zeos qui fonctionnent d'ailleurs aussi bien sous Win que Nux, en Delphi, en C++( builder ) et... en Lazarus. Bref, les "bases" de Zeos sont solides et finalement simples d'acquisition... Le reste de cette bibli est plus alambiqué en effet.

    Cordialement. Gilles

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Louis Griffont Voir le message
    Qu'as-tu besoin de plus comme information ?
    Ben des morceaux de code , ce serait un bon début

    [Edit] par curiosité je m'en suis refait un sans dbnavigateur , ctrl+suppr faisant le delete fleche vers le bas validant un enregistement ajouté

    ci-joint des images
    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

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    J'ai oublié ma clef USB !

    A Lundi !

  13. #13
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Bon, alors le code de la fiche
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    unit utrt_force; 
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, sqlite3conn, sqldb, db, FileUtil, LResources, Forms,
      Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, DBGrids, Buttons, ZDataset,
      ZSqlUpdate;
     
    type
     
      { TF_TrtForce }
     
      TF_TrtForce = class(TForm)
        Btn_Fermer: TBitBtn;
        btn_Suppr : TBitBtn ;
        ds_trtforce: TDatasource;
        db_trtforce: TDBGrid;
        Panel1: TPanel;
        Panel2: TPanel;
        Q_TrtForce: TZQuery;
        UdD_TrtForce: TZUpdateSQL;
        procedure btn_SupprClick(Sender: TObject);
        procedure FormActivate(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { private declarations }
        bo_Debut  : Boolean;
     
      public
        { public declarations }
      end; 
     
    var
      F_TrtForce: TF_TrtForce;
     
    implementation
     
    uses udm_crommonde;
     
    { TF_TrtForce }
     
    procedure TF_TrtForce.FormCreate(Sender: TObject);
    begin
       bo_Debut := True;
    end;
     
    procedure TF_TrtForce.FormActivate(Sender: TObject);
    begin
       If bo_Debut Then
       Begin
          bo_Debut := False;
          Q_TrtForce.Active:=True;
       end;
    end;
     
    procedure TF_TrtForce.btn_SupprClick(Sender: TObject);
    begin
       Q_TrtForce.Delete;
       Q_TrtForce.CommitUpdates;
    end;
     
    initialization
      {$I utrt_force.lrs}
     
    end.
    Pas grand chose à dire, n'est-ce pas ?
    Les codes SQL
    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
     
    Le TZQuery, propriété SQL
    SELECT * FROM T_TrtForce ORDER BY for_score,for_scoexcep
     
    Le TZUpdateSQL
    1) DeleteSQL : DELETE FROM T_TrtForce WHERE for_score=:for_score AND 
    for_scoexcep=:for_scoexcep;
     
    2) InsertSQL : INSERT INTO T_TrtForce 
    (for_score,for_scoexcep,for_ajutoucher,for_ajudegats,for_poidsauto,
    for_chargemax,for_enfoncer,for_enfoncermag,for_barreaux,for_notes) VALUES 
    (:for_score, :for_scoexcep, :for_ajutoucher, :for_ajudegats, :for_poidsauto ,
    :for_chargemax, :for_enfoncer, :for_enfoncermag, :for_barreaux, :for_notes);
     
    3) UpDateSQL : UPDATE T_TrtForce SET for_ajutoucher=:for_ajutoucher, 
    for_ajudegats=:for_ajudegats, for_poidsauto=:for_poidsauto, 
    for_chargemax=:for_chargemax, for_enfoncer=:for_enfoncer, 
    for_enfoncermag=:for_enfoncermag, for_barreaux=:for_barreaux, 
    for_notes=:for_notes WHERE for_score=:for_score AND 
    for_scoexcep=:for_scoexcep;
    Rien dans le Refresh SQL !

    La connexion à la base se trouve dans un DataModule, et n'a rien de spécial, cf la pièce jointe.

    Voilà, s'il faut autre chose... Il suffit de demander !
    Images attachées Images attachées  

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    je ne vois rien de particulier , en effet
    sauf peut être le commitupdates me semblant de trop dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TF_TrtForce.btn_SupprClick(Sender: TObject);
    begin
       Q_TrtForce.Delete;
    //   Q_TrtForce.CommitUpdates;
    end;
    sauf , peut-être, que j'utilise le OLD_champ dans la clause where de la Query
    je suggère ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Le TZUpdateSQL
    1) DeleteSQL : DELETE FROM T_TrtForce WHERE for_score=:OLD_for_score AND 
    for_scoexcep=:OLD_for_scoexcep;
     
     
    3) UpDateSQL : UPDATE T_TrtForce SET for_ajutoucher=:for_ajutoucher, 
    for_ajudegats=:for_ajudegats, for_poidsauto=:for_poidsauto, 
    for_chargemax=:for_chargemax, for_enfoncer=:for_enfoncer, 
    for_enfoncermag=:for_enfoncermag, for_barreaux=:for_barreaux, 
    for_notes=:for_notes WHERE for_score=:OLD_for_score AND 
    for_scoexcep=:OLD_for_scoexcep;
    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

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Pour le OLD_Champ, pourquoi pas, mais ça n'explique pas pourquoi, même le insert ne fonctionne pas !

    J'ai essayé en repassant sur les composants classiques de Lazarus, et rien n'y fait !

    Je ne sais plus quoi faire ! Peut-être un problème avec SQLite !

  16. #16
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    c'est vrai que SQLLite , je connais pas , je t'aurais bien dirigé vers le site de Chris37 mais il l'a fermé .
    Peut être que les paramètres s'écrivent différement avec SQLLite ? genre @ au lieu de :
    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

  17. #17
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Je vais essayer autrement, on verra bien !
    Merci en tout cas de ta patiente et de tes réponses.

    A+ (très certainement ! )

  18. #18
    Membre expérimenté
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Points : 1 688
    Points
    1 688
    Par défaut
    Je prend le train en route ! c'est un vrai roman votre truc les gars !

    Mais non, le site est ouvert
    http://lazarus-fr.espace-malin.fr/

    c'est le domaine lazarus-fr.net qui n'existe plus


  19. #19
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    J'ai regardé le tuto sur Zeos et Sqlite3, mais j'arrive bien jusqu'à la fin, c'est après que ça merdouille, et le tuto s'arrête sans expliquer le TZUpDateSQL !

  20. #20
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut

    oui , ca devient roman


    @chris37 je croyais que tu avais fermé les deux .

    Ceci dit , je me demande si ce n'est pas un Pb SQLite car avec Firebird ça passe sans problème . J'avoue mon incompétence avec cette base, je suis et je reste Firebird

    peut être des réponses sur le forum des ZEOSDBO ?
    [Edit] je ne lâche jamais
    un petit tour sur le forum ZEOS et déjà une piste http://zeos.firmos.at/viewtopic.php?t=2586
    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

Discussions similaires

  1. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02
  2. delete en cascade
    Par bruno270579 dans le forum Requêtes
    Réponses: 8
    Dernier message: 16/12/2003, 17h17
  3. fonction postgresql qui delete un enr
    Par access dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/11/2003, 14h44
  4. [requête] DELETE + SELECT
    Par doohan dans le forum Requêtes
    Réponses: 6
    Dernier message: 07/07/2003, 12h27
  5. [langage] delete de fichier
    Par lolive dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2003, 15h04

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