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

Langage Delphi Discussion :

Firedac et TFDQuery


Sujet :

Langage Delphi

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut Firedac et TFDQuery
    Bonjour

    Je travaille sur une application "Delphi 2007/AnyDac" migrée vers "Delphi XE5/Firedac". Un bloc de code fonctionnel dans l'ancienne version pose problème aujourd'hui. Après remplacement d'un TADQuery par un TFDQuery, une requête UPDATE de type ArrayDML plante lamentablement avec une violation de contrainte de clé étrangère.

    En fouinant dans la doc, il est dit:
    1. Définir la valeur de Params.ArraySize
    2. Renseigner les paramètres
    3. Appeler Execute du TFDQuery


    Le code incriminé incrémente Params.ArraySize à chaque ajout d'ensemble de paramètres. En fait, les paramètres sont lus dans une table.
    Et là, je me dis; "Le problème ne viendrait-il pas de là ?

    Question: Faut-il dans Firedac impérativement définir cette valeur avant d'insérer toutes les lignes de paramètres ?? Serait-ce une différence majeure entre Anydac et firedac ?
    L'un d'entre vous serait-il déjà tombé sur ce problème ?

    Papy !



    Bon, il semble que ça ne change rien. J'avais peur que les précédentes valeurs soient réinitialisées à chauqe changement de ArraySize mais il n'en est rien. Je continue à fouiller

  2. #2
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    Bonjour,

    FDQuery.RowsAffected donne quoi ?
    Vu le message, cela ressemble à un mauvais enchainnement de requette non ? Je dis ça, mais faudrait voir un peu de code pour se faire une meilleure idée...

    @++
    Dany

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Le code est beaucoup trop long pour être posé ici.
    J'ai finis par enregistrer les données dans un csv et je les ais passée par un requete dans SSMS. Aucun problème !

    Sauf que .... il semble que l'update à partir SSMS mettre des valeurs null à la place des chaînes vides.
    Le code Delphi renseigne les paramètres avec des AsStrings[x] successifs.
    En remplaçant AsStrings par AsVarByteStrs , tout se passe bien.
    Mais difficile de savoir si ça ne va pas poser d'autres effets. Impossible de trouver de la doc sur ce AsVarByteStrs. :-(


    Trouvé : TADQuery et TFDQuery ne définissent pas la même valeur par défaut dans FormatOptions. Anydac tranforme les chaines vides en null, Firedac fait le contraire. Génial pour les migrations.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise à jour de Firedac (Update 2)
    Par SergioMaster dans le forum Delphi
    Réponses: 11
    Dernier message: 02/05/2014, 21h37
  2. Réponses: 0
    Dernier message: 07/04/2014, 22h10
  3. XE4 , Firedac et datasnap
    Par SergioMaster dans le forum Bases de données
    Réponses: 8
    Dernier message: 01/06/2013, 09h40
  4. Embarcadero propose FireDAC pour l'accès aux Bdd
    Par John Colibri dans le forum Delphi
    Réponses: 0
    Dernier message: 01/03/2013, 06h56

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