Delphi-PRAXiS
Seite 6 von 6   « Erste     456   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird in Netzwerk (https://www.delphipraxis.net/138837-firebird-netzwerk.html)

Alfredo 20. Aug 2009 18:34

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

mschaefer 20. Aug 2009 19:54

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

mkinzler 20. Aug 2009 19:57

Re: Firebird in Netzwerk
 
SQLite ist nicht kostenpflichtig!

NickelM 21. Aug 2009 01:09

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:
//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;
So.....so habe ich es hinbekommen, bei mir Funkts.
Hab auch Serverversion und übers Netzwerk gehts auch. :mrgreen:

Gruß NickelM

mkinzler 21. Aug 2009 05:32

Re: Firebird in Netzwerk
 
Aber wie schon öfters erwähnt sollte man Table-Komponenten für ein richtiges DBMS nicht verwenden.

NickelM 21. Aug 2009 09:02

Re: Firebird in Netzwerk
 
Warum nicht? :gruebel: :gruebel: :gruebel:
Bei mir funkts doch auch oder hat das mit irgendwas anderem zutun?

hoika 21. Aug 2009 09:17

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 22:40 Uhr.
Seite 6 von 6   « Erste     456   

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