dBase Tabellen in base einbringen und verknüpfen

Hallo Community,
habe versucht mehrere dBase Tabellen in base zu bringen. Leider klappt es nicht.
Folgende Software benutze ich:
Version: 7.3.5.2 (x64) / LibreOffice Community
Build ID: 184fe81b8c8c30d8b5082578aee2fed2ea847c01
CPU threads: 4; OS: Windows 6.1 Service Pack 1 Build 7601; UI render: Skia/Raster; VCL: win
Locale: de-DE (de_DE); UI: de-DE
Calc: CL

Du musst über den Datenbank-Assistenten die Verbindung zu dem Verzeichnis aufbauen, in dem die dBase-Dateien liegen. Also:

Base Datenbank 
→ Verbindung zu einer bestehenden Datenbank herstellen 
→ dBase

Leider gilt weiter Bug 46180 wie im Handbuch erwähnt: Die Dateiendungen müssen klein geschrieben sein, damit der Treiber sie erkennt. Also *.dbf, nicht *.DBF.

Gruß

Robert

und Du musst das Verzeichnis in dem die Dateien liegen als Datenbank anmelden, nicht die .dbf-Datei. Die einzelnen Dateien sind dann Tabellen der Datenbank.

Hallo RobertG,
ich kann woll die Daten sehen, aber nicht miteinander verknüpfen.
Es gibt die Fehlermeldung “Die Datenbank unterstützt keine Relation”
Es ist auch egal ob ich die Dateinamenserweiterung in Großschrift oder in Kleinschrift habe. Die Daten werden erkannt.
Gruß
Holger

Hallo Wanderer,
es scheint woll an dem Datenformat zuliegen, dass diese erkannt werden aber nicht miteinander verknüpft werden können.
Gruß
Holger

Das ist richtig. Ich verwende die Anbindung von dBase-Dateien hauptsächlich zum lesen von Archiv-Dateien im Originalformat (damals mit dBaseIII erzeugt) oder für ältere Programme, die Daten in diesem Programm austauschen können. Ich ziehe es csv/tsv-Dateien vor, da eine gewisse Typsicherheit besteht und (in Grenzen) ein 8bit-Zeichensatz angegeben werden kann.
.
Für Relationen muss man dann doch eine modernere SQL-Datenbank nehmen. Auswahl ist ja heutzutage genug da.

Hallo @RobertG,
ich kann wohl die Daten sehen, aber nicht miteinander verknüpfen.
Es gibt die Fehlermeldung “Die Datenbank unterstützt keine Relation”
Es ist auch egal ob ich die Dateinamenserweiterung in Großschrift oder in Kleinschrift habe. Die Daten werden erkannt.
Gruß
Holger

Hallo @Wanderer,
es scheint wohl an dem Datenformat zu liegen, dass diese erkannt werden, aber nicht miteinander verknüpft werden können.
Gruß
Holger

@hkaufmann dBase ist nun mal keine relationale Datenbank. Da kannst Du mit Extras → Beziehungen nichts anfangen. Auch kannst Du in Base grundsätzlich so Tabellen nicht miteinander in Abfragen oder über Formular/Subformular verbinden. Dazu musst Du dann aus den dBase-Dateien die Daten in eine relationale Datenbank wie z.B. die interne HSQLDB auslesen.

Wenn bei Dir das Ganze unabhängig von der Groß- und Kleinschreibung funktioniert, dann wirst Du wohl ein Windows-System haben. Da wird dieser Unterschied zwischen Groß- und Kleinschreibung anscheinend bei Dateinamen nicht so genau genommen.

Hallo RobertG,
Danke für den Hinweis. Das bedeutet alle Bücher die ich von dBase haben sind falsch. Den dort steht das dBase eine relationale Datenbank ist. Dann muß ich alle meine Tabellen über calc importieren.
Gruß
Holger

Nicht ganz falsch, aber Du nutzt ja kein DBase, sondern einen “Datenbank-Treiber”, der die .dbf-Dateien lesen kann.
.
Wenn Du z.B. auf eine MySQL/MariaDB-Datenbank zugreifst, läuft irgendwo das Datenbank-Program und kommuniziert mit Base. Die Datenbank realisiert die Relationen, Base zeigt sie an.
.
Ausserdem ist es eine Frage des Alters. Die dBase-III, FoxPro Datenbanken, die ich kenne liegen meiner Ansicht nach vor SQL auf dem PC. Die Relationen wurden wohl zur Laufzeit im Code realisiert, sind aber nicht in der dbf-Datei sichtbar. Ob sich dass mit dBase IV oder V geändert hat, kann ich nicht sagen.
.
Nebenbei gibt es Varianten: z.B. Sqlite kann man mit oder ohne Unterstützung fur Relationen compilieren (oder konnte?).

Natürlich kann über zusätzliche Programmiersprache auch eine scheinbare Relation erzeugt werden. Das haben auch mit dBase-Dateien früher wohl viele Entwickler gemacht. Ich erstelle Daten mit einem Schlüsselwert. Ich fülle die Daten mit einem eindeutigen Wert in dieser Tabelle und lese diesen Wert aus, um ihn in eine andere Tabelle zu schreiben. Das geht dann auch mit Calc-Tabellen.

dBase ist grundsätzlich eine Art, einzelne Tabellen zu beschreiben. Es stellt kein Instrument zur Verfügung, um eine sichere Beziehung von einer Tabelle zur anderen zu erzeugen. Das geht schon allein aus dem Grunde nicht, weil eben die *.dbf-Datei von der anderen nichts weiß und auch nicht mit bekommt, wenn die zweite Datei plötzlich fehlen sollte.

Schau auch hier: Datenbankmanagementsysteme.

Warum Du jetzt über Calc importieren musst, wo Du doch über Base auf jede Tabelle in einem Verzeichnis zugreifen kannst, verstehe ich nicht. Das macht nur Sinn, wenn Du die Daten ausschließlich in Calc nutzen willst. Ansonsten klickst Du die dBase-Tabelle in der dBase-Datenbankdatei von Base an, kopierst sie und fügst sie (mit Hilfe des Assistenten) in eine Base-Datenbankdatei ein, die z.B. auf der internen HSQLDB beruht.

biblio_subform.odt (11.7 KB)
Doch, es ist möglich, Tabellen und Abfragen über Listenfelder und Unterformulare zu verknüpfen. Das geht sogar mit Pseudo-Datenbanken (csv, Calc, etc.).
dBase ist so eine Zwischenlösung zwischen richtiger Datenbank und Pseudo-Datenbank.
Die Datensätze sind editierbar (auch ohne Primärschlüssel).
Man kann große Datenmengen indizieren.
Relationen gibt es keine.
Jede Abfrage unterstützt nur eine Tabelle
Funktionen sind beschränkt auf SQL functions for file based database drivers

Hallo RobertG.
leider bekomme ich nur folgende Fehlermeldung:
SQL-Status: 37000
Fehlercode: -16
Wrong data type:
pavaJang.NumberFormatException: For input
string: "25031994.000

Meinst Du jetzt beim Einfügen der Daten in die HSQLDB? Anscheinend steht da in einem Feld "25031994.000 und das ist ein Text. Der Assistent (oder Du) hat aber vorgegeben, dass es sich um Zahlen handeln soll.

Am besten beim Assistenten die automatische Erkennung auf 100 Datensätze einstellen. Dann stimmt der Typ bedeutend besser. Oder das Feld, in dem der Text steht, auch bereits beim Assistenten als Text (VARCHAR) kennzeichnen.