Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD11] Requête SQL sur HF, quote et slashes

4 réponses
Avatar
Antoine
Bonjour,

Je fais des requêtes SQL sur des fichiers HF (HExecuteRequeteSQL).
Tout fonctionne bien, jusqu'à ce que j'ai des quotes et des slashes.
Pour les quotes, je faisais un Remplace(TexteSQL,"'","''") et ça semblait
marcher.
Mais si j'ai des quotes et des slashes qui se mélangent, quoi faire ??

Ca arrive pour du texte RTF, Exemple de ce que je voudrais enregistrer dans
le fichier HF par requête:

{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0
Arial;}}<RC>{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\f0\fs16
l\rquote archivage : L'archivage/d\'e9sarchivage ont le m\'eame raccourci
\par<RC>}<RC>ÿ{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0
MS Shell Dlg;}}<RC>{\*\generator Msftedit
5.41.15.1507;}\viewkind4\uc1\pard\f0\fs17\par<RC>}<RC>

Ce qui me pose problème, c'est le mot "désarchivage", qui en RTF donne
apparemment "d\'e9sarchivage" et le "\'" pose problème...

J'ai essayer de doubler les slashes, mais ça ne marche pas ?...

Merci pour votre aide !!

Antoine

4 réponses

Avatar
Romain PETIT
Antoine avait soumis l'idée :
Bonjour,



Bonjour,

Merci pour votre aide !!



Tu n'as qu'à "crypter" ta chaine en base 64 (cf fonction
crypte/decrypte avant de la stocker.
(et évidemment tu devras la décrypter avant utilisation)

A+


--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Antoine
Bonjour,

Merci pour ta réponse.

Malheureusement je ne peux pas utiliser ta solution... Le fichier que
j'utilise est aussi utilisé par d'autres applications Windev existantes et
développées par une autre société. Je dois donc conserver le format actuel
de la rubrique. Ces autres applications font des modifications dans les
fichiers HF par des HModifie mais je voudrais être 100% SQL et ne pas passer
par des HModifie.

Il me faut donc absolument faire l'équivalent du HModifie mais en requête.

Antoine

"Romain PETIT" a écrit dans le message de news:

Antoine avait soumis l'idée :
Bonjour,



Bonjour,

Merci pour votre aide !!



Tu n'as qu'à "crypter" ta chaine en base 64 (cf fonction crypte/decrypte
avant de la stocker.
(et évidemment tu devras la décrypter avant utilisation)

A+


--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)




Avatar
Romain PETIT
Antoine a émis l'idée suivante :

Il me faut donc absolument faire l'équivalent du HModifie mais en requête.



Alors essaye :
Remplace(TexteSQL,"'","'")

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Antoine
Salut, malheureusement j'avais déjà essayé ta suggestion, ça ne marchait pas
non plus...
Le problème est bien le cas du antislash+quote...

Alors finalement j'ai contourné le problème avec un truc un peu ignoble mais
qui marche...:

TexteSQL=Remplace(Remplace(ch_Valeur,"'","''"),"'","'+LEFT(' ',1)+''")

J'utilise un LEFT(' ',1) pour insérer l'antislash quand il est suivi d'une
quote... J'ai pas trouvé la fonction CARACT() ou l'équivalent en SQL-Windev
(il y a bien ASCII mais pas l'inverse).

Voilà, merci Romain pour ton temps passé.

Antoine


"Romain PETIT" a écrit dans le message de news:

Antoine a émis l'idée suivante :

Il me faut donc absolument faire l'équivalent du HModifie mais en
requête.



Alors essaye :
Remplace(TexteSQL,"'","'")

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)