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 :

Remplacement des retours chariots (saut de ligne)


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 61
    Points : 39
    Points
    39
    Par défaut Remplacement des retours chariots (saut de ligne)
    Bonjour à tous,

    Je suis actuellement en train de développer une application afin de récupérer tout le fichier clients d'une base SQL Server 2000 afin de tout mettre dans une base de données Firebird 2.1. L'application récupère donc les informations de SQL Server 2000 via ODBC et injecte les données récupérer dans Firebird via le composant UIB.

    Cependant, lors de la récupération (de l'adresse notamment), celle-ci contient des retours chariots (ou saut de ligne) qui pose problème lors de l'injection des données dans Firebird 2.1 (je génère une requête SQL).

    Voici la requête génère qui pose problème :
    INSERT INTO "client" (IND, NC, NUM, NOM, ADRESSE, CODEPOST, VILLE, TEL, FAX, PORTABLE, ESCALIER, ETAGE, APPT) VALUES ('5642/1', '5642', 1, 'ENTREPRISE X', 'ADRESSE LIGNE 1'#$D#$A'ADRESSE LIGNE 2', '75000', 'PARIS', '0125364521', '0125364521', '', '', '', '')
    J'aimerai pouvoir remplacer ces retours chariots et les remplacer par des valeurs que Firebird accepte J'ai tenté de remplacer '#$D#$A' avec AnsiRemplaceText, AnsiRemplaceStr, mais cela n'a rien donné...

    Merci de toute l'aide que vous pouvez m'apporter. Si vous avez des questions, n'hésitez pas à me contacter.

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    Tu peux toujours les remplacer par des blanc "#32" après les avoir insérer.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 61
    Points : 39
    Points
    39
    Par défaut
    Je n'arrive pas à remplacer ces caractères avec les fonctions que j'ai précité dans mon premier message.
    Je me pose une question est-ce que '#$D#$A' sont-ils considéré comme une chaine de caractères ?
    Connaissez-vous une fonction qui permet de remplacer ce genre de caractères ?

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par cvexxx Voir le message
    Je n'arrive pas à remplacer ces caractères avec les fonctions que j'ai précité dans mon premier message.
    Je me pose une question est-ce que '#$D#$A' sont-ils considéré comme une chaine de caractères ?
    Connaissez-vous une fonction qui permet de remplacer ce genre de caractères ?
    sans les quotes, oui #$D c'est Chr($D), soir Chr(13)

    avec les quotes c'est aussi une chaine mais qui contient #, $ et D
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    A mon sens, ta requête pose deux problèmes à Firebird.

    1/ Firebird reconnaît-il #xx comme un caractère ? (Il ne le fait pas en 1.5, c'est sûr).
    2/ Tu essaies de réaliser une concaténation par simple juxtaposition, sans l'opérateur ||.
    Pour ma part, quand je dois faire des insertions avec des sauts de lignes, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'XXXX' || ascii_char(13) || ascii_char(10) || 'YYYY'
    ascii_char étant une UDF définie dans ib_udf.dll qui est fournie avec Firebird (il faut néanmoins déclarer ascii_char dans ta base.

    Pour le remplacement proprement dir , un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StringReplace(MaChaine, '#$D#$A', ' || ascii_char(13) || ascii_char(10) || ', [])
    devrait faire l'affaire)
    Roland

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    C'est expliqué dans la FAQ Firebird.
    Comment intégrer un saut de ligne (CRLF) à une chaine en SQL?

    @+ Claudius

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par rsc Voir le message
    A mon sens, ta requête pose deux problèmes à Firebird.

    1/ Firebird reconnaît-il #xx comme un caractère ? (Il ne le fait pas en 1.5, c'est sûr).
    2/ Tu essaies de réaliser une concaténation par simple juxtaposition, sans l'opérateur ||.
    Pour ma part, quand je dois faire des insertions avec des sauts de lignes, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'XXXX' || ascii_char(13) || ascii_char(10) || 'YYYY'
    ascii_char étant une UDF définie dans ib_udf.dll qui est fournie avec Firebird (il faut néanmoins déclarer ascii_char dans ta base.

    Pour le remplacement proprement dir , un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StringReplace(MaChaine, '#$D#$A', ' || ascii_char(13) || ascii_char(10) || ', [])
    devrait faire l'affaire)
    nan !

    dans son code il a indiqué 'ADRESSE LIGNE 1'#$D#$A'ADRESSE LIGNE 2'

    qui est bien un chaîne de caractère qui contient un CR/LF

    on aurait pu l'écrire comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     'ADRESSE LIGNE 1'#$D#$A'ADRESSE LIGNE 2'
     'ADRESSE LIGNE 1' + #$D#$A + 'ADRESSE LIGNE 2'
     'ADRESSE LIGNE 1' + CHR(13) + CHR(10) + 'ADRESSE LIGNE 2'
    donc ton StringReplace ne remplacera rien...sauf à écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     StringReplace(MaChaine, #$D#$A, ' || ascii_char(13) || ascii_char(10) || ', [])
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 61
    Points : 39
    Points
    39
    Par défaut
    Merci, je vous remercie tous de vos réponses qui m'ont aidé à résoudre mon problème !
    Merci à vous

  9. #9
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    donc ton StringReplace ne remplacera rien.
    J'ai supposé que la chaîne était l'ensemble de la requête INSERT
    Roland

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/06/2014, 12h15
  2. Retour chariot saute une ligne en trop
    Par tony danza dans le forum Langage
    Réponses: 1
    Dernier message: 11/03/2009, 10h28
  3. Réponses: 3
    Dernier message: 03/01/2008, 21h41
  4. [Système] Remplacement des retours ligne (CR)
    Par kabal22 dans le forum Langage
    Réponses: 1
    Dernier message: 15/11/2007, 12h27
  5. Remplacer les retour chariot par des <br/>
    Par novices dans le forum Langage
    Réponses: 1
    Dernier message: 21/08/2006, 22h11

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