L
Es geht doch erst einmal darum, dass Du verstehst wie das alles
zusammenhängt. Dann kannst Du doch erst entscheiden welche Komponente für Deine Zwecke wirklich geeignet ist und Du wegen 145$(SQLDirect) oder 100$(IBDAC) viel Zeit in eine kostenlose Komponente(ZEOS) steckts, vor allem bei dem aktuellen Dollarkurs. Wenn das Programm für interne Zwecke ist, wirst Du feststellen, das der eine Klick beim Start des Programms nun wirklich überhaupt nicht stört. Gruß Alfred |
Re: Firebird in Netzwerk
N´abend
Ja Zeos braucht wirklich mehr Einarbeitungszeit. Em leichtesten ist wohl der Einstieg mit FIB, aber da ist Hansa wohl der man fürs Marketing. Im nachfolgenden Beispiel ist so ein Mittelweg mit der UIB-Komponente genommen worden. Man muß sich aber zudem mit der Generator / Trigger Logik für neue datensätze einarbeiten. Das braucht seine Zeit. SQLite ist sicher leichter aber eben Kostenprlichtig. Zugriff auf Firebird Server Grüße in die Runde Martin |
Re: Firebird in Netzwerk
SQLite ist nicht kostenpflichtig!
|
Re: Firebird in Netzwerk
Also ich greife mit IB Komponenten auch auf Firebird zu und bei Funkt alles Perfekt (Edit,Insert,Delete, usw)
Ich mache es folgendermassen: Für jede Tabelle : TIBTable,TIBTransaction,TIDStoredProc (bei abfragen noch TIBQuery) Die Datenbank hab ich mit dem EMS SGL Manager erstellt Da ich zufaul bin hab ich mir zum Hinzufügen,Editieren eigene Procedure geschrieben:
Delphi-Quellcode:
So.....so habe ich es hinbekommen, bei mir Funkts.
//Neu
procedure Neu_Datensatz(Table : TIBTable); begin Table.Edit; Table.Append; Table.Edit; end; //Speichern procedure Speichern_Datensatz(Table : TIBTable; Trans : TIBTransaction); var Rec : Integer; begin Rec := Table.RecNo; //Datensatz merken Table.Edit; Table.Post; IBDatabase1.ApplyUpdates([Table]); Trans.Commit; Trans.StartTransaction; Table.Open; //Datensatzpos wird zurückgesetzt Table.RecNo := Rec; //Wieder Datensatz auswählen end; //Löschen procedure Loschen_Datensatz(Table : TIBTable; Trans : TIBTransaction); begin Table.Edit; Table.delete; Datenbank.IBDatabase1.ApplyUpdates([Table]); Trans.Commit; Trans.StartTransaction; Table.Open; end; //Habe in der Firebird-Datenbank eine Stored Procedure drinnen, die im EMS SQL Manager für jede ID erstellt wird, so aktiviere ich sie //ID Setzen //Bei TIDTable bei BeforPost rein procedure Set_ID(Table : TIBTable; Getter : TIBStoredProc); begin if (Table.State = dsInsert) then begin Getter.ExecProc; Table.FindField('ID').AsInteger := Getter.ParamByName('ID').AsInteger; end; end; Hab auch Serverversion und übers Netzwerk gehts auch. :mrgreen: Gruß NickelM |
Re: Firebird in Netzwerk
Aber wie schon öfters erwähnt sollte man Table-Komponenten für ein richtiges DBMS nicht verwenden.
|
Re: Firebird in Netzwerk
Warum nicht? :gruebel: :gruebel: :gruebel:
Bei mir funkts doch auch oder hat das mit irgendwas anderem zutun? |
Re: Firebird in Netzwerk
Hallo,
IBTable.Open macht ein Select * auf die Tabelle, holt sich über mehrere Abfragen noch alle Infos zur Tabelle (Felder, Indizes, Constraints). Und das alles, obwohl du viell. nur ein INsert(Append) machen willst. Ab einer bestimmten Datenmenge dauert das alles dann "etwas". Falls es einen TIB_SQLMonitor gibt, kann man das schön ansehen. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz