Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi updateSQL, Daten eingeben (https://www.delphipraxis.net/24157-updatesql-daten-eingeben.html)

abi 16. Jun 2004 12:22


updateSQL, Daten eingeben
 
Hallo
irgendwie komme ich nicht weiter.

Ich habe 3 Tabellen 'Lehrer'
Nummer
Name
Fachbereich

---Hilfe
Dozent //verweisst auf Nummer von Tabelle Lehrer
Buch //verweisst auf Nummer von Tabelle Buch


--Buch
Nummer
Autor
Titel

Da ich in meiner SQL Anweisung ein Join enthalten habe. Muss ich ja über das updateSQL gehen.

Das bekomme ich auch hin, für meinen Namen und Fachbereich.
Aber ich wollte jetzt auch noch ein Buch auswählen. Wie kann ich des am besten machen.

Mercy

abi

Albi 16. Jun 2004 12:35

Re: updateSQL, Daten eingeben
 
Was hast Du den bis jetzt schon an Code dafür geschrieben?

Willst Du den Bezug zu dem Buch dann noch mit speichern?

abi 16. Jun 2004 12:42

Re: updateSQL, Daten eingeben
 
Hallo Albi :hi:
schön dich wieder zuhören.

Hab des jetzt wie du mir empfohlen hast mit Query Komponente gemacht.

Als SQL Befehl habe ich folgendes geschrieben.
Code:
SELECT *
FROM Lehrer L
Left OUTER JOIN Hilfe H ON (L.Nummer = H.Dozent)
LEFT OUTER JOIN Buch B ON (H.Buch = B.Nummer)
Da ich hier ja ein Join enthalten habe, kann ich hier ja nicht direkt einen neuen Datensatz einfügen.

Deshalb benutze ich eine UpdateSQL Komponente.

Jetzt kann ich zwar einen neuen Namen und eine neuen Fachbereich eintragen. Aber ich kann kein vorhandendes oder neues Buch auswählen.

Aber jetzt wollte ich des erstmal mit zwei Tabellen versuchen.

gruß
abi

Albi 16. Jun 2004 13:00

Re: updateSQL, Daten eingeben
 
Ich möchte jetzt nicht falsches sagen aber ich denke nur weil du ein Join verwendest brauchst du doch nicht zwingend ein UpdateSQL verwenden. Mit der einen Kompo die du jetzt gerade verwendest, filterst Du doch nur die Datenmenge. Wenn Du jetzt z.B. einen neuen Datensatz einfügen willst, dann nimmst Du eine 2 Query-kompo und schreibt einfach nur da rein was sie machen soll, das passiert völlig unabhängig von der Query.

Das könnte so aussehen:

SQL-Code:
with Query Do
begin
   Edit;
   Query.FieldByName('FeldName').asSonstwas:= Wert der geschrieben werden soll
   ...
   ...
   post;
end;
So kannst Du eine DS ändern, wenn du einen neuen DS einfügen willst setzt du vor das Edit noch ein append und es wird in der jeweiligen DB ein neuer DS eingefügt.

Es gib bestimmt noch mehrere Varianten soetwas zu handhaben aber ich mach es immer so.

Wenn Du nun z.B. einen neuen Lehrer anlegst, dann überprüft du vor dem speichern ob er schon da, wenn ja also nichts tun bzw. ändern, dann schaust du nach ober er in Hilfe-DB schon steht, wenn ja nichts tun, wenn nicht einfügen.

Du must die Hilfe-DB nicht als Ausgangs-DB betrachten, sondern deine beiden anderen DB. Die Hilfe DB macht es dir nur möglich, die Datenmenge übersichtlich zu halten. Sprich nur einmal die komplette Daten einzugeben. Wenn Du also einen DS eingeben willst erfolg das direkt über die DB's Lehrer und Buch und nicht über Hilfe.

abi 16. Jun 2004 13:13

Re: updateSQL, Daten eingeben
 
Danke Albi
ich glaube ich hab verstanden was du meinst.

Dann mache ich mal ne zweite Query Komponente.

Und probiere mal deine ganzen Tips aus.

mercy
abi


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