Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

DB Eintrag wieder anzeigen

Frage Entwicklung

Mitglied: helmuthelmut2000

helmuthelmut2000 (Level 2) - Jetzt verbinden

22.01.2006, aktualisiert 02.02.2006, 5599 Aufrufe, 21 Kommentare

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
Mitglied: MadMax
22.01.2006 um 19:41 Uhr
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
Bitte warten ..
Mitglied: helmuthelmut2000
22.01.2006 um 22:06 Uhr
Hallo,

Ich komm da jetzt nicht so ganz mit, das heist ich weis wie du
das meinst oder wie das funktioniert, aber ich weis nicht wie ich
das machen soll.
Kannst du mir das genauer erklären wo ich das in dem html Anzeigen
oder beim Formular reinschreibe.

Danke.

Mit freundlichen Grüßen
Helmut
Bitte warten ..
Mitglied: MadMax
22.01.2006 um 23:22 Uhr
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:
<font class="code">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</font>
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
Bitte warten ..
Mitglied: helmuthelmut2000
23.01.2006 um 20:22 Uhr
Hallo,

Leider hab ich noch nie so ein DB-Trigger erstellt.
Ich will das aber auf jeden fall auch mal machen.
Kannst du mir scheiben wie man das macht, oder
weist du da eine Adresse im Netz?
Das wäre Super.

Mit freundlichen Grüßen
Helmut
Bitte warten ..
Mitglied: helmuthelmut2000
23.01.2006 um 20:48 Uhr
Hallo,

Ich habs doch geschafft.
Ich hab mich ein bischen durchgelesen und probiert
und ich glaub ich bind da weit gekommen.
Hab nur noch ein Problem mit der ID.
Wo bekomme ich die her?
Was ist die ID überhaupt?
Wenn du mir da noch was hättest.

Danke.

Gruß
Helmut
Bitte warten ..
Mitglied: MadMax
23.01.2006 um 22:00 Uhr
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
Bitte warten ..
Mitglied: helmuthelmut2000
28.01.2006 um 14:42 Uhr
Hallo,

Ich hab da noch ein Problem mit dem DB-Trigger .
Ich kann den in der DB hinterlegen aber jetzt kann
ich mit meinem Formular nichts mehr in die DB schreiben.
Muß ich da in meinem Formular etwas anderes machen?
Die Bestätigungsseite ist noch in Ordung aber in der DB
steht nichts drin.
Wenn du mir da nochmal helfen könntest.


Gruß
Helmut
Bitte warten ..
Mitglied: MadMax
29.01.2006 um 00:08 Uhr
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:
<font class="code">create trigger trg_umbruch on Tabelle for insert, update as
declare @id int, @text varchar (500)
begin
if @@nestlevel <= 1 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
end</font>
Gruß, Mad Max
Bitte warten ..
Mitglied: helmuthelmut2000
29.01.2006 um 10:55 Uhr
Hallo,

Jetzt tut sich was,
Aber noch nicht so ganz was ich da mein.
Ich hab jetzt in den Servereigenschaften das gemacht,
und 2. das mit den DB Optionen das Häkchen entfernen
das war schon weg.
Wenn ich jetzt in meinem Formular in der Spalte Text schreibe:
Das
ist
ein
Test
Dann schreibt es in alle Textaufträge:
Das
ist
ein
Test

Da ist doch noch was nicht so ganz in Ordnung oder?
Weist du vielleicht auch was?

Gruß
Helmut

P.S.
Wenn ich
if @@nestlevel <= 1 begin
reinmache dann kommt es zwar in dem richtigen auftrag aber leider wieder in einer Zeil so:
Das ist ein Test.
In der DB Spalte steht es richtig drin nur die Anzeige macht das nicht Richtig,
das mach ich mit einer asp Seite. Muß ich da die ID die ich da vergeben habe wo hinterlegen?
Bitte warten ..
Mitglied: MadMax
29.01.2006 um 17:34 Uhr
Hm, jetzt schreibt er es untereinander und das ist auch nicht, was Du wolltest?????

