Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Insert Befehl (https://www.delphipraxis.net/179330-insert-befehl.html)

Luckner 27. Feb 2014 12:16

Datenbank: FB • Version: 2.1 • Zugriff über: Dataset

Insert Befehl
 
Was ist an dem Befehl falsch?

DatamodulePlannung.DataModule5.IBDataSetGridPlannu ng.InsertSQL.Add('insert into PLANNUNG (LAGERANZAHL) select ARTIKEL.LAGERANZAHL from ARTIKEL where ARTIKEL.ID = ID_ARTIKEL');

Fehler: Column ID_Artikel nicht bekannt. Das Dataset selbst kennt die Spalte ID_Artikel.

Danke, Luckner

mkinzler 27. Feb 2014 12:18

AW: Insert Befehl
 
Zur welcher Tabelle gehört diese Spalte?

DeddyH 27. Feb 2014 12:19

AW: Insert Befehl
 
Kannst Du das SQL mal im Klartext erklären (und bei der Gelegenheit auch gleich mal Code in Delphi-Tags einschließen)? Zu welcher Tabelle gehört denn das Feld ID_ARTIKEL?

Luckner 27. Feb 2014 12:25

AW: Insert Befehl
 
Zur Tabelle PLANNUNG

mkinzler 27. Feb 2014 12:27

AW: Insert Befehl
 
Dann macht das Statement so keinen Sinn!
Was hast du eigentlich vor?

Es scheint mir, dass Gewisse Lücken in Deinem Wissen über (relationale) Datenbanken bestehen.

DeddyH 27. Feb 2014 12:27

AW: Insert Befehl
 
Dann verstehe ich den Sinn nicht. Wo soll denn der Wert eines einzufügenden Datensatzes herkommen?

[edit] *Grmpf* Markus :lol: [/edit]

Luckner 27. Feb 2014 12:47

AW: Insert Befehl
 
Meine Vorstellung ist folgende:
Es existieren 2 Tabellen. 1: ARTIKEL mit ID, LAGERANZAHL, ARTIKELNR, usw. 2: PLANNUNG mit ID, ID_ARTIKEL(identisch mit ID aus ARTIKEL), LAGERANZAHL, ARTIKELNR, TERMIN usw. Die Tabelle PLANNUNG wird befüllt aus einer Tabelle AUFTRAG und Das funktioniert schon gut. Da existiert aber das Feld LAGERANZAHL nicht. Jetzt möchte ich aus ARTIKEL nur die Datensätze von LAGERANZAHL in die PLANNUNG übernehmen. Mit einem Button.click dann immer aktualisieren.

DeddyH 27. Feb 2014 12:48

AW: Insert Befehl
 
Aktualisieren wäre aber ein UPDATE, INSERT heißt ja Einfügen.

Luckner 27. Feb 2014 12:53

AW: Insert Befehl
 
Wenn ich Datensätze aus einer anderen Tabelle übernehme, wäre das ein update der Zieltabelle?

DeddyH 27. Feb 2014 12:56

AW: Insert Befehl
 
Nun mal langsam: existieren die Datensätze nun in der Zieltabelle oder nicht? Überhaupt kommt mir die ganze Struktur ein wenig merkwürdig vor, aber Du wirst schon wissen, was Du tust.

p80286 27. Feb 2014 13:00

AW: Insert Befehl
 
Nun dann sollte
Code:
update PLANNUNG set LAGERHALTUNG=(select LAGERHALTUNG from ARTIKEL where ARTIKEL.ID=PLANNUNG.ID_ARTIKEL) where LAGERHALTUNG is null
einigermaßen passen. (ich hoffe ich hab die Tabelen und Felder mir richtig gemerkt)

Nur wenn in der Tabelle LAGERHALTUNG schon gefüllt ist, warum dann nicht
Code:
select PLANNUNG.irgendwas,ARTIKEL.LAGERHALTUNG from PLANNUNG join ARTIKEL on (ARTIKEL.ID_ARTIKEL=PLANNUNG.ID_ARTIKEL)
Dann stehen Dir die Daten zur Verfügung!?




Gruß
K-H

Luckner 27. Feb 2014 13:07

AW: Insert Befehl
 
In der Zieltabelle existiert das Feld LAGERANZAHL. Beim Befüllen der Zieltabelle aus Auftrag ist das Feld LAGERANZAHL noch leer. Erst nach dem Drücken des Aktualisierungsbutton sollte aus ARTIKEL die Datensätze übernommen werden. Mag update richtig sein, so gut bin ich nicht in Datenbanken. Mit insert war nur mein Idee der Realisierung.

mkinzler 27. Feb 2014 13:13

AW: Insert Befehl
 
Dann sollte das Update-Statement von p80286 passend sein. Es wiederspricht aber dem Grundsatz von relatuionalen Datenbanken, Daten redundant zu speichern! In Deinem Fall kann man das ja einfach per Join bei der Abfrage erledigen. Stimmt dann auch. In deinem Fall wäre dies bei der Umlagerung nicht mehr so!

Zitat:

so gut bin ich nicht in Datenbanken
Das kann/sollte man ändern.

Luckner 27. Feb 2014 13:33

AW: Insert Befehl
 
Mit inner join hatte ich es probiert und es hat funktioniert. Die Anzeige war ok. Da ich jedoch in der Tabelle PLANNUNG anschliessen noch per Eingabe das Feld TERMIN befüllen muss und das ganze Speichern, gab es da keine Verbindung mehr zur der Ursprungstabelle. Hatte noch vergessen zu erwähnen, das diese Tabelle über ein DBGrid angezeigt und bgearbeitet wird.
In welcher Eigenschaft von Dataset wird der Update-Befehl eingetragen. Unter ModifySQL funktionierts nicht.

mkinzler 27. Feb 2014 13:37

AW: Insert Befehl
 
In UpdateSQL oder einfach in SQL, da ja alle Datensätze, welche betroffen sind durch das Statement angepasst werden.

Luckner 27. Feb 2014 13:40

AW: Insert Befehl
 
Mein TIBDataset hat nur selectSQL, deleteSQL, insertSQL, modifySQL und refreshSQL.

himitsu 27. Feb 2014 13:50

AW: Insert Befehl
 
Rate mal, was ein "Update"-Statement macht und nach was das "Modify" klingt.

Luckner 27. Feb 2014 13:56

AW: Insert Befehl
 
Danke, ausprobiert und funktioniert.


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