Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Große Texte mit Sonderzeichen in Datenbank speichern (https://www.delphipraxis.net/119827-grosse-texte-mit-sonderzeichen-datenbank-speichern.html)

emsländer 1. Sep 2008 18:41

Datenbank: MSSQL • Version: 2005 • Zugriff über: TAdoquery

Große Texte mit Sonderzeichen in Datenbank speichern
 
Moin,

Habe da noch ein großes Problem.
Das Datenfeld ist Text und dort möchte ich eine XML-Datei "RAW" reinschieben.
Leider klappt das nicht, weil dort auch Kommas, Sonderzeichen und Klammern etc. drin sind.

Wer hat da eine Idee?

Gruss

EL

Bernhard Geyer 1. Sep 2008 18:54

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Mit Paramtrisierten Abfragen sollte das kein Problem darstellen.
Besser aber statt text ntext nehmen um nicht auf Nicht-Westeuropäischen Systemen Probleme zu bekommen.

Alternativ gibts noch eine XML-Datentyp beim MS SQL Server. Hab damit aber noch nix gemacht.

emsländer 2. Sep 2008 09:06

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Moin,

acuh parametrisiert klappt es nicht:

Delphi-Quellcode:
function insert_antrag(code, user_code, nachricht, dossier, f_xml,timestamp, zuAkte, kunden_ip, fdd_ip, progversion : string) : string;

var stmp : string;
_query : TSQLQuery;


begin
  try
    _query := TSQLquery.Create(nil);
    _query.SQLConnection := fddservice.SQLConnFDD;
    with _query do begin
      insert;
      sql.text := 'insert into antraege(code,user_code,nachricht,dossier,xml,timestamp,zu_Akte,kundenip,fddip,progversion) values'+ '(:_code,:_usercode,:_nachricht,:_dossier,:_xml,:_timestamp,:_zuAkte,:_kundenip,:_fddip,:_progversion)';

 

      ParamByName('_code').AsString := code;
      ParamByName('_usercode').AsString := code;
      ParamByName('_nachricht').AsString := nachricht;
      ParamByName('_dossier').AsString := dossier;
      ParamByName('_xml').AsWideString := f_xml;
      ParamByName('_timestamp').AsString := timestamp;
      ParamByName('_zuAkte').Asinteger := strtoint(zuAkte);
      ParamByName('_kundenip').AsString := kunden_ip;
      ParamByName('_fddip').AsString := fdd_ip;
      ParamByName('_progversion').AsString := progversion;
      ExecSQL;
      sleep(100);
      result:='';
    end;
  except
    result('Nix da - klappt nicht');
  end;
  freeandnil(_query);
end;
Es hakt wie es aussieht an "_nachricht" (dort sind z.B. %20,0D0A etc. drin) und an _xml .. (dort sind massig Sonderzeichen)
Die Table nachricht ist Typ ntext, xml ist Typ xml.

Des Weiteren: Wie kann ich da eine Fehlerabfrage realisieren?

Gruss

EL

Bernhard Geyer 2. Sep 2008 09:10

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Welcher Fehlermeldung kommt den?

mkinzler 2. Sep 2008 09:13

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Versuch mal
Delphi-Quellcode:
ParamByName('_nachricht').Value := nachricht;

emsländer 2. Sep 2008 09:17

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Zitat:

Zitat von Bernhard Geyer
Welcher Fehlermeldung kommt den?

Keine .... ist ein Dienst. Daher suche ich eine Möglichkeit, an dieser Stelle den Fehlertext zu "lesen".

Gruss

EL

Bernhard Geyer 2. Sep 2008 09:18

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Zitat:

Zitat von emsländer
Keine .... ist ein Dienst. Daher suche ich eine Möglichkeit, an dieser Stelle den Fehlertext zu "lesen".

Aber in eine Logdatei schreiben sollte kein Problem darstellen.
Ohne genaue Fehlermeldung können wir hier alle unsere Glaskugeln auspacken.

emsländer 2. Sep 2008 09:32

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von emsländer
Keine .... ist ein Dienst. Daher suche ich eine Möglichkeit, an dieser Stelle den Fehlertext zu "lesen".

Aber in eine Logdatei schreiben sollte kein Problem darstellen.
Ohne genaue Fehlermeldung können wir hier alle unsere Glaskugeln auspacken.

Wie kann ich in diesem "Code-Konstrukt" die SQL-Fehlermeldungen auslesen?


Gruss

EL

Bernhard Geyer 2. Sep 2008 09:34

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Zitat:

Zitat von emsländer
Wie kann ich in diesem "Code-Konstrukt" die SQL-Fehlermeldungen auslesen?

hast du doch schon in einem anderen Thread gefragt.
Verwende doch die dort vorgestellten Lösungen.

emsländer 2. Sep 2008 09:36

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von emsländer
Wie kann ich in diesem "Code-Konstrukt" die SQL-Fehlermeldungen auslesen?

hast du doch schon in einem anderen Thread gefragt.
Verwende doch die dort vorgestellten Lösungen.

Genau das funktioniert dort nicht, weil das nicht ADO ist

Gruss

EL

Bernhard Geyer 2. Sep 2008 09:37

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Aber mein Vorschlag mit

Delphi-Quellcode:
on e: Exception
 SchreibeInLog(e.Message)
geht.

mkinzler 2. Sep 2008 09:37

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Steht im Exception-Objekt.

Delphi-Quellcode:
except
   on e: Exception do
   ...
end;

emsländer 2. Sep 2008 09:41

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Zitat:

Zitat von mkinzler
Steht im Exception-Objekt.

Delphi-Quellcode:
except
   on e: Exception do
   ...
end;


oki und da kommt nun: Operation bei geschlossener Datenmenge nicht ausführbar


Tolle Meldung ...

Gruss

EL

mkinzler 2. Sep 2008 09:44

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Wird am
Delphi-Quellcode:
insert;
liegen

emsländer 2. Sep 2008 09:58

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Zitat:

Zitat von mkinzler
Wird am
Delphi-Quellcode:
insert;
liegen

Nun bekomme ich: Unable to load dbxmss30.dll (ErrorCode 126). It may be missing from the system path.

Ich finde die Datei weder auf dem SQL-Server, noch auf meiner Workstation.

Wo soll die sein?

Gruss

EL

Bernhard Geyer 2. Sep 2008 10:20

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Zitat:

Zitat von emsländer
Nun bekomme ich: Unable to load dbxmss30.dll (ErrorCode 126). It may be missing from the system path.

Ich finde die Datei weder auf dem SQL-Server, noch auf meiner Workstation.

Wo soll die sein?

Verwendest du jetzt wohl DBExpress (Auch wenn TAdoquery eigentlich für ADO steht)?

Bernhard Geyer 2. Sep 2008 10:23

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Zitat:

Zitat von emsländer
Nun bekomme ich: Unable to load dbxmss30.dll (ErrorCode 126). It may be missing from the system path.

Ich finde die Datei weder auf dem SQL-Server, noch auf meiner Workstation.

Wo soll die sein?

Verwendest du jetzt wohl DBExpress (Auch wenn TAdoquery eigentlich für ADO steht)?

Bernhard Geyer 2. Sep 2008 10:23

Re: Große Texte mit Sonderzeichen in Datenbank speichern
 
Zitat:

Zitat von emsländer
Nun bekomme ich: Unable to load dbxmss30.dll (ErrorCode 126). It may be missing from the system path.

Ich finde die Datei weder auf dem SQL-Server, noch auf meiner Workstation.

Wo soll die sein?

Verwendest du jetzt wohl DBExpress (Auch wenn TAdoquery eigentlich für ADO steht)?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz