Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/05/2005, 14h42   #1
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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 :
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.
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2005, 15h27   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
question réccurente et qui a été donné encore il y a pas si longtemps...

En deux mots :
UDF
et rfunc par exemple
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2005, 16h05   #3
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2005, 17h10   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2005, 17h27   #5
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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 :
DROP EXTERNAL FUNCTION CHR;
et
Code :
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 :
INSERT INTO MyTable (X) VALUES ('...bla...'+Chr(13)+'...bla...');
CONCLUSION : j'obtiens le message :
Citation:
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
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2005, 10h08   #6
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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 :
INSERT INTO MyTable (X) VALUES ('...bla...'+Chr(13)+'...bla...');
doit s'écrire
Code :
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...
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2005, 09h38   #7
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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.
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2005, 11h30   #8
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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 ?
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2005, 12h50   #9
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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 :
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 :
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...
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2005, 09h35   #10
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h15.


 
 
 
 
Partenaires

Hébergement Web