Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism Umlaute in Interbase (https://www.delphipraxis.net/58401-umlaute-interbase.html)

michael.cohrs 6. Dez 2005 15:58

Datenbank: Interbase • Zugriff über: SQL

Umlaute in Interbase
 
Guten Tag zusammen (und danke Chaho für die bisherige Hilfe)

ich habe eine Datenbankanwendung geschrieben die eine Art benutzerverwaltung darstellt. Nun gelingt es mir in IB Expert auch Namen mit Umlauten zu schreiben. Sobald ich jedoch das ganze im Quellcode versuche bekomme ich diese seltsame Fehlermeldung:

1Ausführung misslungen. arithmetic exception, numeric overflow, or string truncation Cannot transliterate character between character sets

Ich nutze folgenden Quellcode um in die Datenbank zu schreiben:
Delphi-Quellcode:
bdpDataAdapter1.Active := False;
BdpCommand1.CommandText := 'INSERT Into CUSTOMER (ID_KEY,PREIS_ID,FIRMA,STRASSE,PLZ,ORT,TELEFON,FAX,MAIL) VALUES(' +
Record_Count_STR + ', ' +
PREIS_ID + ', ' +
Strich + FIRMEN_NAME + Strich + ', ' +
Strich + STRASSE + Strich + ', ' +
POSTLEITZAHL + ', ' +
Strich + ORT + Strich + ', ' +
Strich + TELEFON + Strich + ', ' +
Strich + FAX + Strich + ', ' +
Strich + MAIL + Strich + ') ';
try
SAVED := BdpCommand1.ExecuteNonQuery;
except
on E: Exception do
Begin
Response.Write(E.Message);
ALL_OK := FALSE;
end;
end;
if ALL_OK then
Begin
bdpDataAdapter1.Active := TRUE;
Write_New_Mitarbeiter( FIRMEN_NAME );
Load_Session := FALSE;
end;;

in der Variable STRICH sind die Hochkommatas für die Strings enthalten.

Weiß jemand wie ich auch im Quelltext die Umlaute schreiben kann?


Vielen Dank

Michael

[edit=Luckie]Delphi-Tags gesetzt. Beim nächsten mal bitte selber machen. Danke. Mfg, Luckie[/edit]

Hansa 6. Dez 2005 16:57

Re: Umlaute in Interbase
 
1. Frage : ist die DB als Dialect 3 angelegt ?

Die Hauptfrage ist allerdings folgende :

Wer ist zuständig fürs abspeichern ? Dein Programm oder die DB ? Wo können Fehler auftreten und wann merkt man die ?

Ist es tatsächlich gut, ein SQL-Statement im Source zu haben, oder eher solche Konstrukte :

Delphi-Quellcode:
  PreisSP.ParamByName('ID_KUNDE').AsInteger := StrToInt (idkunde);
  PreisSP.ParamByName('ID_ART').AsInteger := StrToInt (idart);
...
  PreisSP.ExecProc;
Die dahinter steckende Stored Procedure hat folgende Vorteile : im Source kann ich mich mit ''""'"'"'"" Quoted ??? nicht mehr verzetteln (zumindest mit Dialect 3). Vor allem aber ist es möglich die SP (vor der Verwendung im Programm) in IBExpert zu testen. Und wenn sie dann geht, dann kann man sie verbauen. Auch Dein im Source zusammengesetztes Insert würde ich zuerst mal in IBExpert testen. Wenns sein muß, dann notfalls 1:1 per C+P im Source anpassen. Eine SP anzulegen ist IMHO aber immer besser bzw. sicherer.

Leider ist so was immer noch sehr beliebt (zumindest hier) : z.B. baut man ein Flugzeug und wenn es abstürzt, dann guckt man mal, warum. Anstatt vorher alle Einzelteile zu überprüfen und das Teil dann erst zusammenzubauen.

michael.cohrs 6. Dez 2005 20:17

Re: Umlaute in Interbase
 
Danke für die Hilfe, leider ist es so das ich mit Stored Procedure noch nichts gemacht habe, wie rufe ich sie unter .net auf? Es wäre nett wenn Du mir ein wenig auf die Sprünge helfen kannst.

Gruß

Michael

Hansa 6. Dez 2005 21:12

Re: Umlaute in Interbase
 
.NET spielt dabei wohl keine Rolle. Wie man sie aufruft steht weiter oben. Probiere es in IBExpert einfach aus. Übung macht immer noch den Meister. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 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