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 :

Firedac LFDLocalSQL et requête


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut Firedac LFDLocalSQL et requête
    Bonjour

    Autre problème sur mon appli !
    Je cherche à transférer des anciennes données DBase dans MySQL.
    Pour ça je me suis tourné vers le BatchMove mais il me pose un problème qui se reproduit également sur TFDLocalSQL.

    Cela vient de noms de champs très mal fichus que je ne peux changer sans me prendre des jours de boulot supplémentaires.
    Par exemple, un champ se nomme OF. Pas très malin, on est d'accord.

    Donc, avec le TFDLocalSQL, j'ai tenté de faire un

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into tableDest select * from TableSource

    Là, je ramasse une erreur de syntaxe. Alors je vais plus loin en mettant tous les noms de champs entourés de crochets.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into tableDest([champ1], [champ2]) select [champ1], [champ2] from TableSource

    Et là même erreur de syntaxe à cause du OF

    On dirait que le composant refait une requête "à sa sauce" à partir de ce que je lui ai donné parce que dans le message d'erreur il indique une partie de la requête qui commence par OF, etc..

    Alors, soit je trouve une solution pour le forcer à faire ce que je veux et prendre la requête sans modification, soit je vais devoir faire du transfert ligne à ligne et ça, même si c'est facile, je trouve ça un peu stupide quand on a un composant qui devrait pouvoir faire ça.


    Suite et fin ?

    J'ai trouvé une solution de contournement ! Avant le transfert, je renomme les colonnes qui posent problème, je fais l'import des données, puis je remets les noms de champs comme avant.
    Pas terrible mais ça a le mérite de fonctionner

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 633
    Billets dans le blog
    65
    Par défaut
    FDLocalSQL implique une syntaxe SQlite d'où le refus de OF, mot clé réservé
    Tu as essayé en utilisant des guillemets plutôt que des '[ ]' pour les noms de colonnes à problème ou encore des alias de nom de colonnes ?
    Pour ce qui est du Batchmove, il y avait certainement une solution à base de Mappings (cette fois du TFDBatchmove). Je maitrise mal cette partie, non abordée dans la bible de Cary Jensen (Delphi in Depth : Firedac) et pas plus dans l'aide

  3. #3
    Membre Expert

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    Merci Sergio pour l'idée !

    A force de fouiner, j'ai fini par trouver dans la propriétés FormatOptions de TFDTable et TFDQuery un champ "QuoteIdentifier" et ça fait le travail.
    Il semble que ça le fasse aussi bien pour les noms de colonnes que les noms de table.
    Il va falloir que je note ça en gros dans les choses à ne pas oublier

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

Discussions similaires

  1. Probleme de Requête Avec un TFdQuery(Firedac)
    Par gegila dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/05/2020, 17h42
  2. FireDAC, requête select et array DML
    Par Zatoobux dans le forum Bases de données
    Réponses: 5
    Dernier message: 07/10/2019, 13h38
  3. [Firebird] INSERT et les sous-requêtes avec FireDAC
    Par delphi2019 dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/08/2019, 12h44
  4. Firedac, definition DataType sur requête SQL
    Par r038tmp5 dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/12/2016, 08h58
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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