Ich arbeite mit dem Borland C++ Builder 6 (entspricht Delphi 6) und greife mittels ADO auf eine MS Access Datenbank zu. SQL und andere Datenbanken sind mir vertraut, Hintergrundwissen ist ebenfalls vorhanden. Aktuell ist mir allerdings nicht so richtig klar, wie die ADO Komponente ADOQuery zu sehen ist:
Ich habe eine Tabelle, die Datensätze mit einer Spalte Datum enthält. Das Datum ist jeweils über das ganze Jahr verstreut. Ziel ist es, eine Master-Details Beziehung in einem Formular darzustellen. Mastertable ist ein Konto, die genannten Datensätze sind Posten. Bei Verwendung eines ADOTable für die Details (Master=Konto) ist das Formular praktisch fertig. Allerdings möchte ich nun auch die Posten für einen einzelnen Monat filtern, der ADOTable verweigert dieses, wenn er eine Master-Tabelle hat.
Nun habe ich die Posten durch eine ADOQuery ersetzt. Master-Details geht hier nicht mehr automatisch, mittels Parametern in der Query lässt sich das aber leicht implementieren.
Die ADOQuery implementiert auch die Methode Insert() (lt. HdtBuch). Was passiert nun, wenn ich beispielsweise den Monat Januar selektiere, einen neuen Datensatz einfüge und dieser Datensatz im Februar liegt?
Kann mir jemand erklären, wie eine ADO Query intern funktioniert? Bei anderen Datenbank-APIs (Oracle OCI,ODBC) ist das Ergebnis einer Abfrage (SELECT) read-only, Einfügen kann man nür über SQL-INSERT. Wie muss ich die ADOQuery verstehen?
In ADOTable sehe ich einen direkten Adapter auf eine konkrete Tabelle, da man hier (sql-unüblich) Inizes auswählen kann.
Vielen Dank für Eure Hilfe,
Markus