Robert W.B. Linn´s Software, Beispielprojekte und Tipps zu TurboDB, TurboDB VCP, TurboDB Studio, Visual Data Publisher
   
TurboDB - Tipps und Hinweise
TurboDB VCL Übersicht  Alle Topics 
Komponenten TurboDB und TMS Component Pack  »  TurboDB - Tipps und Hinweise  »  TurboDB - Tipps und Hinweise  | 

TurboDB: Wo gibt es TurboDB Beispiel-Projekte?
Es gibt von dataWeb ein Open Source Projekt TurboMail (www.kylix-forum.de).
Dieses Projekt läßt sich auch unter Delphi 6 Windows einsetzen.
Getestet mittels TurboDB 4 für VCL.

TurboDB: Kylix TurboDB Components installation führt zu Fehlermeldung "Ungültige Package Datei"?
Wenn Sie Ihre Komponenten über Komponenten/Packages installieren/Hinzufügen installieren, wählen Sie das
Designtime Package dclturbodb*.so.* aus und Kylix versucht dieses Package und das zugehörige Laufzeit
Package bplturbodb*.so.* zu laden. Falls das Laufzeit Package nicht gefunden wird, reagiert Kylix mit dieser
Fehlermeldung. Um gefunden zu werden, muss sich das Laufzeit Package im LD_LIBRARY Pfad befinden.

In der Readme.txt steht, dass das Laufzeit Package nach /usr/lib kopiert werden muss. Das ist auch korrekt,
allerdings müssen Sie als Root angemeldet sein, um das tun zu können. Alternativ können Sie auch Ihr Kylix/bin
Verzeichnis verwenden, da auf dieses Verzeichnis immer ein Pfad gesetzt sein muss, wenn Kylix Anwendungen
ausgeführt werden. Außerdem ist es wichtig einen symbolischen Link auf das Laufzeit Package einzurichten. Wie
das geht wird ausführlich in der Datei Readme.txt beschrieben. Bis Version 3.30 fehlte diese Anweisung
im Kapitel Installation der Online Hilfe bzw. der HTML Dokumentation.
Getestet mittels TurboDB 4 für VCL.

TurboDB: Welches Datenbank Format wird verwendet?
TurboDB verfügt über einen eigenen Batei.basierten Datenbankkernel,
der komplett in Object Pascal geschrieben ist.
Ähnlich wie dBase, Paradox oder Access verfügt TurboDB über ein eigenes Dateiformat.
Der Datenaustausch mit anderen Programmen erfolgt über Import und Export von und zu verscheidenen
Text Formaten, dBase oder XML.
Getestet mittels TurboDB 4 für VCL.

TurboDB: Meldung "Table is locked by another user"?
obwohl nur eine Anwendung die Tabelle benutzt. Was hat das zu bedeuten?
Wahrscheinlich ist Ihre Anwendung einmal abgestürzt oder wurde mit Reset beendet während eine
Tabellensperre eingerichtet war. In diesem Fall ist die Sperre immer noch registriert und Sie müssen die
Lock-Datei der Tabelle von Hand löschen. Stellen Sie sicher, dass keine andere Anwendung im Netzwerk die
Tabelle (zum Beipiel Tabelle.dat) benutzt und löschen Sie, falls existent, die die Dateien
Tabelle.net, Tabelle.mov, Tabelle.rnt und Tabelle.rmv.
Getestet mittels TurboDB 4 für VCL.

TurboDB: Beim Debuggen scheint die Anwendung beim Start manchmal zu hängen.
Ist das ein TurboDB Problem?
Kann sein. Beim Öffnen der Tabellen registriert sich Ihre Anwendung als Benutzer der Tabellen (Gilt nicht für
exklusiven Zugriff). An manchen Stellen in Ihrem Programm, wenn Sie es beispielsweise während dem Debuggen
mit Reset zurücksetzen, bleiben die TurboDB Tabellen gesperrt und können Ihre Anwendung beim erneuten Start
blockieren.
Beenden Sie alle Prozesse, die auf die Tabellen zugreifen (evtl. auch Delphi) und löschen Sie
die xxx.net und xxx.mov Dateien im Verzeichnis der betreffenden TurboDB Tabelle. xxx ist hierbei der Name
der TurboDB Tabelle.
Getestet mittels TurboDB 4 für VCL.

TurboDB: Was tun bei weitere Fragen und Kommentare?
Besuchen Sie das Diskussionsforum für TurboDB Components.
Oder schicken Sie eine Mail an: support@turbodb.de.
Getestet mittels TurboDB 4 für VCL.

TurboDB: unter WinCE zu verwenden?
dataWeb wird in Zukunft die PocketPC-Plattform unterstützen, indem die TurboDB.NET Komponenten
für das .NET Compact Framework angeboten werden.
Damit kann dann mit einem beliebigen .NET-Entwicklungstool (z.B. Visual Basic.NET) auf TurboDB-Tabellen zugegriffen werden.
Wann wir mit der Entwicklung fertig sind, kann ich Ihnen definitiv noch nicht sagen.
Geplant ist die Fertigstellung im Laufe des kommenden Jahres.
Information von Peter Biereder, dataWeb (November 2003)
Getestet mittels TurboDB 4 für VCL.

