ich habe die Zeit des Quartalsupdates genutzt, um ein C-Programm, das seit zwei Jahren unser Leben erleichtert, in RapidBatch umzuschreiben. Eine kleine und sehr einfach zu erlernende Skriptsprache, mit der sich schnell und unkompliziert Programme erstellen lassen. Den Vorteil sehe ich hier darin, dass sich der Benutzer nicht wirklich um Datensicherheit oder welche nun die aktuellere Datenbank ist, kümmern muß. In der Hektik des Alltags ist schnell einmal ein aktuelle Datenbank überschrieben ..
Beantworte gerne Fragen dazu. Da sich im Forum Tabulatoren nur mit Mühe setzen lassen, kann ich das Original in lesbarerer Form auch gerne zuschicken.
rem ===============================================================================
rem Kurzbeschreibung Aufruf des Programms "Turbomed" in Abhängigkeit von der
rem vorhandenen Umgebung (Netzwerkumgebung oder Einzelplatz)
rem Auch als "Moduswechselbetrieb" bezeichnet
rem -------------------------------------------------------------------------------
rem Version 01.00
rem Datum 30.06.2008
rem Autor Rainer Sonnberg
rem ===============================================================================
rem ===============================================================================
rem Funktionsdefinitionen
rem -------------------------------------------------------------------------------
rem Funktion MakeDateVisible
rem Stellt das Datum in der Form TT.MM.JJJJ dar
func MakeDateVisible: [Datum]
getcharat [MonatEins] = [Datum],'1'
getcharat [MonatZwei] = [Datum],'2'
getcharat [TagEins] = [Datum],'3'
getcharat [TagZwei] = [Datum],'4'
getcharat [JahrEins] = [Datum],'5'
getcharat [JahrZwei] = [Datum],'6'
getcharat [JahrDrei] = [Datum],'7'
getcharat [JahrVier] = [Datum],'8'
[VisibleDate] = [TagEins] # [TagZwei] # '.' # [MonatEins] # [MonatZwei] # '.' # [JahrEins] # [JahrZwei] # [JahrDrei] # [JahrVier]
ret [VisibleDate]
endfunc
rem -------------------------------------------------------------------------------
rem Funktion MakeDateMath
rem Baut das Datum so zusammen, das es rechen- und vergleichbar ist (JJMMTT)
func MakeDateMath: [MathDate]
getcharat [MonatEins] = [MathDate],'1'
getcharat [MonatZwei] = [MathDate],'2'
getcharat [TagEins] = [MathDate],'3'
getcharat [TagZwei] = [MathDate],'4'
getcharat [JahrEins] = [MathDate],'5'
getcharat [JahrZwei] = [MathDate],'6'
getcharat [JahrDrei] = [MathDate],'7'
getcharat [JahrVier] = [MathDate],'8'
[MathDate] = [JahrEins] # [JahrZwei] # [JahrDrei] # [JahrVier] # [MonatEins] # [MonatZwei] # [TagEins] # [TagZwei]
ret [MathDate]
endfunc
rem -------------------------------------------------------------------------------
rem Funktion MakeTimeVisible
rem Stellt die Zeit in der Form hh:mm:ss dar
func MakeTimeVisible: [Zeit]
getcharat [StundeEins] = [Zeit],'1'
getcharat [StundeZwei] = [Zeit],'2'
getcharat [MinuteEins] = [Zeit],'3'
getcharat [MinuteZwei] = [Zeit],'4'
getcharat [SekundeEins] = [Zeit],'5'
getcharat [SekundeZwei] = [Zeit],'6'
[TimeVisible] = [StundeEins] # [StundeZwei] # ':' # [MinuteEins] # [MinuteZwei] # ':' # [SekundeEins] # [SekundeZwei]
ret [TimeVisible]
endfunc
rem -------------------------------------------------------------------------------
rem Funktion MakeTimeMath
rem Stellt die Zeit in der Form hhmmss dar
func MakeTimeMath: [MathTime]
getcharat [StundeEins] = [MathTime],'1'
getcharat [StundeZwei] = [MathTime],'2'
getcharat [MinuteEins] = [MathTime],'3'
getcharat [MinuteZwei] = [MathTime],'4'
[MathTime] = [StundeEins] # [StundeZwei] # [MinuteEins] # [MinuteZwei]
ret [MathTime]
endfunc
rem ===============================================================================
rem Hier beginnt das eigentliche Programm
rem Diese beiden Variablen sind zu setzen fuer die richtigen Pfade
[PathLaptop]= 'C:\Turbomed\PraxisDB\objects.dat'
[PathServer]= 'Z:\PraxisDB\objects.dat'
rem -------------------------
rem Schritt 1 - Daten sammeln
rem -------------------------
rem Datum und Uhrzeit der letzten Veraenderung der Praxis-DB auf dem Laptop
getfiletime [TimeLaptop] = [PathLaptop]
getfiledate [DateLaptop] = [PathLaptop]
rem Wenn kein Datum zurückkomt, ist etwas faul und das Programm endet hier
if [errorcode] < '0'
echo 'Praxisdatenbank auf dem Laptop nicht gefunden, Programm wird beendet'
halt
endif
rem Laptop o.k., jetzt den Server testen
getfiletime [TimeServer] = [PathServer]
getfiledate [DateServer] = [PathServer]
rem -------------------------
rem Schritt 2 - Einzelplatz
rem -------------------------
rem "getfiledate [DateServer]" hat einen Fehler zurückgeliefert ==> kein
rem Server vorhanden ==> Einzelplatzmodus
if [errorcode] < '0'
echo 'Server nicht gefunden' # [crlf] # 'Turbomed wird im Einzelplatzmodus gestartet'
rem Dieser Systembefehl kopiert in das TM-Programmverzeichnis die Konfiguration für den
rem Einzelplatzmodus
call 'cmd.exe /C copy /Y C:\TurboMed\Programm\Einzelplatz\local.ini C:\TurboMed\Programm\local.ini','HIDE'
rem Wenn das geklappt hat, kann TM gestartet und das Programm selbst beendet werden
if [errorcode] ! '0'
echo 'Beim Erstellen der Konfiguration ist ein Fehler aufgetreten' #[crlf]# [crlf]# 'Informieren Sie den Systemadministrator'
else
call 'C:\TurboMed\Programm\turbomed.exe','SHOW'
halt
endif
endif
rem -------------------------
rem Schritt 3 - Mehrplatzplatz
rem -------------------------
rem Wenn wir bis hierher kommen, besteht eine Verbindung zum Server in der Praxis
rem bedeutet, wir müssen die Datums- und Zeitwerte berechnen
rem Erst die Datenbank auf dem Laptop
MakeDateVisible [MathDateLaptop] = [DateLaptop]
MakeTimeVisible [MathTimeLaptop] = [TimeLaptop]
[CompareValueLaptop]= [MathDateLaptop] # ' ' # [MathTimeLaptop]
MakeDateVisible [MathDateServer] = [DateServer]
MakeTimeVisible [MathTimeServer] = [TimeServer]
[CompareValueServer]= [MathDateServer] # ' ' # [MathTimeServer]
rem Jetzt zeigen wir dem User kurz den Status
echo 'Datenbank auf dem Server: ' # [CompareValueServer] # [crlf] # 'Datenbank auf dem Laptop: ' # [CompareValueLaptop]
rem Jetzt die Berechnung, ob überhaupt gestartet werden darf
MakeDateMath [MathDateLaptop] = [DateLaptop]
MakeTimeMath [MathTimeLaptop] = [TimeLaptop]
[LaptopDateTime]= [MathDateLaptop] # [MathTimeLaptop]
MakeDateMath [MathDateServer] = [DateServer]
MakeTimeMath [MathTimeServer] = [TimeServer]
[ServerDateTime]= [MathDateServer] # [MathTimeServer]
if [ServerDateTime] >= [LaptopDateTime]
echo 'Mehrplatzsystem wird gestartet'
call 'cmd.exe /C copy /Y C:\TurboMed\Programm\Mehrplatz\local.ini C:\TurboMed\Programm\local.ini','HIDE'
if [errorcode] ! '0'
echo 'Beim Erstellen der Konfiguration ist ein Fehler aufgetreten' #[crlf]# [crlf]# 'Informieren Sie den Systemadministrator'
else
call 'C:\TurboMed\Programm\turbomed.exe','SHOW'
halt
endif
else
rem Wenn wir bis hier kommen, gibt es ein Problem: Es besteht eine Netzwerkverbindung ,
rem zum Server in der Praxis, aber die Datenbank auf dem Laptop ist aktueller. Was tun ?
echo 'Es besteht eine Verbindung zum Server, ' # [crlf] # 'aber die Datenbank auf dem Laptop ist aktueller !!' # [crlf] # [crlf] # 'Bitte Administrator benachrichtigen !'
endif
end