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

VBScript Discussion :

Insertion retour charriot


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut Insertion retour charriot
    Bonjour,

    je suis en train de devenir fou à cause d'une broutille, j'explique :

    - J'exécute des requêtes SQL depuis un code VBS
    - Ces requêtes sont en TSQL, et donc la DB en SQL Server 2005
    - Les données de la DB servent ensuite à alimenter une application web
    - Dans cette appli, j'ai à un endroit un champ texte "comment" qui va chercher en base des infos : une chaine de caractères avec des retours charriot, enfin j'aimerais bien qu'il y en ait justement, mais rien de rien !

    Mon code VBS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    comment = "--------------------------" & vbCrLf & "--- MIGRATION ---" & "--------------------------" & vbCrLf & vbCrLf & "--- Mobility ---" & vbCrLf & mobilite & vbCrLf & vbCrLf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mConnection.Execute "INSERT [dbo].[Event] ([Comment]) VALUES ('" & comment & "')"
    J'ai essayé avec toutes les constantes VBS : vbLf, vbCr, vbCrLf, vbNewLine
    Mais rien n'y fait !!!


    Pierrot

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Es tu sur que le problème ne vient pas du site Web qui restitue mal le contenu plutot que ta base de donnée qui ne contient pas ces retours chariot ?

    Par exemple sur un site dont je fais la maintenance, il m'est arrivé que sur les mails générés je n'ai pas de retour à la ligne alors que l'application m'enregistré bien en base les données contenant ces retours chariots. Le problème était que le mail généré est en HTML et que dans ce cas, outlook l'outil cible pour la visualisation des mails ne prend pas en compte les retours chariots mais attend des <br> à la place. Bref j'ai du retravailler les données.

    Peut être est ce la même chose dans ton cas ?
    Cela dépend de comment les retours sont interprétés par l'application web.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta réponse

    En fait je n'ai pas accès à l'appli web, c'est un peu embêtant pour les tests d'ailleurs : je dois sans arrêt envoyer mes INSERT à une collègue, bref...

    Elle m'a montré un autre champ texte qui fonctionne par contre, et les données sont stockées en base comme ceci :

    "firstline\r\nsecondline\r\nthirdline\r\n"

    Si moi je mets dans ma chaine des "\r\n" à la place des vbCrLf par exemple, on voit les "\r\n" en tant que chaine dans le champ texte, et pas en tant que caractères spéciaux...


    Pierrot

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Elle m'a montré un autre champ texte qui fonctionne par contre, et les données sont stockées en base comme ceci :

    "firstline\r\nsecondline\r\nthirdline\r\n"
    Es tu en train de me dire que si dans ta base tu as enregistré en texte \r\n, l'application est capable de l'interpréter sur le champ texte cité ?

    Est ce que l'application traite l'information reçu de la base de la même manière à la fois pour ce champ texte et pour l'autre champ texte qui te pose problème ?

    Si moi je mets dans ma chaine des "\r\n" à la place des vbCrLf par exemple, on voit les "\r\n" en tant que chaine dans le champ texte, et pas en tant que caractères spéciaux...
    La première citation me laisse penser que pour le premier champ texte, l'application coupe le texte avec comme délimitateur \r\n et affiche chaque ligne dans la champ de texte en réinserant elle même les sauts de lignes.
    Cette seconde me fait penser que ce traitement n'est pas appliqué pour ce deuxième champ texte.

    Plutot que d'avoir un exemple fonctionnelle sur un autre champ texte, concentrons nous sur celui qui pose problème. Demande à l'équipe de développement du site ce qu'ils attendent en entrée comme donnée pour ce champ.

    Pour information, si tu veux savoir si les vbCrLf fonctionne, fais un select sur la table et le champ ou tu enregistre le texte avec sql server management et fait enregistrer les résultats sous -> puis choisis un nom et comme format un txt. Si tout a fonctionné correctement, lorsque tu ouvres le fichier, les lignes sont les unes en dessous des autres si le vbCrLf a bien fonctionné.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    La réponse de ma collègue :

    Hi,

    It’s manage by Visual Studio asp.net textbox multiline control. And when I write on it, and click enter the string obtained is:
    "firstline\r\nsecondline\r\nthirdline\r\n"
    And it’s saved on database calling a store procedure with parameter VARCHAR:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    myParameters[5] = new SqlParameter("@Comment", System.Data.SqlDbType.VarChar);
                    myParameters[5].Value = candidate.EventDALCollection[0].Comment;
                    myParameters[5].Direction = System.Data.ParameterDirection.Input;
    I don’t know if it helps you….
    Alors pourquoi quand je mets des "\r\n", l'appli me sort pas des retours charriot ?!?

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Ha mais cela n'a rien à voir.
    Lorsqu'on visualise en mode debug sous visual studio, la chaine de texte nous apparait avec des \r\n. Mais en base de données, les \r\n ne sont pas enregistrés en format texte mais en tant que caractères spéciaux.
    Donc il faudrait plus partir sur une solution pour faire fonctionner vbCrLf.

    Mais votre collègue ne vous dit pas tout. Il pourrait être intéressant de savoir comment sont enregistré les données en base : Via une requête ou via une procédure stockée. Et si elle pouvait fournir la requête ou la procédure stockée cela pourrait être utile. On ne sait jamais quelle traitement peut être fait avant insertion des données en base.
    Ensuite, il est toujours utile de connaitre le traitement fait avant l'affichage.

    On pourrait se passer de tout cela, si elle vous disait sous quelle format elle attend les données. Si elle ne sait pas, comment dire ... c'est un peu grave si elle en charge du dev et de la maintenance de ce site web.

    Ensuite avez vous essayé ma méthode pour vérifier comment son enregistré les donénes lorsque vous utilisez vbCrLf ?

    Edit :
    Je n'avais pas vu qu'elle précisé que c'est une procédure stockée qui insert le données. Il serait intéressant de voir si la procédure pré-traite ces données avant de faire un INSERT.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Ok je lui demande ça.
    Pour le reste :

    Ensuite avez vous essayé ma méthode pour vérifier comment son enregistré les donénes lorsque vous utilisez vbCrLf ?
    Oui j'ai copié les données du champ dans notepad++ et cela me donne qu'une seule ligne... (le vbCrLf est remplacé par un espace)

    Au fait je ne l'ai pas dit et je ne sais pas si ça peut servir mais le code de l'appli web est en C#

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Non, juste savoir que c'est en asp.net est suffisant.
    Mais je me doutais que c'était en c#

    Oui j'ai copié les données du champ dans notepad++
    Non ce n'est pas ce que j'ai proposé car en effet copié collé un résultat d'un des champs dans un txt laisse le résultat sur une ligne.
    enregistrer les résultats sous -> puis choisis un nom et comme format un txt
    Là chez moi cela respecte les sauts de lignes enregistrés.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Oui moi aussi à part que c'est enregistré en CSV, ça change quelque chose ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Voilà ce qu'elle me répond :
    What data format awaits you in your code ?
    I use asp.net textbox control with C# code. The textbox has the property ‘TextMode’ to ‘Multiline’. It accepts enters. When I see the textbox property text it gets the code I sent you (with \r\n) and I call an SQL Store procedure passing the textbox.text as varchar. And on database the field is varchar(max).
    Are you doing any processing of data before loading or after recovery in DB ?
    No. I obtain the data from the store procedure and I fill the textbox.text property with this string value.
    Citation Envoyé par TRADUCTION
    Les données sont attendues par votre code sous quel format?
    J'utilise un contrôle textbox en asp.net géré en c#. Sa propriété 'Multiline' est activée et le contrôle accepte les entrées. Quand j'examine la propriété 'text'
    elle récupère bien le code que je vous ai envoyé (avec les \r\n) et j'appelle une procédure SQL stockée en passant le contenu du textbox.text comme une
    varchar. Dans la base, le champ est défini comme varchar(max)
    Faites-vous un traitement de données avant le chargement ou après l'exécution de la requête ?
    Non, j'obtiens les données de la procédure stockée et j'affecte cette valeur chaine à la propriété textbox.text.

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par 0pierrot0 Voir le message
    Oui moi aussi à part que c'est enregistré en CSV, ça change quelque chose ?
    Non

    Tu peux essayer chr(13) et/ou chr(10) à la place de vbCrLf.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Oui merci, mais je ne vois pas comment insérer les CHAR(10) et CHAR(13) en vbscript...
    Je ne vois que la solution d'insérer la chaine avec des délimiteurs (par exemple "\r\n") Puis faire un UPDATE SQL avec un Replace des "\r\n" par CHAR(10)+CHAR(13).

    ça te paraît une bonne idée ?

  13. #13
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MonTexte
    MonTexte = "Avant le saut de ligne" & Chr(13) + Chr(10) & "Après le saut de ligne"
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup pour l'aide, je gagne un temps précieux
    Je teste ça dès que j'ai un moment et je ferme la discussion si c'est ok.

    Pierrot

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    ça marche merci beaucoup !

    Pierrot

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

Discussions similaires

  1. Recuperer les retour charriot d'un textarea
    Par Mcfly123 dans le forum VB.NET
    Réponses: 2
    Dernier message: 02/05/2007, 08h51
  2. Retour charriot dans Ritchtextbox
    Par manue22 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/11/2006, 15h50
  3. [Retour charriot]Outfile
    Par Jean_Benoit dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/05/2006, 07h08
  4. [XSLT] Suppression des retours charriots
    Par Hoegaarden dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/08/2005, 16h51
  5. [VBA-W] Ajouter un retour charriot
    Par FatalError dans le forum VBA Word
    Réponses: 3
    Dernier message: 18/12/2002, 15h35

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