Entwickler-Ecke
Datenbanken - DBGrid/DBCtrlGrid - Dateneingabe/-änderung ist nicht möglich
M4X1 - Do 10.01.08 15:58
Titel: DBGrid/DBCtrlGrid - Dateneingabe/-änderung ist nicht möglich
Hallo,
dieses Thema ist zwar schon mehrmals diskutiert worden, jedoch laut Suche noch nicht im Zusammenhang mit DOA. Ich entschuldige mich schonmal im Voraus, sollte es doch schon für den Fall eine Lösung geben.
Ich greife mit der DOA-Komponente auf eine Oracle 9i DB zu und habe das ganze an ein DBGrid geknüpft. Die Session funktioniert einwandfrei und Datensätze werden alle angezeigt. Read-Only habe ich auch auf false gesetzt sowe dgEditing beim DBGrid auf True.
Hier finde ich keine weiteren Konfigurationsmöglichkeiten mehr, wie ich dem DBGrid sagen kann, die mich Datensätze ändern/entfernen/anfügen lassen im Form. Selbiges Problem habe ich auch beim DBCtrlGrid feststellen müssen. Der DBNavigator deaktiviert auch alle Editier-Funktionen. -.- Woran könnte das liegen?? :gruebel:
Danke schonmal für euere Hilfe.
Bye
M4X1
hazard999 - Do 10.01.08 16:05
Hallo,
ReadOnly-Forward-Cursor?
r u
René
M4X1 - Do 10.01.08 16:27
Danke für den Tipp.
Wie es scheint, unterstützen die DOA-Kompos diese Art des Cursors nicht. Zumindest gibt mir die Hilfe nicht viel her.
Das habe ich zu Cursor unter DOA gefunden:
| Zitat: |
Declaration
property Cursor: TCursor;
Description
Determines the shape of the mouse cursor while executing SQL statements. Only crDefault, crHourGlass and crSQLWait are useful here.
|
Wie es scheint muss es da einen anderen weg geben oder gehe ich das mit dem ReadOnly-Forward-Cursor falsch an? :autsch:
jasocul - Do 10.01.08 16:44
Wie sieht denn dein SQL-Statement aus?
Wenn du dort ein View aufrufst oder joins verwendest, kannst du einstellen was du willst, es bleibt R/O.
M4X1 - Do 10.01.08 16:51
Hatte ich auch schonmal im Auge. Selbst mit einem einfachen:
Views verwende ich nicht. Dafür habe ich noch keine Verwendung gefunden.
Danke trotzdem.
Agawain - Do 10.01.08 17:43
M4X1 hat folgendes geschrieben: |
Danke für den Tipp.
Wie es scheint, unterstützen die DOA-Kompos diese Art des Cursors nicht. Zumindest gibt mir die Hilfe nicht viel her.
Das habe ich zu Cursor unter DOA gefunden:
| Zitat: |
Declaration
property Cursor: TCursor;
Description
Determines the shape of the mouse cursor while executing SQL statements. Only crDefault, crHourGlass and crSQLWait are useful here.
|
Wie es scheint muss es da einen anderen weg geben oder gehe ich das mit dem ReadOnly-Forward-Cursor falsch an? :autsch: |
Mit Cursor ist hier nicht der Mauszeiger gemeint, sondern der Datensatzzeiger.
Der Hilfetext, den Du hier zitierst, bezieht sich auf den Mauszeiger.
Kenn mich mit DOA nicht aus, aber vielleicht hielft Dir die hier zu findende Info weiter.
http://www.protech-ndh.de/Publikationen/entwickler/1/index.htm
insbesondere das hier:
�Oracle-Speziell� ist auch die Implementierung von �toten� oder �lebenden� Ergebnismengen. Lebende Ergebnismengen werden durch die Angabe der ROWID im SQL �Statement erzeugt.
SELECT A.ROWID,A.* FROM ADRESSE A
Wird die RowID nicht angegeben, kann die Ergebnismenge nicht bearbeitet werden. Die Ausführung eines in einem OracleDataSet definierten SQL-Statements erfolgt in der Regel über die bekannte Methode Open.
jasocul - Do 10.01.08 17:59
Normalerweise reicht es, dass die Tabelle einen Primary-Key hat.
Alternativ kann man natürlich auch die Rowid ins Select mit einbauen.
M4X1 - Fr 11.01.08 08:44
Guten Morgen und Vielen Dank für die Hilfe,
Agawain hat folgendes geschrieben: |
Mit Cursor ist hier nicht der Mauszeiger gemeint, sondern der Datensatzzeiger.
Der Hilfetext, den Du hier zitierst, bezieht sich auf den Mauszeiger.
|
Das habe ich schon verstanden, nur waren die "Maus"-Cursor die einzigen, die ich finden konnte unter DOA. ^^ Und von Datensatzzeigern war keiner auffindbar. Zumindest keiner, den ich für das DBGrid setzen könnte, damit ich darin Daten ändern kann.
Agawain hat folgendes geschrieben: |
insbesondere das hier:
�Oracle-Speziell� ist auch die Implementierung von �toten� oder �lebenden� Ergebnismengen. Lebende Ergebnismengen werden durch die Angabe der ROWID im SQL �Statement erzeugt.
SELECT A.ROWID,A.* FROM ADRESSE A
Wird die RowID nicht angegeben, kann die Ergebnismenge nicht bearbeitet werden. Die Ausführung eines in einem OracleDataSet definierten SQL-Statements erfolgt in der Regel über die bekannte Methode Open. |
Hmm... Werde ich gleich mal versuchen.
Agawain hat folgendes geschrieben: |
Normalerweise reicht es, dass die Tabelle einen Primary-Key hat.
Alternativ kann man natürlich auch die Rowid ins Select mit einbauen. |
Ich nutze in jeder Tabelle entweder Primary oder Foreign Keys. Hier stellt sich die Frage, ob ich bei den Tabellen, bei denen ich nur Foreign Keys drin habe, auch noch einen Extra PK brauche. Wobei ich hier dann einfach die RowID nehmen kann. Werd ich gleichmal testen.
M4X1 - Fr 11.01.08 09:48
Also der Tipp mit der ROWID war bahnbrechend. Primery Keys oder Foreign Keys haben keine Wirkung aufs Grid, wenn man Daten ändern will. Allein die ROWID muss im Select aufgenommen werden, damits funktioniert. :party:
Und für alle die, die meinen, eine ROWID im Grid würde sich nicht gut machen, kann ich nur sagen, dass die nichtmal angezeigt wird. 8)
Es funktioniert dann auch der Navigator und möglicherweise auch das DBCtrlGrid usw..
Ich hätte nie geglaubt, dass Oracle da in gewisser weise so strickt sein kann, da ja eigentlich PKs vorhanden sind neben der ROWID. Bei den FKs kann ichs ja gerade noch verstehen, da bei 1:n-Beziehungen der Key mehrmals vorkommt und eine Eindeutigkeit verloren geht. Nur in den meisten Tabellen nutze ich zudem auch PKs um weiterzuverknüpfen und dadurch besteht eigentlich wieder eine Eindeutigkeit. Naja, versteh einer Oracle... :dunce:
Nochmal vielen dank von mir an alle Helfer. :beer:
Bye
M4X1
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!