Hallo alle zusammen,
habe ein riesen Problem.
Mein Auftraggeber hat ein Fakturaprogramm das auf Paradox basiert. Es ist leider uralt und der Entwickler dieses Programm ist nicht mehr greifbar.
Nun sollen die Daten aus diesem Faktura programm in das neue Faktura übernommen werden (OrgaMax von Deltra Soft)
Der Export der Daten in eine Excel datei war auch ganz leicht. Nun allerdings das Problem,
eine Spalte aus der Paradox Datei wurde nicht mit übernommen, da die Daten daraus scheinbar in einer separaten Datei abgespeichert wurden.
Genau diese Daten sind aber Lebensnotwendig!!
In der Excel Datei wird die Spalte (Beschreibung) auch angezeigt, allerdings bei jedem Artikel ohne Inhalt.
Wenn ich aus Paradox in ein anderes Format Exportiere wird mir in diesem Feld (Beschreibung) immer Blob Memo angezeigt.
Was kann ich tun damit ich den Inhalt der Zeilen sehen kann und die Daten sichere.
Hatte aus Verzweiflung die Idee aus der Paradoxdatei einfach Bildschirmausdrucke zu machen und, dann per Hand in Excel zu übertragen. Das geht allerdings nicht, da immer nur der Text in der Zelle erscheint wenn ich auch auf die Zelle klicke.
Also, bitte bitte, wer kann mir helfen??
Vielen Dank Dörthe
Hallo Dörthe,
leider gibst Du nicht an, welche Paradox-Version Du benutzt. Aus Deiner Beschreibung des Problems schließe ich, dass es sich bei der nicht exportierten Spalte um ein Text-Memo oder formatiertes Text-Memo handelt. Um an diese Daten zu gelangen, bin ich bisher wie nachfolgend beschrieben vorgegangen:
Ein Script mit der Paradox-eigenen PAL-Sprache erstellen. Im Script die gewünschte Tabelle öffnen und abarbeiten. Jedes nicht leere Memo ins ClipBoard schreiben. Clibboard in eine Stringvariable einlesen. Falls der gelesene String länger als 255 Zeichen (max. Länge eines Paradox-String-Tabellenfeldes ist, den String in entsprechend große Felder umbrechen mit Befehl ‚substr‘). Nun per Script eine vorher definierte Tabelle mit den Daten der alten Tabelle zzgl. der in Strings umgewandelten Memos füllen. Anschließend die neue Tabelle exportieren. Du hast dann zwar das Memo aufgeborchen in mehrere Excel-Spalten, aber es dürfte relativ einfach sein, sie zu einer zusammenzufügen. Möglicherweise überschreitet die Länge einzelner Memos ja auch die max. Größe eines Excelfeldes.
Ich hoffe, Du kannst mit PAL programmieren oder hast jemand zur Hand, der das kann. Das Programmieren und Testen des Scripts sollte in maximal ein, zwei Stunden erledigt sein. Die meisteArbeit bleibt beim Anwender hängen: Das Zusammenfügen der Excelspalten.
Vielleicht konnte ich Dir helfen. Viel Glück
Rolf
Ich hatte mal ein ähnliches Problem bei der Datenübernahme von Paradox nach Amicron-Faktura.
Gelöst habe ich es durch eine Konvertierung der Paradox-Datei nach dBase. Die dBase-DAtei konnte dann problemlos inkl. Memos eingelesen werden.
Beispiel für ein kostenloses Konvertierprogramm:
http://www.shareware-und-mehr.de/software/konvert/ko…
Hallo Dörte,
bei dem Feld, dessen Daten nicht übertragen wurden,
handelt es sich mit hoher Wahrscheinlichkeit um ein
Memo-Feld. Memo-Felder haben den Vorteil, dass Ihr
Inhalt praktisch beliebig groß sein kann und auch die
Speicherung von Zeilenumbrüchen und Tabulatoren kein
Problem dar stellt. Der Nachteil liegt darin, dass
der Inhalt dieser Felder außerhalb der eigentlichen
Tabelle gespeichert wird und sich die Felder aus
diesem Grund zum Teil recht zickig verhalten. Wie Du
ja schon selbst erfahren durftest.
Wie das Problem zu lösen ist, hängt zum Teil auch
von Art und Umfang der hinterlegten Daten ab. Bei
einem kleinen Versuch hat folgender Weg bei mir
funktioniert:
-
Eine Kopie der betreffenden Tabelle anlegen. Der
einfachste Weg hierzu ist eine Abfrage zu erstellen
und einfach alle Felder und Datensätze auszuwählen.
Das Ergebnis dieser Abfrage wird im Regelfall in
einer ANTWORT oder ANSWER-Tabelle im Privatver-
zeichnis gespeichert. Falls Du hier Unterstützung
brauchst, melde Dich bitte noch mal dazu.
-
Die neu erstellte Tabelle umstrukturieren und das
Memo-Feld (Typ M) in ein Alphanumerisches Feld
(Typ A) mit einer Größe von 255 Zeichen umwandeln.
-
Die Daten aus der umstrukturierten Tabelle
exportieren, so wie Du das schon zuvor gemacht hast.
Bei meinem Versuch waren die meisten Steuerzeichen
in der Tabellenkalkulation (ich verwende QPro) noch
abrufbar. Was Orgamax daraus macht, kann ich Dir
allerdings nicht sagen, aber mit leichten Verlusten
würde ich da einfach mal rechnen.
Der Nachteil des von mir beschriebenen Weges liegt
darin, dass nur die ersten 255 Zeichen aus dem
jeweiligen Feld übertragen werden. Der Rest würde
dem Vergessen anheim gegeben. Falls dies für deine
Zwecke nicht hinnehmbar sein sollte, dann melde Dich
bitte noch mal bei mir; dann müssen wir uns einen
anderen Lösungsweg überlegen.
Viele Grüße
Peter
Hallo Rolf,
ja, ich vermute das es sich um ein solches Textmemo Feld handelt. Hab heute den Entwickler des Programms erreichen können. Ein Privatmann der das Fakturaprogramm 1996 der Basis von Paradox erstellt hat.
Leider konnte er nur in sofern weiterhelfen das er sagte er habe in der angesprochenen Datenbank Material nur Spalten mit einem Wert von 50 angelegt.
Alles was darüber hinaus ginge würde dann automatisch von Paradox in einer neuen Tabelle gespeichert.
???
Er hat mir keine Hoffnung gemacht das ich das Problem löse. Und wenn überhaupt nur mit einem Arbeitsaufwand seinerseits von 2 Arbeitstagen. Das kann ich nicht glauben und eure Antworten machen mich da schon viel optimistischer.
Danke erstmal dafür.
Hallo Peter, und alle anderen
das mit dem Textmemo Feld scheint richtig zu sein.
Ich selber hab das Paradox ja leider nicht hier auf meinem Rechner. Sondern nur mein Kunde und der muss damit, solange ich es nicht geschafft habe immer noch seine Aufträge verwalten.
Ich hab mir vorerst nur die relevanten Dateien gezogen.
Bei Material sind es ingsesamt 15 Dateien. Ein DB File, ein Textdokument, eine MB Datei, eine Val Datei, eine Px datei und XG0-XG4 Dateien sowie YG0-YG4 Dateien.
Die Datenbankdatei hab ich mir mit einem Paradox Datenbank Konverter in Excel umgewandelt.
Aber auch da ist es nur ein Memo Feld.
Also wenn du mit diesen Dateien was anfangen kannst und mir bei derUmwandlung behilflich sein kannst, dann wär ich dir sehr dankbar!
Bin auch gerne bereit etwas dafür auszugeben.
Ich würd viel zu lange dafür brauchen. Und da greife ich lieber auf Experten wie dich, bzw euch zurück.
Danke!!
Dörthe
Hallo Dörthe,
lass Dir nichts erzählen. Was soll das heißen: ‚Spalten mit einem Wert von 50‘? Meint der Programmierer damit die Länge der Felder? Das wäre in Bezug auf Memofelder absoluter Unsinn, da man in Paradox die Länge dieser Felder nicht bestimmen kann. Ich sende Dir untenstehend den Sourcecode eines kleinen Paradox-Script, dass ich vor ein paar Minuten erstellt habe. Es liest aus einer Tabelle, die ich seit längerem benutze, ein Memofeld in einen String aus. Im Falle, das das Memo mehr als 255 Zeichen enthält, legt das Script bis zu fünf Strings à 255 Zeichen an. Man könnte sehr leicht beliebig viele Strings erzeugen, falls das Memofeld noch länger wäre. Der Weg zum Erstellen einer neuen Tabelle, wie ich Dir in meiner ersten Anwort erklärt habe, ist dann nur noch ein Klacks. Vielleicht hilft das Script Deinem Programmierer ja bei der Lösungssuche. Noch ein paar Fragen: Welche Paradox-Version benutzt Du? Und wo befindet sich die Datenbank (ich meine den Ort, das Dorf, die Stadt)? Falls das in der Nähe von mir ist, wäre ich eventuell bereit, das Problem zu lösen, dazu müßte ich aber Zugriff auf die Datenbank haben. Falls du eine ältere Paradox-Version als ich (Paradox 11)benutzt, könnte ich Dir bei der Gelegenheit die neuere Paradox-Engine geben, denn ich besitze eine Runtimeversion, die ich offiziell beliebig oft weitergeben darf. Ich habe sie mir gekauft, da ich schon häufig komplexe und große Anwendungen in Paradox für andere (und für mich selbst) erstellt habe.
Viele Grüße
Rolf
method run(var eventInfo Event)
Var
reztc TCursor
rzmem Memo
hzaehl LongInt
lrzstr LongInt
strz SmallInt
zaehl LongInt
rzstr String
rzstr1 String
rzstr2 String
rzstr3 String
rzstr4 String
rzstr5 String
endVar
reztc.open(„G:\Rezepte\Titel.db“)
while not reztc.eot()
if not isBlank(reztc.Ausführung1) then
rzmem = reztc.Ausführung1
rzmem.writeToClipBoard()
rzstr.readFromClipBoard()
hzaehl = 1
zaehl = 1
strz = 1
rzstr1 = „“
rzstr2 = „“
rzstr3 = „“
rzstr4 = „“
rzstr5 = „“
lrzstr = size(rzstr)
while zaehl 255 then
strz = strz + 1
hzaehl = 1
endif
switch
case strz = 1: rzstr1 = rzstr1 +
substr(rzstr,zaehl, 1)
case strz = 2: rzstr2 = rzstr2 +
substr(rzstr, zaehl, 1)
case strz = 3: rzstr3 = rzstr3 +
substr(rzstr, zaehl, 1)
case strz = 4: rzstr4 = rzstr4 +
substr(rzstr, zaehl, 1)
case strz = 5: rzstr5 = rzstr1 +
substr(rzstr, zaehl, 1)
endswitch
zaehl = zaehl + 1
hzaehl = hzaehl + 1
endwhile
endif
reztc.nextRecord()
endwhile
reztc.close()
endMethod
Hallo…
ich würde eine kleines Programm schreiben das via adoconnection auf die Paradoxtabelle greift und über eine ander adoconnection in die zieldatenbank und dort zeile für zeile und feld für feld die daten inserten.
Da kann man dann auch geleich alle convertierungen und anpassungen für jedes Feld bequem machen. Ist halt eine längere Vorlaufzeit, aber dafür passt dann auch gleich alles.
Wie groß ist die Quelltabelle und wieviele Felder hat die?
fredi
Hallo Dörthe,
vielleicht wäre da eine praktische Hilfe wirklich die sinnvollere Variante.
Wo befindet sich denn die Baustelle mit den Daten und dem Zeug?
Am Besten schickst Du mir vielleicht mal eine Mail an [email protected] mit einer Telefonnummer, unter der ich Dich erreichen kann. Dann könnte man mal ein paar Dinge abklopfen.
Und bitte entschuldige das fehlende „h“ in meiner ersten Antwort… 
Viele Grüße
Peter