Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Insert Into mit Variablen (https://www.delphipraxis.net/137477-insert-into-mit-variablen.html)

Jacer 21. Jul 2009 20:30

Datenbank: Paradox • Version: 7 • Zugriff über: BDE

Insert Into mit Variablen
 
Moin,

ich hoffe ihr könnt mir nochmal helfen. Ich stehe vor einem relativ banalen Problem wobei ich durch einen INSERT INTO Befehl etwas in eine Datenbank schreiben möchte. Die Values sollen hier aus zuvor definierten Variablen bestehen. Und genau hier ist Problem:
Ich erhalte beim Ausführen immer Fehlermeldungen, was wohl mit der Syntax zusammenhängt.

Habe auch per Google nicht die richtige Syntax gefunden ich hoffe ihr könnt mir helfen!

gruß
jacer

hoika 21. Jul 2009 20:48

Re: Insert Into mit Variablen
 
Halo,

was hast du denn bisher ?


Heiko

Hansa 21. Jul 2009 20:48

Re: Insert Into mit Variablen
 
Gucke mal nach "ParamByName". So ungefähr muss das im Programm aussehen :
Delphi-Quellcode:
MyTable.ParamByName ('DBFELD').AsString := editMyVar.Text;
Allerdings, ob die tote BDE das beherrscht weiß ich nicht. Es gibt welche die glauben auch : "Elvis lebt". :mrgreen:

Die Muhkuh 21. Jul 2009 20:53

Re: Insert Into mit Variablen
 
Selbst die BDE beherrscht Parameter :stupid:

:arrow: Elvis lebt!

Jacer 21. Jul 2009 21:09

Re: Insert Into mit Variablen
 
Hatte es bisher so versucht:

Delphi-Quellcode:
'INSERT INTO Datenbank (Data1,Data2,..) VALUES ('+vData1+', '+vData2+', ...)
oder

Delphi-Quellcode:
'INSERT INTO Datenbank (Data1,Data2,..) VALUES ('+QuotedStr(vData1)+', '+QuotedStr(vData2)+',..)
Fehlermeldung hab ich folgende erhalten:

"Invalid use of keywords" oder "Value field required"

Die Muhkuh 21. Jul 2009 21:34

Re: Insert Into mit Variablen
 
SQL-Code:
INSERT INTO Datenbank (Data1,Data2,..) VALUES (:data1, :data2)
Delphi-Quellcode:
MyTable.ParamByName('data1').AsString := editMyVar.Text;
MyTable.ParamByName('data2').AsString := editMyVar2.Text;

Jacer 22. Jul 2009 14:58

Re: Insert Into mit Variablen
 
Zitat:

Zitat von Die Muhkuh
SQL-Code:
INSERT INTO Datenbank (Data1,Data2,..) VALUES (:data1, :data2)
Delphi-Quellcode:
MyTable.ParamByName('data1').AsString := editMyVar.Text;
MyTable.ParamByName('data2').AsString := editMyVar2.Text;

Trotzdem erhalte ich den Fehler "Value field required" :(

Ist es möglich dass es etwas mit dem Primary Key "ID" zusammenhängt den ich nicht in das Insert Into integriere? Dieser ist AutoIncrement also muss ich ihn doch eigentlich nicht mit in die Value-Liste aufnehmen oder?
Ansonsten sind alle Felder der Datenbank normale Strings.

Weiß einfach nicht woher sonst dieser Fehler kommen soll :?

DeddyH 22. Jul 2009 15:02

Re: Insert Into mit Variablen
 
Zeig mal Deinen Originalcode, vielleicht sieht man da etwas.

hoika 22. Jul 2009 15:07

Re: Insert Into mit Variablen
 
hALLO;

Übergibt mal die ID trotzdem (als 0).
und schreib zusätzlich ParamByName('Id').FieldType=ftAutoInc

oder

ParamByName('Id').Clear


Heiko

Miolin 22. Jul 2009 15:10

Re: Insert Into mit Variablen
 
Es kann durchaus sein, dass es am Primärschlüssel liegt.
Bei Zeos (und die richten sich ja vom Verhalten sehr nach der BDE), hatte ich das Problem auch schon. Wenn man die Felder allerdings anlegen lässt, kann man in den Eigenschaften des Feldes (alles Objektinspektor), Required auf false setzen.

Vielleicht konnte ich dir damit helfen.

MfG

Jacer 22. Jul 2009 15:28

Re: Insert Into mit Variablen
 
Zitat:

Zitat von hoika
hALLO;

Übergibt mal die ID trotzdem (als 0).
und schreib zusätzlich ParamByName('Id').FieldType=ftAutoInc

oder

ParamByName('Id').Clear


Heiko

Sobald ich die ID in den Insert Into Befehl integriere, bekomme ich folgende Fehlermeldung:

"INSERT and UPDATE operations are not supported on autoincrement field type."

Hier der komplette INSERT Befehl:

Delphi-Quellcode:
'INSERT INTO Datenbank.db (Kennzeichen,Modell,FahrgestellNr,LeistungKW,LeistungPS,Firma,Erstzulassung,Farbe,Kraftstoff,Navigationssystem,Name,Vorname,Strasse,Hausnummer,Postleitzahl,Wohnort,Geburtsdatum,Geburtsort'+',FührerscheinNr,FührerscheinKlassen,FührerscheinOrt,FührerscheinDatum,Ausgabedatum,AusgabeZeit,Reiseziel,RückkehrGeplantDatum,RückkehrGeplantZeit) VALUES (:Kennzeichen,:Modell,:FahrgestellNr,:LeistungKW,:LeistungPS,:Firma,:Erstzulassung,'+':Farbe,:Kraftstoff,:Navigationssystem,:Name,:Vorname,:Strasse,:Hausnummer,:Postleitzahl,:Wohnort,:Geburtsdatum,:Geburtsort,:FührerscheinNr,:FührerscheinKlassen,:FührerscheinOrt,:FührerscheinDatum,:AusgabeDatum,:AusgabeZeit,:Reiseziel'+',:RückkehrGeplantDatum,:RückkehrGeplantZeit)';
Zwischendurch musste ich den String trennen da ich Fehlermeldung aufgrund der begrenzten 255 Zeichen erhielt.

DeddyH 22. Jul 2009 15:33

Re: Insert Into mit Variablen
 
Deine Parameter enthalten Umlaute, vielleicht ist das die Ursache.

Jacer 22. Jul 2009 15:36

Re: Insert Into mit Variablen
 
Zitat:

Zitat von DeddyH
Deine Parameter enthalten Umlaute, vielleicht ist das die Ursache.

Das funktioniert bei allen anderen Befehlen auch.
Verwende ja mehrmals SELECT,UPDATE in dem Programm und da gibt es nirgendwo Probleme damit.

DeddyH 22. Jul 2009 15:40

Re: Insert Into mit Variablen
 
Und Du hast auch wirklich alle Parameter befüllt?

Jacer 22. Jul 2009 15:45

Re: Insert Into mit Variablen
 
Zitat:

Zitat von DeddyH
Und Du hast auch wirklich alle Parameter befüllt?

Ja alles doppelt und dreifach kontrolliert.

Hmm wäre es möglich dass der Fehler darin liegt dass ich über den Query gehe?
Also der Insert Befehl ist bei mir unter Query.SQL.Text und die Parameter unter Query.ParambyName('Parameter').AsString := vParameter;

Die Muhkuh 22. Jul 2009 15:52

Re: Insert Into mit Variablen
 
Zitat:

"INSERT and UPDATE operations are not supported on autoincrement field type."
Laut Deiner Fehlermeldung versucht Du irgendwo ein AutoInc-Feld zu setzen. Das solltest Du mal raus machen.

hoika 22. Jul 2009 15:59

Re: Insert Into mit Variablen
 
Hallo,

nein, hatte ich damals auch so gemacht.

Allerdings habe ich immer mehrere

Delphi-Quellcode:
Query.SQL.Add('')
genommen, pro Feld eine Zeile.

Trotzdem. Solltest doch noch was an der Struktur ändern können.
SONDERZEICHEN WEG !!!!
Das schlimmste, was du machen kannst, ist ein Ü zu verwenden.


Heiko

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

Jacer 22. Jul 2009 17:07

Re: Insert Into mit Variablen
 
Problem gelöst: Habe das Feld ID als nicht required in der Datenbankstruktur markiert und siehe da: der Fehler verschwindet :)

rmb 22. Jul 2009 19:37

Re: Insert Into mit Variablen
 
zu spät....

Gruß

Reiner


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 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