Entwickler-Ecke

Datenbanken - DBGrid über Query, zwei Tabellen bearbeiten


sTk - Do 06.05.10 11:25
Titel: DBGrid über Query, zwei Tabellen bearbeiten
Hallo!

Ich habe ein DBGrid welches über eine DataSource auf ein Query zugreift, welches wiederum Datensätze aus zwei Paradox-Tabellen liest. So weit so gut, das funktioniert(wenn auch mit viel Hilfe, bin blutiger Anfänger bei Datenbanken ;) )
Jetzt ist es allerdings nicht mehr möglich, die Daten einfach im DBGrid zu ändern.
Kennt jemand von euch eine Möglichkeit, wie ich es hin bekomme, dass eben das funktioniert.
Vielen Dank schonmal.

Gruß, Steffen


sTk - Mi 15.12.10 14:28

Hallo,

das Problem besteht leider immer noch.
Also falls jemand einen Lösungsansatz hat, bitte melden.
Dankeschön.

Gruß, Steffen


Tranx - Mi 15.12.10 15:21

Ich habe leider kein Paradox, um das zu testen. Möglicherweise gibt es eine spezielle SQL-Abfrage, mit der so etwas möglich ist (wird dann in der Eigenschaft SQL eingegeben).

Jedoch taucht meines Erachtens ein großes Problem auf. In welcher der beiden Datentabellen sollen denn die Daten gespeichert werden? Bei vorhandenen Daten mag das ja noch gehen, doch was ist mit neuen Daten (Insert, Append)? Ich befürchte, was Du da vorhast, wird daran scheitern und deshalb setzt Delphi dann die Canmodify-Eigenschaft der Query auf FALSE. Dann ist eine Bearbeitung nicht möglich.

Zuerst aber: Welchen Wert hat RequestLive der Query? TRUE oder FALSE. Mit F11 bei angeklickter Query siehst Du die Eigenschaften. Damit Werte geändert werden müssen, muss RequestLive auf TRUE stehen.


Critter - Mi 15.12.10 19:06

Hi,

ich meine mich erinnern zu können, das einige DBs das hingekommen, bei einfachen und eindeutigen Joins. Ob Paradox das allerdings kann ist mir unbekannt und da ich von dem System nicht viel erwarte würde ich eher vermuten, dass nicht.

Wie sieht denn dein Query aus?

critter


Tranx - Do 16.12.10 04:42

Vergaß noch zu erwähnen, dass - ich habe es bei DBase beobachtet - Querys ebenfalls keine Änderungen zuließen, wenn die Tabelle (und hier war es immer nur eine Tabelle) sortiert war und das Sortierfeld nicht von DBase selber indiziert war. Möglicherweise reagiert Paradox ähnlich. Bei Access ist das mit dem Sortieren überhaupt kein Problem mehr, da benötigt man nicht unbedingt ein Index auf dem Feld. Da könntest Du ja z.B. die deine beiden Tabellen in Access in einer Abfrage zusammenfassen und anschließend in Delphi als TQuery oder TTable ansprechen.

Ist nur ein Vorschlag.


zuma - Do 16.12.10 09:17

Oft liegt es daran, das die Datenmenge, die gelesen wird, einen Join enthält.
Eine Möglichkeit, gejointe Datenmengen trotzdem editierbar zu machen, ist, diese in ein Clientdataset zu schreiben und dieses dann zur Anzeige und Bearbeitung zu benutzen.
Es gibt dann also 3 Aufgabenbereiche:

1) Daten mit Query lesen und in Clientdataset legen (abschreiben)
2) Daten anzeigen und bearbeiten lassen mit DBGrid, verbunden mit dem Clientdataset
3) Daten aus Clientdataset mit Query in Datenbank schreiben

Somit trennst du dann auch das Lesen / Bearbeiten und Schreiben der Daten in eigene Prozeduren.


bummi - Do 16.12.10 09:35

oder vielleicht doch mal auf eine zeitgemäße DBM umsteigen.


Critter - Do 16.12.10 11:15

user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
oder vielleicht doch mal auf eine zeitgemäße DBM umsteigen.


:zustimm:

Das könnte dann auch weitere noch kommende Probleme lösen.

critter