Announcement

Collapse
No announcement yet.

Zeilenumbrüche in HTML-Ausgabe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeilenumbrüche in HTML-Ausgabe

    Hallo,

    aus der T-SQL_Referenz habe ich das Beispiel zu "sp_send_dbmail" zum Erstellen einer E-Mai im HTML-Format übernommen und für meine Zwecke angepasst (Code siehe unten). Funktioniert prima, aber: Eine Tabellenspalte enthält Text mit Zeilenumbrüchen (CR+LF), die im HTML-Output fehlen. Wie bekomme ich die Zeilenumbrüche in den HTML-Code hinen? Ein REPLACE(TEXT, CAHR(13)+CHAR(10), '<br>') funktioniert nicht, das "<br>" wird im Text angezeigt, aber nicht ausgeführt.

    Mein Code ist der:
    [Highlight=sql]
    DECLARE @tableHTML NVARCHAR(MAX);

    SET @tableHTML =
    N'<H1>Tagesbericht Servicescheine</H1>' +
    N'<table border="1">' +
    N'<tr><th>Kunde</th><th>Beleg</th><th>Text</th><th>Stunden</th>' +
    CAST ( ( SELECT td = KUNDEN.Anzeigename, '',
    td = BELEG.Belegnummer, '',
    td = TEXT.TEXT, '',
    td = CAST(BELEGP.Menge AS DECIMAL(8,2))
    FROM (... unwichtig hier ...)
    WHERE (... unwichtig hier ...)
    FOR XML PATH('tr'), TYPE
    ) AS NVARCHAR(MAX) ) +
    N'</table>' ;

    EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Profile',
    @recipients = '[email protected]',
    @subject = 'Betreff ...',
    @body = @tableHTML,
    @body_format = 'HTML';
    [/Highlight]

    Grüße
    Tilo
    Zuletzt editiert von TiloK; 25.09.2012, 15:38.

  • #2
    Hallo,

    bitte beachten: Formatierung von SQL in Beiträgen

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hab gerade selbst einen Weg gefunden:
      Ein innerer REPLACE ersetzt CRLF durch '|||' und ein äußerer dann alle '|||' durch '<br>'. Damit klappts.

      [highlight=sql]
      SET @tableHTML =
      N'<H1>Tagesbericht Servicescheine</H1>' +
      N'<table border="1">' +
      N'<tr><th>Kunde</th><th>Beleg</th><th>Text</th><th>Stunden</th>' +
      REPLACE(CAST ( ( SELECT td = KUNDEN.Anzeigename, '',
      td = BELEG.Belegnummer, '',
      td = REPLACE(RTRIM(TEXT.TEXT), CHAR(13)+CHAR(10), '|||'), '',
      td = CAST(BELEGP.Menge AS DECIMAL(8,2))
      FROM ()
      WHERE ()
      FOR XML PATH('tr'), TYPE
      ) AS NVARCHAR(MAX) ), '|||', '<br>' ) +
      N'</table>' ;
      [/highlight]

      Comment

      Working...
      X