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 :

De la bonne clôture d'un FDLocalSQL


Sujet :

Bases de données Delphi

  1. #1
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 254
    Points : 35 990
    Points
    35 990
    Billets dans le blog
    54
    Par défaut De la bonne clôture d'un FDLocalSQL
    Bonjour,

    Voilà le contexte : [Delphi 10.3] une table en mémoire ( article,quantité ) qui est remplie par programme et la nécessité d'obtenir un résumé de celle-ci. (total_article).

    La solution 1 consiste bien sûr à faire un bout de code genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tablememoire.first;
    var total_article: integer :=0;
    while not tablememoire.eof do
    begin
      total_article:=total_article+teblememoirequantité.asinteger; 
      tablememoire.next;
    end;
    ce qui revient à un SQL SELECT SUM(quantité) Total_article FROM tablememoire
    J'ai donc voulu utiliser TFDLocalSQL pour éviter le code,(est-ce que ce sera plus rapide ? je n'en sais rien). J'ai donc ajouter une connexion SQLite (sans base de données donc "mémoire") un TFDLocalSQL avec la table memoire déclarée comme dataset et donc ma requête. Un test en mode design, c'est nickel.

    Passons à l'exécution, nickel également, le résultat est là jusqu'à ce que je ferme l'application qui me donne une erreur de pointeur non alloué
    Dés que l'on isole la partie LocalSQL tout fonctionne normalement, conclusion il s'agit de cette "chaine" de composants qui déconne. Comme celle-ci nécessite un ordre précis de construction j'en ai conclu qu'il fallait clore en sens inverse cad la requête, le FDLocalSQL, la connexion SQLite puis la table mémoire.

    Malgré ces étapes j'ai toujours cette erreur . Ayant d'autres utilisations de FDLocalSQL hors tables en mémoire (généralement sur des tables de 2 bases de données) sans aucun problème, je ne vois pas d'où peut venir mon souci.

    Donc, si vous avez utilisé ce genre de FDLocalSQL sur table en mémoire, que vous n'avez pas expérimenté cette erreur, quelle bourde ai-je commis ?
    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

  2. #2
    Membre émérite Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - développeur Delphi, PHP et JS
    Inscrit en
    juin 2013
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2013
    Messages : 1 164
    Points : 2 444
    Points
    2 444
    Par défaut
    Ca ne me dit rien, je suppose qu'en DEBUG impossible de savoir quel pointeur pose problème ?

    As-tu la possibilité de tester en 10.4 ? C'est peut-être une anomalie qui a été corrigée entre temps plus qu'un problème dans ton code.

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 270
    Points : 26 778
    Points
    26 778
    Par défaut
    oui j'ai fait ça sur un projet

    en fait je devais en urgence récupérer la BDD d'un client sur laquelle je n'avais pas la main autrement qu'en SQL, pour l'importer dans un produit

    le plus simple que j'ai trouvé a été de tout dumper dans des TClientDataSet...et ensuite j'ai utilisé TFDLocalSQL pour interroger les Dataset

    du coup tu dois avoir un évènement GetDataSet, tu fais quoi là dedans ? que mets tu dans le paramètre AOwned ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 254
    Points : 35 990
    Points
    35 990
    Billets dans le blog
    54
    Par défaut
    Merci
    Citation Envoyé par pprem Voir le message
    Ca ne me dit rien, je suppose qu'en DEBUG impossible de savoir quel pointeur pose problème ?
    Non puisque c'est en cloture de programme
    Citation Envoyé par pprem Voir le message
    As-tu la possibilité de tester en 10.4 ? C'est peut-être une anomalie qui a été corrigée entre temps plus qu'un problème dans ton code.
    Je vais le faire dans un test distinct dès que j'aurai le temps d'isoler ça de l'application (toujours l'urgence prioritaire)

    Citation Envoyé par Paul
    du coup tu dois avoir un évènement GetDataSet, tu fais quoi là dedans ? que mets tu dans le paramètre AOwned ?
    non, c'est un seul dataset mis au design
    Citation Envoyé par Paul
    que mets tu dans le paramètre AOwned ?
    Ah, ça c'est une bonne question, il était à true (à ma souvenance puisque pour des raisons d'urgence j'ai viré cette partie)
    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
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 254
    Points : 35 990
    Points
    35 990
    Billets dans le blog
    54
    Par défaut
    Bonjour,

    ce matin avant les appels téléphoniques prévisibles j'ai donc isolé la partie Local SQL
    et vlan

    Nom : Capture.PNG
Affichages : 42
Taille : 20,5 Ko

    dés que j'ai posé une liaison au design (livebindings) c'est carrément L'EDI qui plante
    Je crois que je tiens mon coupable
    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

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 254
    Points : 35 990
    Points
    35 990
    Billets dans le blog
    54
    Par défaut
    Pour continuer sur le sujet
    tout d'abord :
    Citation Envoyé par Paul
    que mets tu dans le paramètre AOwned ?
    AOwned était à true.

    Pour tenter de résoudre mon problème en cas de Livebindings, je pense que la solution consisterai à désactiver les liens avant fermeture, peut-être qu'un DisableControls suffirait je n'en suis pas sur à 100% donc ce sont encore des pistes à suivre.
    Comme j'ai, quelquefois, cette erreur en fermant des applications utilisant FDLocalSQL je me pencherai sur le sujet dès que l'urgent sera terminé, n'habitant pas Lourdes n'attendez pas de miracle surtout que je passe doucement en mode vacances

    Citation Envoyé par pprem
    As-tu la possibilité de tester en 10.4 ? C'est peut-être une anomalie qui a été corrigée entre temps plus qu'un problème dans ton code.
    Même comportement avec 10.4. Toutefois, je ne sais toujours pas si l'on doit qualifier ce truc de bogue ou pas donc pour l'instant pas de signalement
    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. je ne trouve pas la bonne syntaxe
    Par poelvo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2003, 02h30
  2. Réponses: 9
    Dernier message: 24/05/2003, 11h25
  3. [MDI] comment fermer la bonne fenêtre enfant ?
    Par KThrax dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2002, 10h42
  4. Afficher les bonnes facettes
    Par WormsHL-Groove dans le forum OpenGL
    Réponses: 3
    Dernier message: 26/08/2002, 22h36
  5. Toutes les bonnes choses ont un début ...
    Par Bols2000 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/08/2002, 18h01

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