![]() |
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:
|
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 |
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 |
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.
|
Re: Mit UIB Komponente Datensatz in FireBird Tabelle einfüge
Weil UIB keine BDE ist!!!!
|
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 ?
|
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.
|
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; |
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. |
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 01:20 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