Hi,
@Hansa
Zitat von
Hansa:
Einer der besten
IB/
FB - Spezialisten (Alex517) was benutzt der ? FIBPlus.
Da kommt man nichts ahnend aus dem Urlaub und wird auch noch so gebauchpinselt!
Als beste Spezialisten würde ich Holger Klemt(IBExpert) oder Thomas Steinmaurer nennen.
Bis zu denen fehlt mir noch eine ganze Menge. Aber trotzdem vielen Dank.
@Hagen
Zitat von
negaH:
Alex benutzt FIBPlus und Firebird und er hat mich vollständig überzeugt.
zZ. muß ich mich mit MS-SQL7 rumschlagen kein Vergleich zu FIBPuls+IBExpert+Firebird.
Und wer mich kennt weiß wie schwer es ist mich so zu überzeugen.
Hagen, die 3 Wochen in Eisenach habe ich noch in lebhafter Erinnerung!
Und "Schwer" ist in diesem Zusammenhang durchaus diplomatisch ausgedrückt.
Wir müssen mal wieder telefonieren.
Jetzt zur Fragestellung:
Gleich vorweg, CrLab habe ich nie getestet.
Ich habe vorher mit IBO gearbeitet und kann mich da nur der Meinung von RavenIV anschließen.
In Zeos, bitte mich zu korrigieren, ist nur eine Transaction pro Connection möglich.
Damit kann man die Vorteile, die die Verwendung des Transactionmanagement bietet, nur eingeschränkt nutzen.
FibPlus hingegen unterstützt die Arbeit mit Transaction.
Z.B kann das FibDataSet zum Lesen und Schreiben unterschiedliche Transactionen verwenden.
Vorteil:
- schreibende Transactionen auf die Dauer des Scheibens begrenzt
- Änderungen können Hard-Committet werden(schönes Denglish), während das Dataset weiter offen bleibt
- lesende Transactionen laufen mit accessmode Readonly , damit wird die Last auf dem Server verringert.
Siehe Access modes
Eine weiter nützliche Sache ist die Unterstützung von Macros.
Damit kann man sehr flexibel UND bequem Abfragen "von Hand" zusammenbauen.
z.B.
SQL-Code:
select ID, NachName, Vorname, Typ
from Person
@@Filter@
@@Order@
Delphi-Quellcode:
case AFiterArt of
1: begin
dtsPerson.ParamByName('Filter').AsString := 'where NachName like :NachName';
dtsPerson.ParamByName('NachName').AsString := ANachName+'%';
end;
2: begin
dtsPerson.ParamByName('Filter').AsString := 'where Typ = :Typ';
dtsPerson.ParamByName('Typ').AsInteger := ATyp;
end;
3: begin
dtsPerson.ParamByName('Filter').AsString := 'where Typ in (:Typen)';
dtsPerson.ParamByName('Typen').AsString := ATypenListe;
end;
else
dtsPerson.ParamByName('Filter').Clear; // Nicht vergessen!!
end;
if AOrder <> '' then dtsPerson.ParamByName('order').AsString := AOrder
else dtsPerson.ParamByName('order').Clear; // Nicht vergessen!!
Verwendet man die SQLMonitor von FibPlus, so werden die gesetzten Parameter ebenfalls protokolliert,
was bei der Fehlersuche sehr von Vorteil ist.
Nicht zu vergessen ist auch die Möglichkeit der lokalen Sortierung im FibDataSet nach
ein oder mehreren Feldern, ohne dass die Datenmenge nochmal vom Server mit einem geänderten "Order by.." geholt werden muss.
Noch was zu der häufig erwähnten Möglichkeit, mit den gleichen Komponenten
verschiedene Datenbanken ansprechen zu können (z.B. Zeos):
Bisher kenne ich keinen Kunden (erst Einzelhandel, jetzt Pflegedienste),
der mir vorgeschrieben hätte, welche Werkzeuge (Compiler/DBs)
ich zur Erreichung der Funktionalität der Software verwenden soll.
Wichtig ist nur das Ergebnis.
Damit entscheide ich als Entwickler was sinnvoll ist und was nicht.
Mir sind Komponenten die genau auf die Datenbank zugeschnitten und alle Funktionalitäten der
DB unterstützen wichtiger, als die welche die nur den kleinsten gemeinsamen Nenner verschiedene
DB bieten.
Also, wenn jemand Komponenten für den Zugriff auf
IB/
FB sucht
kann ich FibPlus nur empfehlen:
-schnell
-stabil
-komfortabel
-immer auf dem neuesten Stand der Entwicklung
-guter Support
-entsprechen dem Borland/CodeGear-Standard
-gut dokumentiert
-sind ihren Preis wert
alex