| | TurboDB Studio | >TurboDB VCL < | roPTools | VDP | KALHelp | Downloads | Links | Suche | Kontakt | Impressum | |
|
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.
|