![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: zeos
Subquery
hallo zusammen,
mit:
SQL-Code:
fülle ich ein db-grid
select * from artprod p , artikel a
where p.artikel_id =a.artikel_id order by p.lieferdatum desc; nun lässt das Grid aber Änderungen nur zu, wenn die Daten aus einer einzigen Tabelle stammen. Ich hab irgendwo gelesen dass es auch mit inner- oder outer-join funktionieren soll ;-) Leider kenn ich mich da in der (relativ neuen) Syntax nicht aus, da wir bisher alles über Subquerys umgesetzt haben. Danke für eure Hilfe. Gruss KHH |
Re: Subquery
Ein impliziter Join ist immer ein Inner Join
SQL-Code:
select
a*, p.* from artprod p join artikel a on a.artikel_id =p.artikel_id order by p.lieferdatum desc; |
Re: Subquery
Zitat:
|
Re: Subquery
Zitat:
die query mit dem join funktioniert zwar richtig um das Grid zu füllen, ein Ändern ist aber leider auch so nicht möglich. ---Cannot update a complex query with more then one table-- muss ich mir die Sache mit den Lookupfeldern wohl mal ansehen :-( |
Re: Subquery
Hast du es mal mit einem UpdateObjekt versucht?
|
Re: Subquery
Zitat:
|
Re: Subquery
Welche Werte von welcher Tabelle werden denn geändert?
Du brauchst ja für jeder Tabelle ein eigenes Update. In der Komponente kann nur ein Update angesprochen werden. Wenn alles in einen Rutsch gehen soll, brauchst Du eine SP in der DB. Der übergibst Du alle Parameter und die führt dann die Updates nacheinander aus. Gruß Borwin |
Re: Subquery
Zitat:
heisst aus der Subquery brauch ich nur die Artikelnummer und -bezeichnung zur Anzeige im Grid. |
Re: Subquery
Wenn du Zeos nutzt, kannst du TZUpdateSQL verwenden.
Einfach auf die Form packen und in der Query bei UpdateObject auswählen. Die Kompo besitzt auch einen UpdateSQl-Editor. Da kannst du dir bequem deine Statements zusammen klickern. |
Re: Subquery
Zitat:
nach dem schema
SQL-Code:
aber wie bekomme ich den Bezug zu dem geänderten feld?
update artprot set menge = ???
|
Re: Subquery
Parameter sollte :old_menge heissen.
Am Besten benutzt du den Query-Editor der Komponente |
Re: Subquery
Zitat:
die update-query siehts so aus:
SQL-Code:
dennoch bekomme ich die meldung
UPDATE artprod SET
MENGE = :MENGE WHERE ((artprod.MENGE IS NULL AND :OLD_MENGE IS NULL) OR (artprod.MENGE = :OLD_MENGE)) errorcode -804 data type unknown update ... set menge = ? where .... |
Re: Subquery
Und wenn du den tabellenbezeichner hinzuschreibst?
SQL-Code:
UPDATE artprod SET
artprod.MENGE = :MENGE WHERE ((artprod.MENGE IS NULL AND :OLD_MENGE IS NULL) OR (artprod.MENGE = :OLD_MENGE)) |
Re: Subquery
Zitat:
|
Re: Subquery
Setzte mal Testweise einen Typ für den Parameter
|
Re: Subquery
Zitat:
hab ich gemacht, jetzt lautet die Fehlermeldung : column unknown MENGE at line... :-( das lässt mich überlegen die Daten redundant in dieser Tabelle zu halten, dann wäre ich die Probleme los. ist aber auch nicht der Wahrheit letzter Schluss :-( |
Re: Subquery
Oder im Statement:
SQL-Code:
UPDATE artprod SET
MENGE = Cast(:MENGE as Double Precision) WHERE ((artprod.MENGE IS NULL AND :OLD_MENGE IS NULL) OR (artprod.MENGE = :OLD_MENGE)); |
Re: Subquery
Zitat:
column unknown MENGE at line 15 wobei es sich bei dieser Position um die der :MENGE handelt, wenn man der Angabe in der Meldung glauben darf. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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