OVH Cloud OVH Cloud

[mySQL] Retour chariot

8 réponses
Avatar
Roumegou Eric
Bonjour,

Cela fait un moment que cela m'énerve cette gestion des RC dans les
champs de type text (ou varchar)
En dev, si je passe à travers les classes mysql4wd ou pcsoft un ordre
du style
UPDATE PEOPLE SET PPL_COMMENT=('Agences, conseil en publicité

Société à responsabilité limitée

Chiffres au :

CA :

Effectif :') WHERE PPL_ID= 8724

Il va bien interpreter les sauts de ligne.
En revanche, si je stocke cette ordre dans un fichier texte sql et
l'execute; les RC n'apparaîtront pas.

Si j'exporte par mysqldump, il y aura
'Agences, conseil en publicité\n\nSociété à responsabilité
limitée\n\nChiffres au : \n\nCA : \n\nEffectif :'

contre (la commande passée par les accès)
'Agences, conseil en publicité\r\n\nSociété à responsabilité
limitée\n\r\nChiffres au : \r\n\nCA : \r\n\nEffectif :'

Je vais tenter de modifier les RC par \r\n\n dans ma fonction Quote.

Mais pourquoi \r\n\n et pas \r\n ?

--
Eric Roumegou
http://cerbermail.com/?Wk2D8D62KI
(cliquez sur le lien ci-dessus pour me contacter en privé)

8 réponses

Avatar
psarrazy
n = ligne suivante
r = retour chariot
t = tabulation
"Roumegou Eric" a écrit dans le message de news:

Bonjour,

Cela fait un moment que cela m'énerve cette gestion des RC dans les
champs de type text (ou varchar)
En dev, si je passe à travers les classes mysql4wd ou pcsoft un ordre
du style
UPDATE PEOPLE SET PPL_COMMENT=('Agences, conseil en publicité

Société à responsabilité limitée

Chiffres au :

CA :

Effectif :') WHERE PPL_ID= 8724

Il va bien interpreter les sauts de ligne.
En revanche, si je stocke cette ordre dans un fichier texte sql et
l'execute; les RC n'apparaîtront pas.

Si j'exporte par mysqldump, il y aura
'Agences, conseil en publiciténnSociété à responsabilité
limitéennChiffres au : nnCA : nnEffectif :'

contre (la commande passée par les accès)
'Agences, conseil en publicitérnnSociété à responsabilité
limitéenrnChiffres au : rnnCA : rnnEffectif :'

Je vais tenter de modifier les RC par rnn dans ma fonction Quote.

Mais pourquoi rnn et pas rn ?

--
Eric Roumegou
http://cerbermail.com/?Wk2D8D62KI
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
Roumegou Eric
psarrazy a utilisé son clavier pour écrire :
n = ligne suivante
r = retour chariot
t = tabulation


oui bien sûr, ça c'est la théorie.

MAis en fait, c'est
RC=chr(10)+chr(13)=rnn

--
Eric Roumegou
http://cerbermail.com/?Wk2D8D62KI
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
mat
Dans le passée, les commandes n et r n'étaient pas toujours interprétés de
la même façon. Dans certains cas le r n'était qu'un retour chariot sans
aller à une nouvelle ligne et le n sans aller au début de ligne. Dans
d'autres cas, les deux faisait exactement la même chose. On pouvait
programmer les imprimantes par dip switch comment les interpréter. Je ne
serais pas étonné qu'au début, RC était composé de ascii 13 + 10 (début
ligne + nouvelle ligne) et qu'un jour ils ont rajouté le n au ascii 13,
oubliant d'enlever l'ascii10 de la fonction RC. Résultat (r + n) + n.


"Roumegou Eric" a écrit dans le message de
news:
psarrazy a utilisé son clavier pour écrire :
> n = ligne suivante
> r = retour chariot
> t = tabulation
oui bien sûr, ça c'est la théorie.

MAis en fait, c'est
RC=chr(10)+chr(13)=rnn

--
Eric Roumegou
http://cerbermail.com/?Wk2D8D62KI
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
Fabrice Burghgraeve
salut .

"mat" a écrit dans le message de
news:
(...)
serais pas étonné qu'au début, RC était composé de ascii 13 + 10 (début


(...)
Roumegou :
> psarrazy a utilisé son clavier pour écrire :
> > n = ligne suivante
> > r = retour chariot
> > t = tabulation
> oui bien sûr, ça c'est la théorie.
>
> MAis en fait, c'est
> RC=chr(10)+chr(13)=rnn



Quoi !?!?!?
T'es sur ?!?!?!

C'est une modif de windev 8 par rapport a windev 7 ?

Parce qu'en 7.5, CR vaut CR+LF
(RC c'est pareil)

ou plutot, comme leur notation est vraiment mal choisie :
la constante CR en windev est une chaine qui vaut caract(13)+caract(10)

Je dis ca parce qu'au depart je me suis fait avoir.
J'avais naivement cru que CR valait CR. (J'ai de ces idees parfois)

Mais a mon avis, pour revenir a ce que tu dis, tu te plantes.
tu ecris : chr(10)+chr(13) = rnn

soit 2 caracteres d'un cotes et 3 de l'autre.
alors explique moi comment ca peut etre egal... ;)