Das war doch die Fragestellung, oder bin ich jetzt total verwirrt?
Bitte warten ..
Mitglied: helmuthelmut2000
29.01.2006 um 20:36 Uhr
Hallo,
Ja klar ist schon so du bist bestimmt nicht verwirrt.
In der DB schreibt er es richtig aber nicht wenn ich
mir das im Web anzeigen lasse.
Also auf der ASP Seite.
In der DB schau ich z.B. mit Access drauf und da stimmts.
Da liegt doch das Problem nur noch am Anzeigen von
dem DB eintrag.
Weist du da auch noch eine Lösung?

Danake.

Gruß
Helmut
Bitte warten ..
Mitglied: MadMax
29.01.2006 um 21:13 Uhr
Hallo Helmut,

ok, kapiert. Dann stimmts aber in der DB gewissermaßen nicht, da sollte nämlich stehen:
Das<<x>br>ist<<x>br>ein<<x>br>Test

Dann funktioniert irgendwas mit dem Trigger bei Dir nicht.

Gruß, Mad Max
Bitte warten ..
Mitglied: helmuthelmut2000
29.01.2006 um 21:49 Uhr
Hallo,

Ja wenn ich in den Trigger das mit dem
if @@nestlevel <= 1 begin
weglasse dann schreibt
es mir das auf die Seite was du da meinst:
DasisteinTest
Aber das schreibt es mir in alle Zeilen.
Weist du wie ich mein?

Gruß
Helmut
Bitte warten ..
Mitglied: MadMax
29.01.2006 um 22:13 Uhr
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
Bitte warten ..
Mitglied: helmuthelmut2000
30.01.2006 um 20:54 Uhr
Hallo,

Ja den Eintrag "where ID = @id" habe ich in meinem Trigger, aber ich weis noch nicht
genau was ich damit machen soll. Ich hab das jetzt so gemacht:
In der Zeile:
static for select ID, Textfeld from inserted
habe ich das ID umgeändert in 5 und das Textfeld in Text weil meine Spalte auch
Text heist.
Dann hab ich noch in der Zeile:
update Tabelle set Textfeld = @text where ID = @id
das Tabelle in Ergebnisse weil die Tabelle bei mir so heist und
das Textfeld in Text in das ID=@id in 5=@id.
Jetzt muß ich doch noch in meiner DB die ID5 irgendwo hinterlegen oder?
Wenn ich in meiner DB das ändern will dann kann ich das nicht,dann ist das
ausgekraut. Nur im Feld schlüssel könnte man das ändern.
Muß ich da vielleicht das varchar ändern?
Weist du da weiter?

Gruß
Helmut
Bitte warten ..
Mitglied: MadMax
31.01.2006 um 00:29 Uhr
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
Bitte warten ..
Mitglied: helmuthelmut2000
01.02.2006 um 21:52 Uhr
Hallo,

Ja das mit der ID war jetzt total neu für mich, aber das tut
jetzt.
Er schreibt das jetzt in den Auftrag wo er soll, aber er schreibt
jetzt in die DB
DasisteinTest
Und auf der Seite wo angezeigt wird schreibt er genauso
DasisteinTest
Gibt es da auch noch eine Lösung?

Mit freundlichen Grüßen
Helmut
Bitte warten ..
Mitglied: MadMax
02.02.2006 um 00:43 Uhr
Eine Lösung für was? Er macht doch, was er soll ...
Bitte warten ..
Mitglied: helmuthelmut2000
02.02.2006 um 12:00 Uhr
Hallo,

Nein die Anzeige ist falsch da.
Er schreibt das in eine Zeile so wie du
das auch weiter oben geschrieben hast.
Mit dem
Das br ist br ein br Test
In der DB und in der Anzeige schreibt er es so.
Die Anzeige macht es falsch.

Gruß
Helmut
Bitte warten ..
Mitglied: MadMax
02.02.2006 um 19:52 Uhr
Eben wird mirs zu hoch, ich klink mich aus.

Gruß, Mad Max
Bitte warten ..
Mitglied: helmuthelmut2000
02.02.2006 um 21:14 Uhr
Hallo,

Du warst mir trotzdem sehr hilfreich mit der DB id das wußte
ich nicht.

Nochmal vielen dank.

Gruß
Helmut
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Internet Domänen
gelöst Domain Host Eintrag In Richtfunk Netz (7)

Frage von Betact zum Thema Internet Domänen ...

Windows Server
gelöst Powershell: Alle User anzeigen, die Zugriff auf einen Share haben (3)

Frage von bensonhedges zum Thema Windows Server ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...