waldbauer.com

waldbauer.com (http://www.waldbauer.com/vb/index.php)
-   SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum (http://www.waldbauer.com/vb/forumdisplay.php?f=57)
-   -   Tabellensplit mit OA4 (http://www.waldbauer.com/vb/showthread.php?t=1974)

Tabellensplit mit OA4
 
Hallo OA4-Fans !

schön, daß ich auf dieses Forum gestoßen bin, denn... Info`s über OA4 sind heute ja heute nicht mehr gerade üppig gesät....

Nun zu meinem Problem:
In unserer Klinik ist eine OA4-Datenbank im Einsatz, die bestimmte Röntgeninformationen verwaltet. Da sich niemand im Hause mehr mit OA4 auskennt(ich leider auch nicht...) ist mir der Auftrag erteilt worden, die Applikation nach MS-Access zu portieren. Dass man die Daten als CSV oder im dbf-Format exportieren kann habe ich ja schon herausgefunden. Der Export ins dbf-Format klappt bis ungefähr zu einem Drittel, dann passiert nichts mehr. (Datensatz 121000) Die Tabelle ist ca. 94 MB groß.
Der Weg müßte also über einen Split der Tabelle in mehrere kleinere Tabellen gehen, die sich dann exportieren und wieder zusammensetzen lassen. So weit so gut.. Leider habe ich keinerlei Aufzeichnungen über OA4, Programmier-Syntax etc. und der Programmierer ist auch nicht mehr greifbar. Wie codiere ich so einen Tabellensplit? Ich bin für jeden Tip dankbar!
mfg Gerhard

Hallo Gerhard !

Hat deine Tabelle auch ein Datum ? Ich kann dir dann meine Version des Tabellen Splittings hier rein kopieren. Du brauchst zum Auführen den Programmierer - mit dem Compiler alleine geht es nicht.

Der Programmierer sollte im Hauptmenü von OA4 als Menüpunkt zu finden sein.

Hallo,
ja, ich denke schon, daß es ein Datumsfeld gibt, nur... ich habe leider noch nicht den Punkt gefunden, wo man sich die Tabellendefinitionen anzeigen lassen kann... :(

Liste der Anhänge anzeigen (Anzahl: 4)
DATENBANK -> PFLEGE dann über F4 Tabelle suchen oder den Namen eingeben (siehe Abbildungen).

Ja, super schönen Dank, also es gibt ein paar Datumsfelder, und den Programmierer hab ich auch schon gefunden... ;-)

Gut - jetzt noch die Frage ob deine OA4 Versionen einen funktionierenden COMPILER besitzt. Der sollte in einem der Untermenüs zu finden sein. Ansonsten musst du mir den Datenbanknamen samt Prefix, das JAHR mit dem der Split beginnen soll sowie den Feldnamen eines Datumfeldes welches immer befüllt ist und ich kompiliere dir das Programm fertig zum Einbinden bei dir.

Das Programm holt jeweils die Daten 1 Monats beginnend ab JAHR und speichert die Daten in eine neue Datenbank DAT_xx. Du kannst natürlich auch einen grösseren Zeitrahmen nehmen wenn die Menge der Daten/Monat nicht allzugross ist um die Anzahl der neu erzeugten Tabellen zu verringern.

Hier das Programm dazu:

Code:


! Tabellensplit für grössere Tabellen nach Datum
!
! Die Funktion muss compiliert werden, da der Programmierer das höchste Datum
! nicht automatisch ermitteln kann und einen Fehler ausgibt.
! Es werden Teile zu je einem Monat jeweils in eine separate Tabelle geschrieben
! Es müssen alle ROTEN Werte ersetzt werden.
 
errors off
local bool x=true
local int monat = 1
local int jahr = 1984
local int dbcount = 1
local str zieldb = ""
while x
local date anfang = date(monat,01,jahr)
local date ende = date(monat,31,jahr)
 
local view daten=from deinedatenbank where datum>=anfang and datum<=ende
use daten
local int anz = count(daten)
 
if anz > 0
zieldb = "main:dat_"&string(dbcount)
put at 5,3 "Ziel Datenbank: "&zieldb
put at 5,4 "Datumsbereich : "&string(anfang)&" bis "&string(ende)
put at 5,5 "Gesamtdaten : "&string(anz)
local bool ok = db_make(daten,zieldb,"","")
dbcount = dbcount+1
end if
 
use daten end
if monat<12
monat = monat+1
else
monat = 1
jahr = jahr+1
end if
put do clear screen
end while


Eine weitere Möglichkeit wäre natürlich, dass du mir die DF (FTP) schickst und ich konvertiere sie zu DBF mit unserem Tool. Allerdings natürlich Datenschutzrechtlich ein Problem.

Hallo,
du bist sehr hilfsbereit, vielen vielen Dank!! Hab mich heut morgen hingesetzt und nach ein bischen herumprobieren und ein paar Modifikationen hab ich`s aber mit deinem Code geschafft!! Waren so um die 240000 Datensätze, mußte erst noch ein bischen Müll entsorgen(steuerzeichen in den Feldern oder Datumseinträge wie 15.15.8063 :-), dann hab ich die Ausgabe auf ein Jahr umgesetzt, denn sonst hätt ich 163 Tabellen gehabt... Das war`s... Exportiert hab ich allerdings mit ner Runtime, die ich irgendwo auf ner australischen Site gefunden hab, meine Installation fror beim Export ein... (Tabellengrößen zwischen 6 und 8 MB???) na egal...
Es hat geklappt und ohne deine Hilfe hätt ich`s sicher nicht geschafft. Man braucht halt manchmal einen Anstoß von außen, um weiter zu kommen!! Und... je mehr ich mich mit OA beschäftige, umso mehr fällt mir auf, wie genial dieses Programm ist. Aber... die Zeichen der Zeit... :-( Ich werd auf jeden Fall weiterhin ins Forum reinschauen, denn... Ich liebe Oldtimer!!!
1000 Dank
von
Gerhard

Na super - freut mich - leider ein potenzieller Kunde weniger der OA verwendet :D Ich habe aber ohnehin beschlossen die Schnittstelle mit Ludwig zusammen fertig zu stellen. Auch wenn ich weltweit der Einzige bin der eine derartige Anbindung hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr.

Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.