Autor Beitrag
TheEquinox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 19.07.11 16:35 
Hallo zusammen,

ich benutze die Direct Oracle Access Komponenten um ein DBGrid durch Aufruf einer Stored Procedure in einer Oracle DB zu befüllen, was soweit auch funktioniert. Allerdings sind die Daten im DBGrid dann nicht editierbar, d.h. ich kann eine Zelle anklicken, das Grid geht auch in den Edit-Modus, aber wenn ich Zahlen eintippe, passiert nichts. Also der alte Wert bleibt stehen. Da ich die Options des TOracleDataset und des Grid bereits korrekt auf ReadOnly := false und EditMode gesetzt habe, vermute ich, dass ich noch irgendwo eine Update-SQL Anweisung hinterlegen muss. Leider weiß ich aber nicht wo und ich finde auch keine gescheite Hilfe zu den DOA Komponenten.

Kann mir hier jemand auf die Sprünge helfen ?

Danke...


Edit : Ich habe gerade hier im Forum gefunden, dass man beim Select noch die RowID mitnehmen muss. Nachdem ich das jetzt ausprobiert habe, stürzt die Anwendung ab, sobald ich versuche im Grid einen Wert zu ändern. Zuerst war die Fehlermeldung "Table name does not exist" - daraufhin habe ich das TOracleDataset.UpdatingTable property auf den Tabellen-Namen gesetzt. Jetzt kommt beim Editierversuch die Fehlermeldung "Field 1 does not exist" und ich bin ratlos...

Bin weiterhin für jede Hilfe dankbar...
jaevencooler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 166
Erhaltene Danke: 6

MS-DOS,Win32, Win95, Win 98, Me,XP, Linux, NT4.0, NT 2000-2008, Vista, Windows 7
Turbo Pascal,D1 Enter,D2 Enter,D3 Enter,D5 Enter, Kylix, D2007, PL/SQL, MS/SQL, Delphi 2010, Delphi XE
BeitragVerfasst: Mi 20.07.11 11:25 
Moin, Moin,


was genau heißt den " ein DBGrid durch Aufruf einer Stored Procedure in einer Oracle DB zu befüllen " ?

Daten aus einer Stored Procedure heraus sind ja nur unter bestimmten Bedingungen änderbar !?
Aus Deinem Beitrag entnehme ich das Du das DBGrid mit einem TOracleDataset verbunden hast, und das Du in Deiner
Select Anweisung auch den Rowid mit anziehst, dann musst Du TOracleDataset.open angeben und TOracleDataset.Edit !

Du kannst die Datenmenge aber nur in den Edit Modus setzen wenn diese auch editierbar ist !, was bei einem Ergebnis aus
einer Stored Procedure so erst einmal nicht der Fall ist !


Beste Grüße
Michael

_________________
Wissen ist Macht, nichts wissen macht auch nichts...
TheEquinox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Mi 20.07.11 14:48 
Hallo jaevencooler,

danke Dir für Deine Antwort, aber ich verstehe nicht, was Du meinst. Was meinst Du denn mit Open und Edit "angeben" ? Open und Edit sind Prozeduren ohne Parameter, was soll ich da angeben ?

Mit dem Befüllen des DBGrid meine ich, dass ich eine Stored Procedure als TOracleQuery ausführe, die mir einen ref cursor zurückliefert. Diesen ref cursor hänge ich über die Property ExternalCursor an das Dataset, welches wiederum über eine DataSource mit dem Grid verbunden ist.

Ergebnis : Die Ergebnismenge aus dem Cursor wird im Grid angezeigt, aber die Felder des Grids sind nicht editierbar.
Frage : Was muss ich tun, damit sie editierbar sind ?