AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp
Thema durchsuchen
Ansicht
Themen-Optionen

Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

Ein Thema von I_need_help · begonnen am 12. Mai 2004 · letzter Beitrag vom 18. Mai 2004
Antwort Antwort
I_need_help
(Gast)

n/a Beiträge
 
#1

Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

  Alt 12. Mai 2004, 17:09
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:
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
Mein Problem ist jetzt, dass beim Ausführen des Programms die Meldung kommt: "dbExpress-Fehler: ungültiger Feldtyp".

In der DB sind
pid, nachname, vorname, ort, datum ein varchar
plz ein number
zeichen ein char

Was hab ich da falsch gemacht??
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#2

Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

  Alt 12. Mai 2004, 17:55
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.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#3

Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

  Alt 12. Mai 2004, 18:19
Dein Code müsste eigentlich funktionieren, solange TEST_GEBDAT kein Datum ist.
Dann müsste es so heißen:
  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:
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;
Das ist dein Code da oben in PL/SQL, wenn das geht, dann bocken deine Einstellungen für die DB-Kompos.
  Mit Zitat antworten Zitat
I_need_help
(Gast)

n/a Beiträge
 
#4

Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

  Alt 13. Mai 2004, 12:19
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??
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

  Alt 13. Mai 2004, 15:12
Wenn sich Delphi (Win32) & Oracle treffen gehört auch DOA dazu.
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.
  Mit Zitat antworten Zitat
I_need_help
(Gast)

n/a Beiträge
 
#6

Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

  Alt 13. Mai 2004, 16:22
thanks erst mal, ich probier es mal mit ner neuinstallation des d7, wenn es danach nicht läuft... dann schaun mer mal.
  Mit Zitat antworten Zitat
I_need_help
(Gast)

n/a Beiträge
 
#7

Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

  Alt 17. Mai 2004, 14:43
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???
  Mit Zitat antworten Zitat
Alfons_G

Registriert seit: 7. Jun 2002
Ort: München
296 Beiträge
 
Delphi 2007 Architect
 
#8

Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

  Alt 18. Mai 2004, 10:29
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 ODAC. Die Komponenten gibt es als Testversion zum Download. Der Kaufpreis liegt zwischen 90 und 300 Euro, je nach Version. Mit der Lizenz ist man für alle verfügbaren Delphi-Versionen ausgerüstet.
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.

Alfons Grünewald



Alfons Grünewald
  Mit Zitat antworten Zitat
I_need_help
(Gast)

n/a Beiträge
 
#9

Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

  Alt 18. Mai 2004, 13:48
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
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: Oracle: Tabelle mit Daten füllen - Fehler beim Datentyp

  Alt 18. Mai 2004, 15:32
Zitat:
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


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).
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 Uhr.
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