![]() |
Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
Hallöchen zusammen,
ich habe folgendes Problem: Mein Delphi-Programm soll Daten in eine Oracle-Tabelle schreiben. Ich verwende dafür diese Routine:
Delphi-Quellcode:
Mein Problem ist jetzt, dass beim Ausführen des Programms die Meldung kommt: "dbExpress-Fehler: ungültiger Feldtyp".
with MyQuery do begin
SQL.Clear; SQL.Add('insert into '+ tablename + ' (TEST_PID,'+ ' TEST_NAME,'+ ' TEST_VORNAME,'+ ' TEST_PLZ,'+ ' TEST_ORT,'+ ' TEST_GEBDAT,'+ 'TEST_ZEICHEN)'+ ' values ' + '(:i_TEST_PID,'+ ':i_TEST_Nachname,'+ ':i_TEST_Vorname,'+ ':i_TEST_PLZ,'+ ':i_TEST_Ort,'+ ':i_TEST_GebDat,'+ ':i_TEST_ZEICHEN)'); Prepared := True; with Params do begin ParamByName('i_TEST_PID').AsString := pid; ParamByName('i_TEST_Nachname').AsString := nachname; ParamByName('i_TEST_Vorname').AsString := vorname; ParamByName('i_TEST_PLZ').AsInteger := plz; ParamByName('i_TEST_Ort').AsString := ort; ParamByName('i_TEST_GebDat').AsString := datum; ParamByName('i_TEST_ZEICHEN').AsString := zeichen; end; //with params ExecSql; end; //whith query In der DB sind pid, nachname, vorname, ort, datum ein varchar plz ein number zeichen ein char Was hab ich da falsch gemacht?? :?: |
Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
Liegt es vielleicht an der P_ID, wird die ID auf der DB auch erzeugt?
Einen Tip am Rande. Besser wäre es für die PLZ ein CHAR (5) zu wählen, da bei einem Integer Wert aus der PlZ 01234 eine 1234 wird. Es wird die 0 am Anfang also weggekürzt. |
Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
Dein Code müsste eigentlich funktionieren, solange TEST_GEBDAT kein Datum ist.
Dann müsste es so heißen:
Delphi-Quellcode:
ParamByName('i_TEST_GebDat').AsDatetime := IrgendeineDatumsVariable;
Falls es immer noch nicht geht: Öffne SQLPlus, tippe einmal "ED" dann Enter. im Notepadfenster einfach das da unten einfügen, speichern und schließen. Du landest jetzt wieder in der Kommandozeile, dort reicht ein "/" um es auszuführen.
SQL-Code:
Das ist dein Code da oben in PL/SQL, wenn das geht, dann bocken deine Einstellungen für die DB-Kompos. ;)
Declare
pid Varchar2(20) := '123'; nachname Varchar2(20) := 'eene'; vorname Varchar2(20) := 'meene'; plz Varchar2(20) := 'muh'; ort Varchar2(20) := '123'; datum Date := to_Date('01012000', 'DDMMYYYY'); zeichen Varchar2(20) := '123'; TableName Varchar2(32) := 'DeinTabellenName'; Begin Execute Immediate 'INSERT INTO ' || TableName || chr(10) || ' (TEST_PID' || chr(10) || ' ,TEST_NAME' || chr(10) || ' ,TEST_VORNAME' || chr(10) || ' ,TEST_PLZ' || chr(10) || ' ,TEST_ORT' || chr(10) || ' ,TEST_GEBDAT' || chr(10) || ' ,TEST_ZEICHEN)' || chr(10) || 'VALUES' || chr(10) || ' (:i_TEST_PID' || chr(10) || ' ,:i_TEST_Nachname' || chr(10) || ' ,:i_TEST_Vorname' || chr(10) || ' ,:i_TEST_PLZ' || chr(10) || ' ,:i_TEST_Ort' || chr(10) || ' ,:i_TEST_GebDat' || chr(10) || ' ,:i_TEST_ZEICHEN)' Using pid, nachname, vorname, plz, ort, datum, zeichen; End; |
Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
hi Robert_G,
ich hab es mit pl/sql ausprobiert und es lief!! ja super, das heißt jetzt, dass bei meinen delphi-einstellungen etwas nicht so dolle ist??? ich hatte letzte woche delphi 8 mit drauf, hab es dann aber deinstalliert und delphi 7 nicht neu installiert. kann es sein, dass da was verloren gegangen ist?? |
Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
Wenn sich Delphi (Win32) & Oracle treffen gehört auch
![]() Unter Downloads kannst du eine volle Trial saugen und ausprobieren -> du wirst nie wieder anders auf eine DB zugreifen wollen ;) Zu deinem DBExpress-Problem: D8 hat eine Weiterentwicklung von DBExpress dabei, hast du die beim Deinstallieren auch gelöscht, dürfte dein altes DBXpress ziemlich zerpflückt sein. |
Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
thanks erst mal, ich probier es mal mit ner neuinstallation des d7, wenn es danach nicht läuft... dann schaun mer mal.
|
Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
Hallöchen, da bin ich wieder,
so, nun habe ich d7 komplett deinstalliert und neuinstalliert und habe mir gleich ein anderes problem geschaffen: der compiler meldet nämlich folgendes: [Fataler Fehler] DatenInDB.pas(7): Unit SqlExpr wurde mit einer unterschiedlichen Version von SqlConst.SNOERROR compiliert was nun??? :wall: |
Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
Hast Du wirklich Dein D7 komplett entsorgt, bevor Du es neu installiert hast? Normalerweise kommt dieser Fehler ja dann, wenn man Dateien aus unterschiedlichen Versionen (Updates usw.) miteinander verwendet.
Ich hatte übrigens die allerbesten Erfahrungen mit dem Zugriff auf Oracle mit ![]() Am besten ist die NET-Variante (hat nix mit DotNET zu tun ;) ). Damit schreibt mann Anwendungen, bei denen der User keinen Oracle-Client benötigt. Man trägt (über ein Installationsprogramm, INI-Datei usw.) die IP-Adresse, sowie den Datenbanknamen des Servers ein und fertig. :coder: |
Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
ich hatte direkt ein update mit installiert. das hab ich bei der letzten installation mal weggelassen und das programm lief wieder. erst hat es was rumgebockt, so von wegen fehlermeldungen beim starten von delphi, aber jetzt ist alles okay soweit.
die daten in die db kriege ich jetzt auch, ich lass einfach die parametergeschichte weg und mache ein einfaches insert - und es läuft. wahnsinn. danke nochmal an alle :-D |
Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
Zitat:
Wenn das nicht geht, dann machst du ganz einfach etwas falsch. Bastelst du dir aus Stringstücken irgendwelche Statements zusammen machst du es sowieso falsch. ;) Also schaue dir genau an, ob du zum Bleistift bei einem Datumsparameter in DBExpress, diesen Parameter als DateTime/Date deklarieren musst (ich mache das immer). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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 by Thomas Breitkreuz