en plus de ca c'est pas chr(10)+chr(13), mais chr(13)+chr(10), donc ca fait
2 erreurs dans la meme ligne...
C'est pas bien ;)


--
Fabrice Burghgraeve
Computer & Services
suivez ce lien pour me repondre en prive :
http://cerbermail.com/?I3GMPRuXDD
Avatar
Roumegou Eric
Fabrice Burghgraeve a exposé le 02/02/2004 :
salut .

"mat" a écrit dans le message de
news:
(...)
serais pas étonné qu'au début, RC était composé de ascii 13 + 10 (début


(...)
Roumegou :
psarrazy a utilisé son clavier pour écrire :
n = ligne suivante
r = retour chariot
t = tabulation


oui bien sûr, ça c'est la théorie.

MAis en fait, c'est
RC=chr(10)+chr(13)=rnn





Quoi !?!?!?
T'es sur ?!?!?!

C'est une modif de windev 8 par rapport a windev 7 ?

Parce qu'en 7.5, CR vaut CR+LF
(RC c'est pareil)

ou plutot, comme leur notation est vraiment mal choisie :
la constante CR en windev est une chaine qui vaut caract(13)+caract(10)

Je dis ca parce qu'au depart je me suis fait avoir.
J'avais naivement cru que CR valait CR. (J'ai de ces idees parfois)

Mais a mon avis, pour revenir a ce que tu dis, tu te plantes.
tu ecris : chr(10)+chr(13) = rnn

soit 2 caracteres d'un cotes et 3 de l'autre.
alors explique moi comment ca peut etre egal... ;)

en plus de ca c'est pas chr(10)+chr(13), mais chr(13)+chr(10), donc ca fait



Mea maxima culpa
mais 1 erreur seulement votre honneur !
2 erreurs dans la meme ligne...
C'est pas bien ;)



RC=chr(13)+chr(10) bien sûr
c'est vrai en wd7.5 (et probablement en 8, j'ai pas !)
Ce que je dis, c'est qu'en saisissant dans un champs texte multi ligne
et que l'on fait des retours chariots
Ensuite que l'on sauvegarde cela dans une base mysql.(en sql natif)
Quand on récupère la fiche, tjrs dans le meme prog WD, le texte est
bien restitué avec ses retours chariots.

Maintenant si j'exporte par mysqldump cette table j'aurais :
'Attention je vais à la lignernnje suis à la 2eme lignernnje suis
à 3 ...'

D'où ma conclusion; si je veux voir mes retours à la ligne dans mon
texte, je dois substituer RC par rnn

--
Eric Roumegou
http://cerbermail.com/?Wk2D8D62KI
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
jacques trepp
Roumegou Eric wrote:
Fabrice Burghgraeve a exposé le 02/02/2004 :
salut .

