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

SQL Firebird Discussion :

[D7] Insertion d'un saut de ligne dans un champ texte


Sujet :

SQL Firebird

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut [D7] Insertion d'un saut de ligne dans un champ texte
    J'aimerai insérer un retour à la ligne dans un champ de type texte d'une requête insert ie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO MyTable (X) VALUES ('... bla bla [color=red]saut de ligne[/color] bla bla...');
    J'ai essayé avec mais c'est une fonction inconnue sous InterBase.

    Merci d'avance.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    question réccurente et qui a été donné encore il y a pas si longtemps...

    En deux mots :
    UDF
    et rfunc par exemple

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Sans vouloir en rajouter : je vois pas comment j'aurais deviné l'existence de cette librairie (peut-être il y a t'il des références dans les tutoriaux ?).

    Merci du coup de main
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    On ne peux en effet pas le deviné et ce n'est pas ce que je vous reprochais.

    Votre problème n'est pas unique et d'autre avant vous ont posé cette question.
    Vous auriez gagné du temps à utiliser la fonction rechercher du forum ou à parcourir tout simplement les autres topics.
    De plus celà évite la dupplication des même questions ce qui polue le forum. (et use les bonnes ames qui consacrent du temps à aider les autres en répondant aux questions)

    Il faut pensé que ce n'est pas un chat, c'est un endroit d'échange qui est aussi une une bibliothèque.

    Donc avant de poser une question il est bien de rechercher avant si quelqu'un n'a pas déjà rencontré un problème similaire.

    Celà fait parti des règles d'utilisation du forum.

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Ah mais je suis tout-à-fait d'accord et je vois bien l'utilité et le fonctionnement d'un forum comme vous mais j'expliquais juste que j'ai passé plusieurs heures à faire des recherches pour insérer une ligne vide.
    Au passage, j'imagine que je m'y suis mal pris parce que dans la fonction rechercher du forum (justement) j'ai saisi : 'saut ligne' et j'ai lu tous les résultats retournés par google

    Bref, grâce à votre post j'ai progressé mais je bloque encore (si je peux insister ?) : j'ai donc récupéré et copié rfunc.dll dans le répertoire udf d'installation d'InterBase (C:\Program Files\Borland\InterBase\udf).

    Puis j'ai effectué les instructions suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DROP EXTERNAL FUNCTION CHR;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE EXTERNAL FUNCTION CHR
    SMALLINT
    RETURNS CSTRING(2)
    ENTRY_POINT 'fn_chr'  MODULE_NAME 'rfunc';
    puis : Enfin, j'ai exécuté ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO MyTable (X) VALUES ('...bla...'+Chr(13)+'...bla...');
    CONCLUSION : j'obtiens le message :
    Invalid request BLR at offset 576
    function CHR is not defined
    module name or entrypoint could not be found
    Statement : ...
    D'après ce que je comprends : il n'arrive même pas à localiser rfunc.dll non (J'ai aussi mis à jour le fichier de config de mon serveur FireBird comme vous le conseilliez dans un aurte post 8) ) ?

    Merci d'avance
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Vous auriez tout simplement cherché CHR ou CRLF dans le forum vous auriez trouvé.

    Maintenant sachez que la concaténation de chaine se fait non pas avec + mais avec ||

    et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO MyTable (X) VALUES ('...bla...'+Chr(13)+'...bla...');
    doit s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO MyTable (X) VALUES ('...bla...'||Chr(13)||'...bla...');

    Ensuite pour le message d'erreur
    http://www.developpez.net/forums/vie...id+request+blr peut être instructif...

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Merci pour toutes ces infos mais après une variété de tentatives je n'arrive toujours pas à utiliser la fonction CHR ; même si j'essaye de la redéfinir (DROP) et/ou de lui donner un autre nom (MYCHR au lieu de CHR).

    J'ai tenté de trouver plus d'infos sur les tutoriaux d'interbase et firebird, j'ai parcouru toutes les pages des forums après recherche sur le mot clé rfunc, j'ai même utilisé IBExpert, etc. mais rien n'y fait j'ai même paramétré le fichier de config de firebird.

    Dans un souci de délai je ne peux pas chercher plus longtemps mais si l'un de vous rencontre le même problème et qu'il trouve UNE solution alors je lui serai reconnaissant de me faire signe.

    Thanks Barbibulle.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  8. #8
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    D'apres le message il trouve bien rfunc.dll. Supprimez là et vous aurez un autre message.

    Apparemment il ne trouve pas la fonction fn_chr dans rfunc.

    Avez vous téléchargé la bonne version de rfunc ?
    Utilisé le bon script de déclaration de chr ?
    Essayé de faire un backup suivi d'un restore de votre base pour netoyer les eventuelles polutions ?

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    1- J'ai téléchargé et essayé 2 versions de rfunc : la version stable (2.0.1.2) et la dernière version disponible (2.1.3.1 RC1). Dans les 2 cas j'ai le même message d'erreur, même après avoir effectué un DROP, et même si j'utilise le nom de fonction MYCHR au lieu de CHR.

    2- Concernant le script de déclaration de chr, j'ai utilisé le contenu du fichier .sql qui se trouve dans le répertoire sql de l'archive téléchargée. Pour la version 2.0.1.2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE EXTERNAL FUNCTION CHR
       SMALLINT
       RETURNS CSTRING(2)
      ENTRY_POINT 'fn_chr'  MODULE_NAME 'rfunc';
    3- Pour la version 2.1.3.1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE EXTERNAL FUNCTION CHR
       SMALLINT
       RETURNS CSTRING(2) FREE_IT
      ENTRY_POINT 'fn_chr'  MODULE_NAME 'rfunc';
    Par contre, je dispose seulement du .gdb ; je ne peux donc pas faire de backup/restore de la base, non ?

    4- Ceci dit, j'ai vu sous IBConsole et IBExpert, dans la base en question une section 'UDFs' où j'ai ajouté la déclaration de CHR que je vois maintenant aussi sous IBConsole. Auparavant j'exécutais la déclaration comme toute autre requête SQL pensant que le résultat était le même, je me trompais ?

    5- lorsque je renomme le fichier rfunc.dll en rfunc.dll_TEST alors j'ai le même message d'erreur ; ça semble indiquer que j'ai installé ce fichier au mauvais endroit, non ?
    Pourtant, je suis sous XP, D7, FireBird 1.5 et j'ai copié cette DLL dans 'C:\Program Files\Borland\InterBase\udf'

    Merci encore de votre patience et de votre intérêt...
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    J'avais plusieurs versions de rfunc.dll et à des endroits différents sur mon disque. J'ai fait le tri, recompilé mon projet et maintenant je peux utiliser la fonction CHR sans problème.

    Merci encore Barbibulle
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

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

Discussions similaires

  1. Insertion d'un saut de ligne dans LONG_RAW
    Par nabla23 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 17/01/2013, 15h08
  2. Réponses: 6
    Dernier message: 11/09/2006, 11h44
  3. [VBA-E] Insertion d'un saut de ligne dans un mail automatique
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 10/05/2006, 17h58
  4. [MFC] Saut de ligne dans un fichier texte
    Par le-makinero dans le forum MFC
    Réponses: 2
    Dernier message: 18/04/2006, 10h40
  5. Réponses: 2
    Dernier message: 12/02/2006, 15h42

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