DB Eintrag wieder anzeigen
Hallo,
Ich hab da ein Problem.
Ich schreibe mit einem Formular ein paar Daten in eine MSSQL2000 DB.
Da schreibe ich zum Beispiel in eine Spalte:
Das
ist
ein
Test.
Jetzt würde ich das wieder so ausgeben wollen,
aber bei mir kommt das so:
Das ist ein Test.
Also alles in einer Zeile aber nicht untereinnader oder so wie es eingegeben wird.
Weis da jemand vielleicht eine Lösung?
Oder kann ich sowas auch anders machen als mit einer DB?
Das ist im Intranet wo der IIS installiert ist und mit Frontpage wird die
Seite erstellt.
Gruß
Helmut
Ich hab da ein Problem.
Ich schreibe mit einem Formular ein paar Daten in eine MSSQL2000 DB.
Da schreibe ich zum Beispiel in eine Spalte:
Das
ist
ein
Test.
Jetzt würde ich das wieder so ausgeben wollen,
aber bei mir kommt das so:
Das ist ein Test.
Also alles in einer Zeile aber nicht untereinnader oder so wie es eingegeben wird.
Weis da jemand vielleicht eine Lösung?
Oder kann ich sowas auch anders machen als mit einer DB?
Das ist im Intranet wo der IIS installiert ist und mit Frontpage wird die
Seite erstellt.
Gruß
Helmut
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 24191
Url: https://administrator.de/forum/db-eintrag-wieder-anzeigen-24191.html
Ausgedruckt am: 10.04.2025 um 15:04 Uhr
21 Kommentare
Neuester Kommentar
Hallo Helmut,
wenn Du einen Text eingibst, dann haben Zeilenumbrüche im allgemeinen einen ASCII-Code von 10 (LF), 13 (CR) oder 13 + 10 (CRLF). In der DB speicherst Du also etwas wie: Das(CRLF)ist(CRLF)ein(CRLF)Test.
In einem Texteditor erscheint das dann untereinander. Wenn Du es aber in einem Browser anzeigst, wird HTML verwendet und das verwendet für einen Zeilenumbruch keinen ASCII-Code sondern einen Tag, nämlich <<x>br>. Du mußt also nichts weiter tun, als das bei der Eingabe verwendete Zeilenumbruchzeichen (z.B. CRLF) durch den Tag <<x>br> zu ersetzen, entweder vor dem Speichern oder aber beim Auslesen zur Anzeige.
Gruß, Mad Max
wenn Du einen Text eingibst, dann haben Zeilenumbrüche im allgemeinen einen ASCII-Code von 10 (LF), 13 (CR) oder 13 + 10 (CRLF). In der DB speicherst Du also etwas wie: Das(CRLF)ist(CRLF)ein(CRLF)Test.
In einem Texteditor erscheint das dann untereinander. Wenn Du es aber in einem Browser anzeigst, wird HTML verwendet und das verwendet für einen Zeilenumbruch keinen ASCII-Code sondern einen Tag, nämlich <<x>br>. Du mußt also nichts weiter tun, als das bei der Eingabe verwendete Zeilenumbruchzeichen (z.B. CRLF) durch den Tag <<x>br> zu ersetzen, entweder vor dem Speichern oder aber beim Auslesen zur Anzeige.
Gruß, Mad Max
Hallo Helmut,
also von Frontpage und IIS habe ich wenig Ahnung und Dein Projekt kenne ich auch nicht, aber Du könntest z.B. einen DB-Trigger verwenden, um beim reinschreiben in die DB die Werte zu ersetzen. Das würde dann so aussehen:
Tabelle, ID und Textfeld müßtest Du nur durch Deine richtigen Namen ersetzen und evtl. die Variablen anpassen, dann sollte es gehen.
Gruß, Mad Max
also von Frontpage und IIS habe ich wenig Ahnung und Dein Projekt kenne ich auch nicht, aber Du könntest z.B. einen DB-Trigger verwenden, um beim reinschreiben in die DB die Werte zu ersetzen. Das würde dann so aussehen:
create trigger trg_umbruch on Tabelle for insert, update as
declare @id int, @text varchar (500)
begin
declare cur_umbruch cursor local static for select ID, Textfeld from inserted
open cur_umbruch
fetch next from cur_umbruch into @id, @text
while @@fetch_status = 0 begin
select @text = replace (@text, char (13) + char (10), '<<x>br>')
select @text = replace (@text, char (13), '<<x>br>')
select @text = replace (@text, char (10), '<<x>br>')
update Tabelle set Textfeld = @text where ID = @id
fetch next from cur_umbruch into @id, @text
end
close cur_umbruch
deallocate cur_umbruch
end
Gruß, Mad Max
Nabend Helmut,
eine ID ist etwas, womit Du einen Datensatz eindeutig identifizieren kannst. Normalerweise nimmt man da irgendeine Zahl, die innerhalb einer Tabelle, Datenbank oder global (GUID) eindeutig ist. Irgendetwas zum eindeutigen bestimmen eines Datensatzes wirst Du in Deiner Datenbank auch haben.
Gruß, Mad Max
eine ID ist etwas, womit Du einen Datensatz eindeutig identifizieren kannst. Normalerweise nimmt man da irgendeine Zahl, die innerhalb einer Tabelle, Datenbank oder global (GUID) eindeutig ist. Irgendetwas zum eindeutigen bestimmen eines Datensatzes wirst Du in Deiner Datenbank auch haben.
Gruß, Mad Max
Hallo Helmut,
tschuldigung, da habe ich vergessen, daß ich immer standardmäßige Einstellungen von SQL Server ändere, weil sie mir nur hinderlich sind.
Das Problem ist, daß SQL Server die Trigger schachtelt, d.h. daß der Updatebefehl im Trigger wieder den Trigger auslöst. Das macht er, bis die maximale Schachtelungstiefe erreicht ist, dann gibt es einen Fehler. Um dem abzuhelfen gibt es drei Möglichkeiten:
1. In den Servereigenschaften unter Servereinstellungen das Häkchen bei den geschachtelten Triggern entfernen.
2. In den DB-Eigenschaften unter Optionen das Häkchen bei den rekursiven Triggern entfernen.
3. Im Trigger mit der Funktion @@nestlevel die Schachtelungstiefe prüfen und die Rekursion verhindern. Das sieht dann so aus:
Gruß, Mad Max
tschuldigung, da habe ich vergessen, daß ich immer standardmäßige Einstellungen von SQL Server ändere, weil sie mir nur hinderlich sind.
Das Problem ist, daß SQL Server die Trigger schachtelt, d.h. daß der Updatebefehl im Trigger wieder den Trigger auslöst. Das macht er, bis die maximale Schachtelungstiefe erreicht ist, dann gibt es einen Fehler. Um dem abzuhelfen gibt es drei Möglichkeiten:
1. In den Servereigenschaften unter Servereinstellungen das Häkchen bei den geschachtelten Triggern entfernen.
2. In den DB-Eigenschaften unter Optionen das Häkchen bei den rekursiven Triggern entfernen.
3. Im Trigger mit der Funktion @@nestlevel die Schachtelungstiefe prüfen und die Rekursion verhindern. Das sieht dann so aus:
create trigger trg_umbruch on Tabelle for insert, update as
declare @id int, @text varchar (500)
begin
<b>if @@nestlevel <= 1 begin</b>
declare cur_umbruch cursor local static for select ID, Textfeld from inserted
open cur_umbruch
fetch next from cur_umbruch into @id, @text
while @@fetch_status = 0 begin
select @text = replace (@text, char (13) + char (10), '<<x>br>')
select @text = replace (@text, char (13), '<<x>br>')
select @text = replace (@text, char (10), '<<x>br>')
update Tabelle set Textfeld = @text where ID = @id
fetch next from cur_umbruch into @id, @text
end
close cur_umbruch
deallocate cur_umbruch
<b>end</b>
end
Ach so, Anzeige korrekt, aber alle Zeilen, obwohl es nur eine sein soll.
Dann stimmt was mit Deiner ID oder was Du sonst zum eindeutigen Identifizieren nimmst nicht. Schau mal, ob Du dieses "where ID = @id" im Trigger hast bzw. das, wie Du Deine Datensätze identifizierst. Wenn diese Klausel fehlt, dann ändert der Updatebefehl im Trigger natürlich alle Datensätze.
Gruß, Mad Max
Dann stimmt was mit Deiner ID oder was Du sonst zum eindeutigen Identifizieren nimmst nicht. Schau mal, ob Du dieses "where ID = @id" im Trigger hast bzw. das, wie Du Deine Datensätze identifizierst. Wenn diese Klausel fehlt, dann ändert der Updatebefehl im Trigger natürlich alle Datensätze.
Gruß, Mad Max
Hallo Helmut,
vielleicht solltest Du mal nach einem Datenbank-Lehrbuch Ausschau halten, um zumindest mal die Grundlagen kennenzulernen.
In einer Datenbanktabelle brauchst Du irgendetwas, um einen Datensatz eindeutig zu bestimmen. Wenn Du in Deiner Tabelle "Ergebnisse" 100 Zeilen drin hast und willst jetzt einen bestimmten Text verändern, mußt Du die Zeile benennen können, denn der Text selber ist wahrscheinlich nicht eindeutig. Zu diesem Zweck erstellt man ein Feld, welches einen Wert erhält, den kein anderer Datensatz erhält, und nennt es dann oft ID, GUID oder auch Schlüssel (mal abgesehen davon, daß Umlaute in Feldnamen nicht sehr geschickt sind).
Wenn Deine Tabelle "Ergebnis" durch irgendeinen Assistenten erstellt wurde, dann hat sie mit Sicherheit auch so ein Feld, wahrscheinlich das von Dir erwähnte "schlüssel". Um das festzustellen, kannst Du mal in den Enterprise Manager gehen, und auf die Tabelle "Ergebnis" doppelklicken. In irgendeiner Zeile ist dann links ein Schlüsselsymbol (hoffen wir mal, daß es nicht mehrere sind), das ist das gesuchte Feld, das ich im Trigger eben ID genannt habe. Dann mußt Du statt des Feldes ID im Trigger nur dieses gefundene Feld verwenden und ggf. den Typ der Variablen @id anpassen.
Gruß, Mad Max
vielleicht solltest Du mal nach einem Datenbank-Lehrbuch Ausschau halten, um zumindest mal die Grundlagen kennenzulernen.
In einer Datenbanktabelle brauchst Du irgendetwas, um einen Datensatz eindeutig zu bestimmen. Wenn Du in Deiner Tabelle "Ergebnisse" 100 Zeilen drin hast und willst jetzt einen bestimmten Text verändern, mußt Du die Zeile benennen können, denn der Text selber ist wahrscheinlich nicht eindeutig. Zu diesem Zweck erstellt man ein Feld, welches einen Wert erhält, den kein anderer Datensatz erhält, und nennt es dann oft ID, GUID oder auch Schlüssel (mal abgesehen davon, daß Umlaute in Feldnamen nicht sehr geschickt sind).
Wenn Deine Tabelle "Ergebnis" durch irgendeinen Assistenten erstellt wurde, dann hat sie mit Sicherheit auch so ein Feld, wahrscheinlich das von Dir erwähnte "schlüssel". Um das festzustellen, kannst Du mal in den Enterprise Manager gehen, und auf die Tabelle "Ergebnis" doppelklicken. In irgendeiner Zeile ist dann links ein Schlüsselsymbol (hoffen wir mal, daß es nicht mehrere sind), das ist das gesuchte Feld, das ich im Trigger eben ID genannt habe. Dann mußt Du statt des Feldes ID im Trigger nur dieses gefundene Feld verwenden und ggf. den Typ der Variablen @id anpassen.
Gruß, Mad Max