Bei der Fakturierung mit BS-Handel gibt man im Laufe der Zeit sehr viele Adressen ein. Wenn diese Daten nach BS-Handel weiterverarbeitet werden sollen, müssen sie aus der Adreßdatei von BS-Handel herausgeholt werden. Am sinnvollsten ist momentan auf dem Atari ST wohl eine Weiterbearbeitung mit der Datenbank ADIMENS. Im Folgenden wird der Ablauf für eine Konvertierung beschrieben, und ein kleines Programm in C erledigt die notwendige Arbeit, die Adreßdaten aus BS-Handel in eine Export (.EXP) Datei für Adimens zu wandeln. Das Programm arbeitet in seiner derzeitigen Version mit dem Adimens 2.0 zusammen.
Zuerst muß das C-Programm eingetippt und mit dem Megamax C-Compiler compiliert werden (andere C-Compiler tun es auch).
Das fertig compilierte Programm sollte dann auf die gleiche Partition gespielt werden, auf der sich die Datei ADRESSEN.DAT von BS-Handel befindet. Vor dem Starten des Programms sollte gewährleistet sein, daß sich auf der Partition noch genügend freier Speicherplatz für die .EXP Datei befindet. Die Länge der vom Programm erzeugten Datei für Adimens beträgt ca. ein Zehntel der BS-Handel-Adreßdatei. Nach dem Starten des Programms werden alle Datensätze konvertiert, und die aktuelle Nummer wird links oben im Bildschirm heraufgezählt. Wenn alle Datensätze konvertiert sind, erscheint die Anzahl der insgesamt gefundenen Adressen.
Wenn alles geklappt hat, sollte mit Adimens eine Datei FAKTUR mit Maske erstellt werden, die die Merkmale KUNDENNUMMER, NAME, STRASSE, PLZ und ORT enthält.
Die einzelnen Datenfelder sollten als Texte definiert sein, und zur Weiterverarbeitung empfiehlt sich die Benutzung von Schlüsseln für Kundennummer, Name und Postleitzahl. Eine Maske, die sehr schnell mit Adimens zu erstellen ist, könnte wie in Bild 1 aussehen.
Bei der Erstellung der Maske im Adimens-INIT sollte unbedingt beachtet werden, daß bei der Einstellung der Größe der Datei mindestens die Anzahl der gefundenen Adressen eingegeben wird. Sicherheitshalber sollte großzügig nach oben aufgerundet werden. Nachdem die Maske fertiggestellt ist, kann im Hauptteil von Adimens die zuvor erstellte Datei importiert werden.
OJO
/*
Programm zum Wandeln der Adressdatensaetze von 3S-handel 2.02 in eine Adimens Datei.
Die Maske der Adimens Datei sollte die Eintraege
KUNDENNUMMER, NAME, STRASSE. PLZ, ORT
in der Maske besitzen. Dabei ist eine Wahl der Felder als Text mit jeweils ca. 38 Zeichen sinnvoll.
Fuer eine Weiterverarbeitung sollten die Eintraege KUNDENNUMMER, NAME und PLZ als Schluesselwoerter
verwendet werden.
Die Datei, die mit diesem Programm erstellt wird enthaelt eine komplette Exportliste fuer Adimens.
Programmautor: Oliver Joppich
Programmversion: Megamax C, 08.05.88
*/
/* Standard Include Dateien */
#include <osbind.h>
/* Konstanten Offsets fuer BS-Handel Adresssaetze */
#define NUMMER 0
#define NAME 12
#define STRASSE 0x4e
#define PLZ 0x6d
#define ORT 0x77
#define TELEFON 0x8c
/* Puffer zum Einlesen eines Datensatzes */
char buffer[0x500];
main()
{
int i;
int fh,fh2;
long eof;
fh = Fopen("ADRESSEN.DAT",0); /* Name der B5-Handel Datei */
if (fh >0)
{
Fseek(0x21fL,fh,0); /* an den Datenanfang */
fh2 = Fcreate("FAKTUR.EXP",0); /* Adimens Export Datei */
if (fh2 >0)
{
Fw_string(fh2, ".FILE FAKTUR");
/* Kennung fuer Adimens */
Fw_crlf(fh2);
/* Start mit Returns */
Fw_crlf(fh2);
Fw_crlf(fh2);
while (Fread(fh, 0x342L, buffer) >0L )
/* solange Daten schreiben */
writedata(fh2);
/* bis Ende erreicht ist. */
Fclose(fh2);
}
Fclose(fh);
}
printf("Datensaetze gefunden ...\n");
Cconin();
}
writedata(fh2)
int fh2;
{
static int count = 0;
printf("%cH %6d\n",0xlb,count++);
/* NUMMER des Datensatzes zur Kontrolle */
Fw_string(fh2, &buffer[NUMMER]);
/* Schreiben der Kundennummer */
Fw_string(fh2, Sbuffer[NAME]);
/* Schreiben des Namen */
Fw_string(fh2, &buffer[STRASSE]); /* Strasse */
Fw_string(fh2, &buffer[PLZ]); /* Die Postleitzahl */
Fw_string(fh2, &buffer[ORT]); /* Der ... (na was wohl ?) */
Fw_crlf(fh2);
}
Fw_string(fh, s)
int fh;
char *s;
{
Fwrite()fh, (long)strlen(s), s);
Fw_crlf(fh);
}
Fw_crlf(fh)
int fh;
{
char crlf[2];
crlf[0] = 0x0d;
crlf[1] = 0x0a;
Fwrite(fh, 2L, crlf);
}