TurboDB: Compiler-Directive {$DEFINE GERMAN} in den Quelltext verwenden?
(für deutschsprachige Fehlermeldungen)
1. Die Compiler Direktive an dcc32 übergeben:
 dcc32 Project1.dpr -uProgramme\dataWeb\TurboDB418\Windows\Delphi7 -$GERMAN -B.
2. Die Definition direkt im Interface von TdbMessages.pas unterbringen.
Getestet mittels TurboDB 4 für VCL.

TurboDB: Wie können Tabellen auch von CD (READONLY) ansprechen?
1/ Die Tabellen dürfen nur im Lesezugriff geöffnet werden:
 TdbTable.ReadOnly := True;
2/Es muss verhindert werden, dass TurboDB die für die Mehrbenutzer
Verwaltung benötigten Dateien (*.net, *.mov) einrichtet.
Öffnen Sie die Tabellen dazu exklusiv:
 TdbTable.Exclusive := True;
 TdbTable.Open;
Getestet mittels TurboDB 4 für VCL.

Hinweis
Queries die alle auf die selbe TTdbDatabase zugreifen. Die
Database ist auf Readonly und Exclusive gesetzt. Somit also auch alle
Querys. Alle .Net und .Mov Dateien habe ich gelöscht.
Das Programm funktioniert.
Werden die Schreibrechte auf der Festplatte entfernt, so sind sie nach dem
Ausführen des Programms wieder da.
Brenne ich die DB und das Programm auf CD, bekomme ich beim Start folgenden
Fehler:
Preparing SQL statement: Cannot open Table. Error in login.
Ersetze ich den Query durch eine Table und benutze die gleich Datenbank,
dann funktioniert es ohne Probleme.

TurboDB: Wie können die Fehlermeldungen angepasst werden?
Die Datei (Unit) TdbMessages.pas enthält die Fehlermeldungen.
Es steht auch in der Hilfe unter Kapitel "TurboDB Fehlermeldungen anpassen".
Getestet mittels TurboDB 4 für VCL.

TurboDB Batchmove: Was beudeutet die Meldung Datei nach DBase "message..."?
Bei der Verwendung von Batchmove TurboDB Datei nach DBase erscheint folgende Meldung:
"message exporting from table DBTable into file xyz.dbf: export failed.
dbase III files unable to hold this data structure."
Was ist die Ursache?
Die TurboDB Tabelle enthält ein Feld welches von DBase nicht unterstützt wird. In diesem Falle
was es eine DateTime Feld.
Wenn DateTime in Date umgewandelt wird, funktioniert der Batchmove.
Getestet mittels TurboDB 4 für VCL.

TurboDB Batchmove: Exception wenn Quell- und Zieltabelle gleichen Namen haben?
Das kann nur passieren, wenn keine oder nur für beide Tabellen dieselbe Datenbank-Komponente
verwendet werden. In diesen Fällen sind beide Tabellen einer einzigen Datenbank-Komponente
zugeordnet.
Innerhalb einer Datenbank dürfen aber keine gleichnamigen Tabelle sein, auch wenn Sie sich in
unterschiedlichen Verzeichnissen befinden.
Daher als Lösung die Zieltabelle einen anderen Namen geben
Getestet mittels TurboDB 4 für VCL.

TurboSQL: Bei Create Table die AutoInc Expression angeben?
Bsp: Feld: MyName Char(20) und Feld: MyTown Char(20)
CREATE TABLE MyTable (
  MyName CHAR(20),
  MyTown CHAR(20),
  RecordId AUTOINC("MyName:10,MyTown:10")
)
Getestet mittels TurboDB 4 für VCL.

TurboSQL: Wie können berechnete Felder definiert werden?
Wenn nicht dann ist die Expression Möglichkeit bei TurboSQL unwirksam.
Das gibt es in SQL 92 nicht, dataWeb versucht erstmal den Local SQL Standard
zu schaffen, Erweiterungen kommen dann später.
Getestet mittels TurboDB 4 für VCL.

TurboSQL: Wie kann die Option UNIQUE verwendet werden?
Mit dem Schlüsselwort UNIQUE.
Beispiel:
CREATE UNIQUE INDEX MyIndex ON MyTable (MyName)
Getestet mittels TurboDB 4 für VCL.

TurboSQL: Wie können doppelte Einträge zu vermieden werden?
Mit dem Schlüsselwort UNIQUE.
Beispiel:
CREATE UNIQUE INDEX MyIndex ON MyTable (MyName)
Getestet mittels TurboDB 4 für VCL.

TurboSQL: Was gibt noch für SQL Nachschlagewerke?
TurboDB versucht alle Funktionalitäten von Local SQL von Borland nachzubilden.
Getestet mittels TurboDB 4 für VCL.