"mat" a écrit dans le message de
news:
(...)
serais pas étonné qu'au début, RC était composé de ascii 13 + 10
(début


(...)
Roumegou :
psarrazy a utilisé son clavier pour écrire :
n = ligne suivante
r = retour chariot
t = tabulation


oui bien sûr, ça c'est la théorie.

MAis en fait, c'est
RC=chr(10)+chr(13)=rnn





Quoi !?!?!?
T'es sur ?!?!?!

C'est une modif de windev 8 par rapport a windev 7 ?

Parce qu'en 7.5, CR vaut CR+LF
(RC c'est pareil)

ou plutot, comme leur notation est vraiment mal choisie :
la constante CR en windev est une chaine qui vaut
caract(13)+caract(10)

Je dis ca parce qu'au depart je me suis fait avoir.
J'avais naivement cru que CR valait CR. (J'ai de ces idees parfois)

Mais a mon avis, pour revenir a ce que tu dis, tu te plantes.
tu ecris : chr(10)+chr(13) = rnn

soit 2 caracteres d'un cotes et 3 de l'autre.
alors explique moi comment ca peut etre egal... ;)

en plus de ca c'est pas chr(10)+chr(13), mais chr(13)+chr(10), donc
ca fait



Mea maxima culpa
mais 1 erreur seulement votre honneur !
2 erreurs dans la meme ligne...
C'est pas bien ;)



RC=chr(13)+chr(10) bien sûr
c'est vrai en wd7.5 (et probablement en 8, j'ai pas !)
Ce que je dis, c'est qu'en saisissant dans un champs texte multi ligne
et que l'on fait des retours chariots
Ensuite que l'on sauvegarde cela dans une base mysql.(en sql natif)
Quand on récupère la fiche, tjrs dans le meme prog WD, le texte est
bien restitué avec ses retours chariots.

Maintenant si j'exporte par mysqldump cette table j'aurais :
'Attention je vais à la lignernnje suis à la 2eme lignernnje
suis à 3 ...'

D'où ma conclusion; si je veux voir mes retours à la ligne dans mon
texte, je dois substituer RC par rnn



bonjour,
j'avais soulevé le problème quand j'ai attaqué avec mysql.
Je n'ai réussi qu'en utilisant des champs RTF. :(
évidemment, au niveau du stockage, si tu tapes :
A
B
C

s'est stocké sous la forme :
{rtf1ansiansicpg1252deff0deflang1036{fonttbl{f0fnilfcharset0 MS
Shell Dlg;}} viewkind4uc1pardf0fs17 Apar Bpar Cpar par }
cool ! ;)
on pourrait peut-être utiliser RTFVersTexte avant de stocker.

bonne journée
--
Jacques TREPP
Albygest



---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.573 / Virus Database: 363 - Release Date: 28/01/2004
Avatar
Roumegou Eric
jacques trepp a exprimé avec précision :
on pourrait peut-être utiliser RTFVersTexte avant de stocker.

bonne journée


Mon pb n'est pas à l'intérieur de mon appli WD.
Si je laisse les RC, cela se remplace tout seul et c'est ok.
Mon pb est que pour un générateur d'import de données, je génère un
script sql que j'execute ensuite.
Et là si je laisse les RC tel que, cela ne va pas.
(Je passe aussi sur les pb inhérents à excel puisque mon générateur
doit travailler à partir de fichiers textes, csv, xls et xml)

J'ai le meme pb sur un outil qui me permet de créer une base Oracle, ou
un base SQLite (descriptions et données) à partir d'un dump de ma base
mysql qui ma base de référence. Tout va bien sauf sur ces histoires de
RC.
Ces histoires de RC dans les champs, c'est d'un chiant !

--
Eric Roumegou
http://cerbermail.com/?Wk2D8D62KI
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Michel
Bonjour Eric,

Je ne sais pas si cela peut être utile, j'utilise une fonction pour exporter
le contenu de champs Windev (multiligne) vers une base Mysql.
Elle me donne satisfaction (du moins pour les contenus que j'ai à traiter.

PROCEDURE Addcote(sChaine)
ChaineRemplace est une chaîne
ChaineRemplace=SansEspace(sChaine)
SI ChaineRemplace <>"" ALORS
ChaineRemplace=Remplace(ChaineRemplace,RC,Caract(0x0D))
ChaineRemplace=Remplace(ChaineRemplace,"'","'") //escape des apostrophes
ChaineRemplace=Remplace(ChaineRemplace,"""","""") //escape des guillemets
ChaineRemplace=""""+ChaineRemplace+""""
RENVOYER ChaineRemplace
SINON
RENVOYER """"""
FIN



---
Ce message est certifié sans virus
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.566 / Virus Database: 357 - Release Date: 22/01/2004