![]() |
Datenbank: Interbase • Version: 7.1 • Zugriff über: IB-Express, ADO
Umstellung IB-Express auf ADO (dbGo)
Hallo zusammen.
Ich bin diesem Forum neu, also erstmal einen heißen (30°C) "Guten Morgen Gruß" aus dem schönen "Rheinhessischen Hügelland" :hi:. Meine Arbeitsumgebung: - Windows XP Prof. SP2 - Borland Developer Studio (Delphi) (Update 2) - Interbase 7.1 Und nun zu meinem Problem. Ich greife auf Tabellen mit SQL-Befehlen zu, indem ich eine Datenbankverbindung mit TIBDatabase herstelle, damit eine Instanz von TIBDataSet verbinde und mit dem TIBDataSet eine Transaktion TIBTransaction verbinde. Dann werden die SLQ-Anweisungen für SELECT, UPDATE und INSERT gesetzt, wie z.B.:
Code:
Dann kann ich die Datenmenge öffnen, Daten ändern und speichern.
IbDataSet.SelectSQL.Text := 'SELECT * FROM ksc_user';
IbDataSet.RefreshSQL.Text := 'SELECT * FROM ksc_user WHERE id_user=:id_user'; IbDataSet.InsertSQL.Text := 'INSERT INTO ksc_user (id_user, username, pwd, fullname, rights) VALUES(:id_user, :username, :pwd, :fullname, :rights)'; IbDataSet.ModifySQL.Text := 'UPDATE ksc_user SET username=:username, pwd=:pwd, fullname=:fullname, rights=:rights WHERE id_user=:old_id_user'; IbDataSet.DeleteSQL.Text := 'DELETE FROM ksc_user WHERE id_user=:old_id_user';
Code:
Wenn ich an die TIBDataSet noch eine TDataSource hänge und daran ein TDBGrid, dann kann ich in dem Grid
IbDataSet.Open;
IbDataSet.Edit; IbDataSet.FieldValues['username'] := 'Hans'; IbDataSet.Post; IbDataSet.CommitRetaining; alle Änderungen ausführen wie Einfügen, Ändern und Löschen von Einträgen. Nun möchte ich das Ganze auf die ADO Komponenten (dbGo) umstellen. Hier kann ich nun die SELECT Abfrage einfügen (CommandText), aber sonst nichts. Wie kann ich nun Änderungen speichern ? Irgendwo muss ich ja auch die DELETE und INSERT Anweisungen angeben können. Ich hab da keine Idee wie das Gehen kann. Über Umwege (mit separaten TADOCommand) kriege ich das schon hin, aber nicht so elegant wie mit den IB-Express Komponenten. Kennt jemand von euch eine Lösung ? Vielen Dank und viele Grüße Matthias |
Re: Umstellung IB-Express auf ADO (dbGo)
Und wieso willst Du auf ADO umstellen? Für Interbase sind noch native Komponenten besser als über ADO und evtl. noch ODBC zu gehen.
|
Re: Umstellung IB-Express auf ADO (dbGo)
TADODataset.CommandText nimmt weit mehr auf als nur SELECT-Befehle, und außerdem gibt es ja auch noch zB TADOQuery mit der gewohnten SQL-property und den Befehlen Open (wenn eine Datenmenge erwartet wird) bzw ExecSQL (wenn keine erwartet wird, wie zB bei Datenmanipulationsbefehlen wie INSERT, UPDATE etc), eine Unterscheidung in verschiedene SQL-properties gibt es allerdings nicht. Es gibt TADOStoredProc für Stored Procedures, Transaktionen verwaltet die TADOConnection selbst. Kurzer Rede noch kürzerer Sinn: du kannst alles machen, was du bislang auch machen konntest... der Vorteil ist die Möglichkeit der leichteren Migration auf andere DBMS, wofür man allerdings auf server-spezifische Features verzichten sollte. Und da liegen eben auch gleich wieder die Nachteile...
peinhard |
Re: Umstellung IB-Express auf ADO (dbGo)
Zitat:
|
Re: Umstellung IB-Express auf ADO (dbGo)
Vielen Dank für eure schnellen Antworten.
Hallo Bernhard. Weil ich dann über die "OLE DB Provider" auf Datenbanken wie MS-SQL-Server und Oracel zugreifen kann. Über den "OLE DB ODBC" Provider komme ich dann auch wieder auf Interbase. Hallo Peinhard. Wie man mit den ADO Komponenten auch INSERT und UPDATE Befehle absetzen kann weiss ich. Wenn du dir aber die Beispiele von mir ansiehst wirst du sehen, dass man mit einem TIBDataset alles gleichzeitig machen kann. Deshalb kann man in einem angekoppelten DBGrid auch alle Aktionen ausführen. Genau darum gehts, wie kann ich ein DBGrid an die ADO Komponenten koppeln und im Grid Einfügen, Ändern und Löschen. Viele Grüße Matthias |
Re: Umstellung IB-Express auf ADO (dbGo)
Zitat:
Diese spezielle Konstruktion der IB-Komponenten war mir allerdings wirklich nicht bekannt - und ich find' sie schon charmant... peinhard |
Re: Umstellung IB-Express auf ADO (dbGo)
Zitat:
Unsere Oracle-Eigenheiten-Implementierung ist auf ca. 1600 Quellcodezeilen komprimiert bei einer Exe mit 1. Mio-Quellcodezeilen. Und nochwas: Ich hoffe du willst bei Oracle nicht den MS ADO-Provider nehmen? Dann kannst Du dir gleich in den Kopf schießen da dies eine Machbarkeitsstudie von MS ist das man mit ADO auch mit Oracle arbeiten kannst. Du wirst auf jedenfall einen Provider von Oracle installieren müssen. |
Re: Umstellung IB-Express auf ADO (dbGo)
Zitat:
Für den 'Rest' reicht - toitoitoi - bislang bedingte Compilierung mit verschiedenen Statements in einer Konstanten-Datei. Leider ist SQL eben längst nicht (mehr) 'Der Standard' - Mr Date sendet grimmige Grüße. Wäre vielleicht nicht schlecht, wenn es wirklich ein Gremium gäbe, daß die 'Macht' hätte, DBMS zu 'zertifizieren' und Lizenzen für SQL zu vergeben - oder eben auch nicht. peinhard |
Re: Umstellung IB-Express auf ADO (dbGo)
Hallo Peinhard.
Sorry, aber das funktioniert nicht. Woher soll die Komponente/Treiber wissen wie er die UPDATE, INSERT oder DELETE Anweisungen generieren soll, wenn er nur die SELECT Anweisung kennt. Bei folgender Tabellenstruktur kann ich mir das noch vorstellen, da es einen Primärschlüssel gibt.
SQL-Code:
CREATE TABLE "KSC_USER"
( "ID_USER" INTEGER NOT NULL, "USERNAME" VARCHAR(32) NOT NULL, "PWD" VARCHAR(32) NOT NULL, "FULLNAME" VARCHAR(64) NOT NULL, "RIGHTS" INTEGER DEFAULT 0, PRIMARY KEY ("ID_USER") );
SQL-Code:
Allerdings gibt es keine Information, wie bei einem INSERT der Primärschlüssel
SELECT * from KSC_USER
ID_USER erzeugt werden soll. Ich versuche im Moment auf diese Tabelle zuzugreifen. Über ADO und ODBC auf Interbase und bekomme dabei einen Fehler beim Schreiben der Änderungen mit UpdateBatch(). Das ist das Problem, dass ich im Moment lösen muss. Um das Problem mit den herstellerspezifischen Unterschieden muss ich mich später kümmern. Im Augenblick lautet meine Aufgabenstellung: "Umstieg von Interbase auf MS-SQL-Server 2005". Da ich meine Vorturner aber kenne, wird es irgendwann heissen: "..wir hatten doch schon mal mit Interbase.." oder "..wir haben da einen, der hat schon ein Oracle Cluster..". Also versuche ich über die ADO Komponenten die entsprechenden Weichen zu stellen. Gruß Matthias |
Re: Umstellung IB-Express auf ADO (dbGo)
Zitat:
Zitat:
Zitat:
Zitat:
peinhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:05 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 by Thomas Breitkreuz