Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensätze insertieren (https://www.delphipraxis.net/18852-datensaetze-insertieren.html)

barnti 25. Mär 2004 10:37


Datensätze insertieren
 
Hi,

ich arbeite mit einer mysql-DB und versuche Datensätze in meine Tabelle zu schreiben:

Tabelle_Position:
SQL-Code:
+----------------+------------------+------+-----+---------+----------------+
| Field         | Type            | Null | Key | Default | Extra         |
+----------------+------------------+------+-----+---------+----------------+
| Position_ID   | int(10) unsigned |      | PRI | NULL   | auto_increment |
| Container_ID  | int(10) unsigned | YES | MUL | NULL   |                |
| Auftrag_ID    | int(10) unsigned |      | MUL | 0       |                |
| Partie_ID     | int(10) unsigned |      | MUL | 0       |                |
| Unterpartie_ID | int(10) unsigned |      | MUL | 0       |                |
| PositionNR    | int(10) unsigned | YES |     | NULL   |                |
| Menge         | int(10) unsigned | YES |     | NULL   |                |
| Timestamp     | timestamp(14)   | YES |     | NULL   |                |
| valid         | datetime        | YES |     | NULL   |                |
+----------------+------------------+------+-----+---------+----------------+
Der Query.text sieht folgendermaßen aus:
SQL-Code:
Insert into Position values('','','1','25','37','1','4','','');
Insert into Position values('','','1','25','38','2','2','','');
Insert into Position values('','','1','25','39','3','2','','');
Insert into Position values('','','1','25','40','4','2','','');
Insert into Position values('','','1','25','41','5','1','','');
Insert into Position values('','','1','25','42','6','1','','');
Als Fehlermeldung erhalte ich:
Zitat:

'' is not a valid integer.
Was mir sagt, dass ich leere Werte so nicht in die DB schreiben darf. Wie kann ich das Problem lösen? Wie kann ich die oben genannten Daten trotzdem einfügen?

Sharky 25. Mär 2004 10:40

Re: Datensätze insertieren
 
Hai barnti,

schreibe doch nur die Werte die Du brauchst:

SQL-Code:
INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES (1,25,37,1,4)

mikhal 25. Mär 2004 10:42

Re: Datensätze insertieren
 
Benutze statt '' NULL, dann sollte es funktionieren, vorausgesetzt, dein Autoincrement funktioniert.

Grüße
Mikhal

Robert_G 25. Mär 2004 10:42

Re: Datensätze insertieren
 
Du hast wohl noch Oracle im Kopf ;)
In Oracle es ein '' das gleiche wie ein NULL. Es ist also genauso NUMBER, DATE, VARCHAR2,... vielleicht wird das in mySQL anders gehandhabt.
Versuch's mal mit NULL anstatt ''.

Edit:
3 auf einen Streich :mrgreen:
Sharkys Lösung wäre natürlich die beste ;)

barnti 25. Mär 2004 10:44

Re: Datensätze insertieren
 
Hallo,

danke euch. Das waren wohl die schnellsten Antworten, die ich hier je bekommen habe. :)

Jo, das mit Oracle stimmt.

barnti 25. Mär 2004 11:07

Re: Datensätze insertieren
 
Mhm...

leider hatte ich mit euren Vorschlägen noch keinen Erfolg:

SQL-Code:
INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','37','1','4')
INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','38','2','2')
INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','39','3','2')
INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','40','4','2')
INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','41','5','1')
INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','42','6','1')
So geht es nicht. Immer noch die selbe Fehlermeldung. Und so:

SQL-Code:
Insert into Position values(Null, Null,'1','25','37','1','4',Null,Null);
...
Klappt es ebenfalls nicht. :(. Wo liegt mein Fehler?

kiar 25. Mär 2004 11:53

Re: Datensätze insertieren
 
hallo beim sql standart werden :
SQL-Code:
wert is null oder wert = ''
nicht immer eindeutig interpretiert.

deshalb sollte man beide Abfragen mit OR verbinden, oder eine Stored Procedure schreiben.

raik

barnti 25. Mär 2004 11:56

Re: Datensätze insertieren
 
Hallo noch einaml,

ich habe festgestellt, dass die Fehlermeldung erst in der Exceptionbehandlung auftaucht. Aber diese Exception wird durch das SQL-Statement ausgelöst. Bei eingeschalteten Compilermeldungen bekomme ich den Fehler:

Zitat:

You have an Error in your SQL-Statement near...
deshalb hier noch mal der aktuelle Code:
SQL-Code:
insert into Position values(NULL,NULL,'1','25','37','1','4',NULL,NULL);
insert into Position values(NULL,NULL,'1','25','38','1','2',NULL,NULL);
insert into Position values(NULL,NULL,'1','25','39','1','2',NULL,NULL);
insert into Position values(NULL,NULL,'1','25','40','1','2',NULL,NULL);
insert into Position values(NULL,NULL,'1','25','41','1','1',NULL,NULL);
insert into Position values(NULL,NULL,'1','25','42','1','1',NULL,NULL);
Kann jemand helfen?

barnti 25. Mär 2004 12:01

Re: Datensätze insertieren
 
@raik

ich habe Deine letzte Antwort leider nicht verstanden. Kannst Du mal erklären?

Danke!

kiar 25. Mär 2004 12:04

Re: Datensätze insertieren
 
du versuchst in deinen eingaben entweder Null oder '' einzugeben.

es kann sein, das deine felder dies aber unterschiedlich interpretieren. deshalb solltest du die eingaben
SQL-Code:
is null oder ''
zulassen und dich nicht auf eins beschränken.

raik

muß jetzt weg, komme aber nachher wieder


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.
Seite 1 von 2  1 2      

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