TurboSQL: Thematik Filtern einer Datenmenge?
1. Wie muss der Filterausdruck lauten, wenn auf ein leeres Datumsfeld einen Filter setzen möchte?
Beispiel:
 Table1.Filter := 'Datumsfeld = 0' oder
 Table1.Filter := 'Datumsfeld = ''' funktionieren nicht.
Antwort:
 Filter = 'not DateField'
Getestet mittels TurboDB 4 für VCL.

2. Wie muss der Filterausdruck lauten, wenn auf ein leeres Blobfeld einen Filter setzen möchte?
Antwort:
Filter = 'not BlobField'
Getestet mittels TurboDB 4 für VCL.

TurboSQL: SQL Ausführung dauert sehr lange?
Das Parsen einer langen Query dauert sehr lange. Zur optimierung können Parameter eingesetzt werden.
Beispiel: als TdbQuery.SQL.Text :
 INSERT INTO MyTable (Feld1, MemoFeld1) VALUES("XXX", :MeinMemo)

Zur Laufzeit kann dann der Memoinhalt leicht übergeben werden mit
TdbQuery.ParamByName('MeinMemo').Value := 'hier kommt mein 50KB Inhalt ...';

Mit diesem Weg muss nicht das Statement jedesmal neu geparst werden, da bereits klar ist,
was als Daten eingetragen werden soll. Das Schreiben kann nun direkt erfolgen.
Getestet mittels TurboDB 4 für VCL.

TurboSQL: Create Table xxx () liefert keine Fehlermeldung.
Die Datei xxx.dat wird erstellt, kann aber nicht geöffnet werden.
Dieser Befehl macht aber keinen Sinn. Es ist nur als Hinweis zu sehen.
Getestet mittels TurboDB 4 für VCL.

TurboSQL: Create Table command erzeugt keine automatischen indices *.inr und *.id?
und auch kein autoinc Feld falls nicht vorhanden.
Dieser Hinweis ist für die VDP Programmierer, da bei VDP automatisch ein inr- und id-Index erstellt wird.
Getestet mittels TurboDB 4 für VCL.

TurboSQL: Fehlermeldung "Turbo-SQL end of statement expected bei AUTOINC NOT"
bei folgendem Befehl:
ALTER TABLE bs MODIFY Laufende_Nummer AUTOINC NOT NULL
Ursache:
AutoInc Felder können nicht null sein, daher gibt es NOT NULL nicht. Dafür kann UNIQUE definert
werden.
Getestet mittels TurboDB 4 für VCL.

TurboBDViewer: Können, wie unter der BDE, Alias - Namen anlegen?
Die TurboDB arbeitet direkt mit den Dateipfaden. Am einfachsten setzt man das Verzeichnis
zu einer Datenbank beim Progammstart in FormCreate.
Um das ganze flexibel zu gestalten, kann der Pfad aus einer Ini-Datei oder der Registry gelesen werden.
Getestet mittels TurboDB 4 für VCL.

TurboDBViewer: Wie können zwei Tabellen verknüpft werden?
Beispiel anhand Autor & Buch 1:n
Zuerst wird die Autoren Tabelle angelegt, beispielsweise mit den Feldern
Name(dtString), Vorname(dtString) und RecordId(dtAutoInc).
Als Anzeigeinformation der RecordId Spalte wird hier Name,Vorname angegeben.
Dann wird die Buch-Tabelle mit den Spalten Titel(stString), Autor(dtLink)
und RecordId(dtAutoInc) erzeugt.
Die Spalte Autor sorgt hier für die 1:n Verknüpfung, geben Sie unter Linked
Table den Namen der Master-Tabelle ein. In diesem Beispiel ist das die
Autoren-Tabelle.
Das war's auch schon, nun können Sie zuerst ein paar Autoren eintippen, dann
die Bücher, wobei Sie in der Autoren-Spalte nur Autoren eingeben können, die
bereits in der Autoren-Tabelle erfasst wurden.
Komfortabler läßt sich die Eingabe natürlich in einem Delphi-Formular
gestalten.
Getestet mittels TurboDB 4 für VCL.

TurboDBViewer: Warum kann der Viewer nicht auf meinem Linux System gestartet werden?
TurboDB Viewer für Linux benötigt einige Shared Objects der Firma Borland, die sich im Kylix/bin Verzeichnis
befinden. Sie müsssen dieses Verzeichnis (z.B. /usr/kylix/bin) entweder in LD_LIBRARY_PATH aufnehmen oder
Links auf die Libraries in einem der Library Verzeichnisse (z.B. /bin) anlegen. Diese Vorgehensweise ist für alle
mit Kylix erstellten Applikationen nötig, nicht nur für TurboDB Viewer.
Getestet mittels TurboDB 4 für VCL.


Letzte Änderung 17.03.2012 (c) 1999-2012 Robert W.B. Linn, Pinneberg, Germany @53° 38' 60''N 9° 48' 0''E