Hallo,
ich habe TurboBird Version 1.2.1.1263 (IBX) hochgeladen.
Da ich derzeit Probleme mit meinem GitHub-Account habe, habe ich die Release-Binaries vorübergehend auf meiner Homepage bereitgestellt.
Die Quellcodes und Changelogs können wie gewohnt direkt von GitHub heruntergeladen werden:
https://github.com/mdadali/TurboBird
Linux Release (x86_64, GTK2):
https://www.hackcad.com/maindownloads/T ... 1.1263.zip
Windows Release (x86_64):
https://www.hackcad.com/maindownloads/T ... 63.exe.zip
Zuerst die Einschränkungen, damit man nicht den ganzen Beitrag lesen muss,
falls diese Version für jemanden nicht brauchbar ist:
--Version 1.2.1.1263 ist nicht abwärtskompatibel.
Das bedeutet, dass die Server und Datenbanken neu registriert werden müssen.
--Rechtlich gesehen ist die bisherige MIT-Lizenz von TurboBird vermutlich nicht mehr gültig, da ich GPL-Code von Tony Whyman (MWA Software) – mit seiner sehr
freundlichen Genehmigung – in TurboBird integriert habe.
--Embedded Connections werden in dieser Version (1.2.1.1263) nicht unterstützt.
(Möglicherweise ändere ich das in zukünftigen Versionen.)
--Server-Aliase werden weiterhin nicht unterstützt.
--Nicht alle Knoten im TreeView sind bereits implementiert.
Diese werde ich sicher noch implementieren – es ist hauptsächlich viel Schreibarbeit,
nichts technisch Komplexes.
--Transaktionskonfiguration und Monitoring sind noch nicht implementiert.
--Ich konnte die Anwendung unter MS Windows leider nicht ausreichend testen,
da ich keinen echten Windows-Rechner habe.
Ich habe zwar Windows 7 (ohne Updates) + Firebird 3.0 in einer VM installiert,
jedoch werden dort z. B. UDRs nicht geladen.
Neuere Windows-Versionen kann ich auf meinem Rechner aktuell nicht installieren
(Ressourcen reichen nicht aus). Eventuell lege ich mir dafür einen zweiten Rechner zu.
Was ist neu / erledigt
--Die Anwendung wurde komplett von SQLDB (Lazarus/FPC DB-Bibliothek) auf IBX umgestellt.
--Mehrere Firebird-Serverversionen
Innerhalb einer TurboBird-Instanz können jetzt Firebird-Server der Versionen
2.5, 3.x, 4.x, 5.x und 6.0 konfiguriert werden.
(Bitte dazu auch den Hinweis zu Mehrserver-Instanzen weiter unten lesen.)
--Case-sensitive Objektnamen werden jetzt unterstützt
(Anregung von bfuerchau, danke).
Die Anwendung erkennt nun case-sensitive Objektnamen korrekt.
Tabellen- und Feldnamen werden im QueryWindow über ein Kontextmenü angeboten.
Im QueryWindow-Codeeditor öffnet Ctrl+Space ein Kontextmenü.
Tabellennamen erscheinen als Hauptmenüeinträge, die zugehörigen Felder als Untermenüs.
Dies funktioniert unabhängig davon, ob Objektnamen case-sensitiv sind oder nicht.
Mit Enter oder Mausklick werden die Namen in den QueryEditor eingefügt.
Case-sensitive Namen werden dabei automatisch in doppelte Anführungszeichen gesetzt.
(Alias-, Punkt- usw. Erkennung ist noch nicht implementiert – derzeit eher ein
„UnIntelliSense“

.)
--Skripte mit und ohne Terminatoren (Anregung von Volker)
Durch die IBX-Umstellung hat sich dieses Thema praktisch von selbst erledigt.
Auszug aus der IBX-Dokumentation:
“Procedure Bodies (BEGIN .. END blocks) are self-delimiting
and do not need an extra terminator. If a terminator is present,
this is treated as an empty statement. The result is ISQL compatible,
but does not require the use of SET TERM.”
Beim Zurücklesen von Datenbankobjekten in das QueryWindow füge ich jedoch weiterhin
Terminatoren hinzu, um die Kompatibilität mit anderen Tools zu wahren.
Falls das stört:
Erste und letzte Zeile des Skripts löschen
Terminator-Zeichen in der vorletzten Zeile entfernen
In einer der nächsten Versionen wird das optional konfigurierbar sein.
--Login-Verfahren wurde geändert, genau wie von Volker beschrieben.
--Tonys (Tony Whyman, MWA Software) IBX-Scripter wurde in die Anwendung integriert.
--Backup/Restore wurde durch Tonys Code ersetzt.
Dieser bietet mehr Optionen, u. a. die Auswahl zwischen server- und clientseitigen
Backups und Restores.
--TreeView überarbeitet (siehe Screenshots):
Umstellung auf Lazy-Load
Knoten werden erst beim ersten Öffnen aus der DB geladen
Danach erfolgt kein weiterer DB-Zugriff
Das Verhalten ist über die INI-Datei steuerbar:
[MainTreeView]
AlwaysRefresh=1 // 1 = Knoteninhalt wird jedes Mal neu aus der DB geladen
--Das TreeView ist jetzt besser strukturiert und bietet mehr Informationen.
--Im QueryWindow können Code- oder Ergebnisansicht optional maximiert werden
(Hinweis von Volker, mehr Platz im Codefenster).
Links neben dem TreeView wurde ein Button eingefügt, um das TreeView ein- und
auszublenden – praktisch, um mehr Platz für das Codefenster zu schaffen.
Navigator im QueryWindow kann per INI-Datei ein- oder ausgeblendet werden
(Anregung von Volker):
[QueryWindow]
ShowNavigator=0
--Export nach Clipboard verbessert (Anregung von Volker):
Rechtsklick auf DataGrid → Export to → Clipboard
Hinweise zum Clipboard-Export siehe weiter unten.
--Serverregistrierung ist jetzt Pflicht
Servernamen werden nicht mehr aus dem Connection-String abgeleitet.
Die Servernamen müssen entweder in der hosts-Datei stehen oder per DNS auflösbar sein.
In der hosts-Datei können (bei entsprechenden Rechten) mehrere Aliase pro Server
definiert werden – so lässt sich die aktuelle Alias-Einschränkung von TurboBird
eventuell umgehen, bis eine echte Alias-Unterstützung implementiert ist.
--Sortierung durch Klick auf Feldnamen (Anregung von Volker):
Dafür wird jetzt RXDBGrid verwendet.
Mehrspaltige Sortierung muss noch selbst implementiert werden
(RXDBGrid kann IBX-Datasets nicht automatisch sortieren).
Die Komponente ist trotzdem bereits aktiv, da sie viele weitere Features bietet,
z. B. komfortable Suche in Daten und mehrere Exportformate.
Mit RXDBGrid sind außerdem zwei neue Exportformate (PDF, Spreadsheet) sowie
Druckausgabe hinzugekommen.
--Im SQLHistory-Fenster wurde das Feld Description hinzugefügt
(Anregung von Gerd – sorry, dass es so lange gedauert hat).
--Fast alle Menüeinträge haben jetzt Icons (Anregung von Volker).
--Eigene Komponente SQLDbExt wurde aus dem Projekt entfernt
(durch IBX nicht mehr notwendig).
Hinweis zu Mehrserver-Instanzen
Das Laden und Entladen von Client-Libraries übernimmt jetzt vollständig IBX.
Im TurboBird-Code kommen LoadLibrary, UnloadLibrary usw. nicht mehr vor.
Trotzdem bin ich über das bekannte Problem mit ODS-Versionskonflikten gestolpert,
das hier im Forum (zwischen Martin und bfuerchau) diskutiert wurde.
Workaround:
Beim Programmstart wird eine initiale Client-Library (höchste Version) geladen.
Ich lade derzeit die Client-Library von Firebird 6, und habe bisher keine Konflikte beobachtet.
Außerdem ist auf folgende Zeile in der firebird.conf zu achten:
Providers = Remote,Engine13,Engine12,Loopback
Die Reihenfolge ist wichtig – höchste Version zuerst.
Wichtig:
Wenn Firebird-4- und Firebird-5-Server innerhalb einer TurboBird-Instanz konfiguriert werden:
Für Firebird 4 sollte ebenfalls die Client-Library von Firebird 5 verwendet werden,
da FB4 und FB5 unterschiedliche ICU-Versionen nutzen.
Alternativ kann man auf Firebird 4 verzichten und die FB4-Datenbanken
unter einem Firebird-5-Server registrieren.
Hinweis zum Clipboard-Export
In der INI-Datei kann ein Limit für die Anzahl der zu exportierenden Zeilen gesetzt werden,
um zu verhindern, dass versehentlich sehr große Tabellen in die Zwischenablage kopiert werden.
Standardwert im Quellcode: 200 Zeilen (hart codiert).
[ClipboardExport]
MaxExportRows=0 // 0 = kein Limit (riskant!)
Wenn kein gültiger INI-Eintrag gefunden wird, werden maximal die ersten 200 Zeilen exportiert.
Ich wünsche allen angenehme Weihnachten
Grüße
Maurog.