Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Mit UIB Komponente Datensatz in FireBird Tabelle einfügen (https://www.delphipraxis.net/99105-mit-uib-komponente-datensatz-firebird-tabelle-einfuegen.html)

GuenterS 6. Sep 2007 23:36

Datenbank: FireBird • Version: 1.5 • Zugriff über: UIB

Mit UIB Komponente Datensatz in FireBird Tabelle einfügen
 
Hallo,

ich versuche gerade mittels den UIB Komponenten einen Eintrag in einer Tabelle zu machen, bekomme jedoch immer Fehlermeldungen.

Delphi-Quellcode:
  with TJvUIBquery.Create(nil) do
  try
    DataBase := dmIntern.InternDB;
    Transaction := dmIntern.IBTransaction;
    SQL.Text := 'INSERT INTO kontakte (K_KONTAKTEID, ADRESSENID, ANSPRECHPARTNERID, '
      + ' K_DATUMK, K_BEREICH, K_FEHLERKLASSE, K_ABGESCHLOSSEN, K_EIN_AUS, K_PUBLIC_PRIVATE, '
      + ' K_ANLAGEN, PR_PRODUKTEID, KA_KONTAKTARTID, K_GELOESCHT, K_ZEIT, '
      + ' K_VERRECHNET, TODO_SYSID, K_DRINGLICHKEIT_STR, K_UNTERBEREICH, ST_STATUSID) '
      + ' VALUES(:K_KONTAKTEID, :ADRESSENID, :ANSPRECHPARTNERID, '
      + ' :K_DATUMK, :K_BEREICH, :K_FEHLERKLASSE, :K_ABGESCHLOSSEN, :K_EIN_AUS, :K_PUBLIC_PRIVATE, '
      + ' :K_ANLAGEN, :PR_PRODUKTEID, :KA_KONTAKTARTID, :K_GELOESCHT, :K_ZEIT, '
      + ' :K_VERRECHNET, :TODO_SYSID, :K_DRINGLICHKEIT_STR, :K_UNTERBEREICH, :ST_STATUSID)';

    Params.ByNameAsInteger['K_KONTAKTEID'] := lKID;
    Params.ByNameAsString['ADRESSENID'] := GetComboBoxID(ComboKunde, ComboKunde.ItemIndex);
    Params.ByNameAsString['ANSPRECHPARTNERID'] := GetComboBoxID(ComboAnsp, ComboAnsp.ItemIndex);
    Params.ByNameAsDateTime['K_DATUMK'] := now;
    Params.ByNameAsString['K_BEREICH'] := GetComboBoxID(ComboBereich, ComboBereich.ItemIndex);
    Params.ByNameAsString['K_FEHLERKLASSE'] := GetComboBoxID(ComboTODO, ComboTODO.ItemIndex);
    Params.ByNameAsInteger['K_ABGESCHLOSSEN'] := 0;
    Params.ByNameAsInteger['K_EIN_AUS'] := 0;
    Params.ByNameAsInteger['K_PUBLIC_PRIVATE'] := 0;
    Params.ByNameAsInteger['K_ANLAGEN'] := 0;
    Params.ByNameAsString['PR_PRODUKTEID'] := GetComboBoxID(ComboPRodukt, ComboProdukt.ItemIndex);
    Params.ByNameAsString['KA_KONTAKTARTID'] := GetComboBoxID(ComboKontaktart, ComboKontaktArt.ItemIndex);
    Params.ByNameAsInteger['K_GELOESCHT'] := 0;
    Params.ByNameAsDateTime['K_ZEIT'] := now;
    Params.ByNameAsInteger['K_VERRECHNET'] := 0;
    Params.ByNameAsString['TODO_SYSID'] := GetComboBoxID(ComboTodo, ComboTodo.ItemIndex);
    Params.ByNameAsString['K_DRINGLICHKEIT_STR'] := ComboDringlichkeit.Text;
    Params.ByNameAsString['K_UNTERBEREICH'] := Edit1.Text;
    Params.ByNameAsString['ST_STATUSID'] := GetComboBoxID(ComboStatus, ComboStatus.ItemIndex);
    ExecSQL;


  finally
    Free;
  end;
Zitat:

Zitat von Exception
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt todoXP.exe ist eine Exception der Klasse EUIBError mit der Meldung 'arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets
can't format message 13:198 -- message file F:\d7\bin\firebird.msg not found
Error Code: 1' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

Was mache ich falsch? Wenn das ganze z.B.: eine TMSQuery oder TADOQuery für den MS SQL-Server wäre würde das ja funktionieren.

Lemmy 7. Sep 2007 06:10

Re: Mit UIB Komponente Datensatz in FireBird Tabelle einfüge
 
Hi,

ich vermute mal 2 Fehler:

1. Du arbeitest mit einer nicht vollständigen embedded FB-Installation oder einer nicht korrekt installierten Server-Version
2. Deine Datenbank hat eine andere Einstellung des Character-Sets als deine TUIBDatabase-Komponente

zu 2.: In den Verbidnungseinstellungen der Komponente musst Du den selben CharacterSet einstellen wie du ihn bei der ERstellung der DB angegeben hast. Für deutschsprachige DBs empfiehlt sich ISO8859_1

zu 1.: Müsste ich erst mal wissen was Du hast (FBServer oder Embedded)....
Grüße
Lemmy

hoika 7. Sep 2007 07:24

Re: Mit UIB Komponente Datensatz in FireBird Tabelle einfüge
 
Hallo,

3. Ein übergebener String-Wert (z.B. der des Edit) ist zu gross.


Heiko

Hansa 7. Sep 2007 07:33

Re: Mit UIB Komponente Datensatz in FireBird Tabelle einfüge
 
Warum lässt du das Insert nicht vom Dataset selber erzeugen ? Dann müssten nur noch die Felder besetzt werden. Entweder mit DBEdits usw. oder eben mit FieldByName.

mkinzler 7. Sep 2007 08:15

Re: Mit UIB Komponente Datensatz in FireBird Tabelle einfüge
 
Weil UIB keine BDE ist!!!!

Hansa 7. Sep 2007 08:21

Re: Mit UIB Komponente Datensatz in FireBird Tabelle einfüge
 
Was hat das mit BDE zu tun ? :shock: Gibts da keinen Dataset - Generator, Insert, Post usw. Befehle ?

mkinzler 7. Sep 2007 08:52

Re: Mit UIB Komponente Datensatz in FireBird Tabelle einfüge
 
Aber auch dann hätte er das Problem, das die übergebenen Werte zu groß(lang) sind.

Hansa 7. Sep 2007 09:19

Re: Mit UIB Komponente Datensatz in FireBird Tabelle einfüge
 
Hätte er nicht ! Sind dem Dataset die Felder per SQL-Generator bekannt gegeben, dann reicht statt einer grausamen Din A 4 Seite Insert-Codes das hier :

Delphi-Quellcode:
DS.Insert;
DS.FieldByName ('..').As...;
DS.Post;

GuenterS 7. Sep 2007 12:33

Re: Mit UIB Komponente Datensatz in FireBird Tabelle einfüge
 
Hallo,

erstmal danke für die viele Antworten.

Ich wollte einfach nur ein Insert Ding abschicken, daher keine Datenbankgebundenen Steuerelemente.

Das Feld erlaubt übrigens eine Länge von 180 Zeichen, übergeben sind nur ein Bruchteil davon max 20.

Bei der Datenbankverbindung habe ich es bei den Standardeinstellungen belassen, lediglich DatabaseName, Password und Username entsprechend ausgefüllt.

Weiters ist SQLDialekt=3 und CharacterSet = csNone ... so waren die aber schon eingestellt.


Auf dem Rechner, wo die Firebird Datenbank-Datei db.gdb liegt, läuft der Firebird Server mit Version 1.5.

Verwendet wird die gds32.dll

Welcher Zeichensatz bei Erstellung der DB angegeben wurde weiß ich nicht, die DB entstand vor meiner Zeit und war wohl in früheren Zeiten eine Interbase Datenbank.

MagicAndre1981 7. Sep 2007 12:41

Re: Mit UIB Komponente Datensatz in FireBird Tabelle einfüge
 
Stell mal das CharacterSet auf ISO8859_1.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 Uhr.
Seite 1 von 3  1 23      

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