Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Vorgangsnummer erstellen


  • Please log in to reply
8 replies to this topic
winniepuh77
  • Members
  • 31 posts
  • Last active: Apr 16 2015 09:41 PM
  • Joined: 24 Jan 2014

Firmen verwenden Auftragsnummern, Versicherungen Schadennummern. In beiden Fällen ist es eine eindeutige nur einmal vorkommende Vorgangsnummer, unter der der Fall/Auftrag gespeichert wird.

Ich verwende Vorgangsnummern um meinen Dokumenten eine eindeutige ID zu geben, unter der die Dokumente abgelegt sind.

Da man sich nicht merken kann, welche Vorgangsnummer als letztes verwendet wurde, bzw, welche jetzt dran ist, übernimmt das das folgende Script.

Das Script erstellt mit jedem Start bzw Klick auf den Button Neu eine Vorgangsnummer nach dem Muster 14A01 und zeigt diese in einer GUI an.

 

Die Vorgangsnummer setzt sich so wie folgt zusammen:

14 : Aktuelles Jahr -- A : aktueller Monat -- 01 : Laufende Nummer (ID) in dem Monat

Die Monate sind dem Alphabet nach fortlaufend benannt:

A = Januar
B = Februar
C = März
...
L = Dezember

Die Vorgangsnummer(ID) beginnt jeden Monat wieder mit 01, ist fortlaufend und nicht auf eine Maximalanzahl begrenzt.
 

Im Programmverzeichnis muss sich eine Datei vorgang.dat befinden, die nichts weiter enthält, als die zuletzt verwendete Vorgangsnummer nach oben bechriebenen Muster.

Sollte die Datei nicht existieren, gibt es einen Hinweis, die Datei wird erstellt und erste Vorgang im jetzt aktuellen Monat wird erstellt.

Der Programm Ordner kann auch auf einem Server liegen und damit dannn von jedem Rechner im Netzwerk aufgerufen werden. Es  dann muss als Pfad in der Varriable prg_verz das entsprechende Verzeichnis auf dem Server angegeben werden.


; Variablen-Liste
; ------------------
; prg_verz : Verzeichnis, wo die Vorgangsdatei gespeichert ist
; vorgang_file : Datei in der der Vorgang gespeichert wird
; vorgang_id: Die aktuelle Vorgangsnummer
; vorgang_jahr : Jahr des Vorgangs beim zerlegen
; vorgang_monat: Monat des Vorgangs beim zerlegen
; vorgang: enthält die Vorgangsnummer nach dem einlesen aus der Datei
; heute: enthält das Datum von heute


; -- Variablen festlegen --
; -------------------------
prg_verz := "C:\programme\vorgangsnummer\"
vorgang_file := "vorgang.dat"


start:

; -- prüfen ob eine Vorgangsdatei existiert --
; ---------------------------------------------
    
IfExist, %prg_verz%%vorgang_file%
    Goto, vorgangsdatei_vorhanden
    
    
IfnotExist, %prg_verz%%vorgang_file%
    Goto, vorgangsdatei_nicht_vorhanden
    
    
vorgangsdatei_vorhanden:

; letzter benutzter Vorgang aus Datei einlesen und anzeigen
; ----------------------------------------------------------
FileRead, vorgang, %prog_verz%%vorgang_file%
StringLen, laenge_vorgang, vorgang



; letzter benutzter vorgang zerlegen
; ----------------------------------
StringMid, vorgang_jahr, vorgang, 1, 2
StringMid, vorgang_monat, vorgang, 3, 1
StringMid, vorgang_id, vorgang, 4, %laenge_vorgang%



; -- Vorgangs-Datei löschen --
; -------------------------------
FileDelete, %prog_verz%%vorgang_file%



; -- aktuelles Datum in Monat + Jahr zerlegen --
;-------------------------------------------------

FormatTime,heute,,dd.MM.yy


StringMid, heute_tag, heute, 1, 2
StringMid, heute_monat, heute, 4, 2
StringMid, heute_jahr, heute, 7, 2


; -- Monat in Buchstabe umwandeln --

IfInString, heute_monat, 01
{
    heute_monat = A
    
}


IfInString, heute_monat, 02
{
    heute_monat = B
    
}

IfInString, heute_monat, 03
{
    heute_monat = C
    
}

IfInString, heute_monat, 04
{
    heute_monat = D
    
}

IfInString, heute_monat, 05
{
    heute_monat = E
    
}

IfInString, heute_monat, 06
{
    heute_monat = F
    
}


IfInString, heute_monat, 07
{
    heute_monat = G
    
}

IfInString, heute_monat, 08
{
    heute_monat = H
    
}

IfInString, heute_monat, 09
{
    heute_monat = I
    
}

IfInString, heute_monat, 10
{
    heute_monat = J
    
}

IfInString, heute_monat, 11
{
    heute_monat = K
}   

IfInString, heute_monat, 12
{
    heute_monat = L
    
}




; -- prüfen ob neues Jahr --

if (heute_jahr > vorgang_jahr)
{
Goto, neuer_vorgang_im_neuen_jahr
}



; -- prüfen ob neuer Monat --

if (heute_monat > vorgang_monat)
{
Goto, neuer_vorgang_im_neuen_monat
}


; -- prüfen ob selber Monat --

if (heute_monat = vorgang_monat)
{
Goto, neuer_vorgang_im_selben_monat
}

exit



neuer_vorgang_im_selben_monat:

; -- Vorgangsnummer um 1 erhöhen, wieder zusammenfügen und in die Datei schreiben --
; -------------------------------------------------------------------------------------
vorgang_id := vorgang_id+1

; -- wenn die Vorgangsnummer kleiner als 10, wird eine Null vorangestellt --
if (vorgang_id < 10)
{
vorgang_id := 0 . vorgang_id
}

vorgang := vorgang_jahr . vorgang_monat . vorgang_id
FileAppend, %vorgang%, %prog_verz%%vorgang_file%

Goto, neue_vorgangsnummer_anzeigen




neuer_vorgang_im_neuen_monat:

; -- 1. Vorgang im neuen Monat erstellen, und in die Datei schreiben --
; -------------------------------------------------------------------------------------


vorgang_id := 01

vorgang := vorgang_jahr . heute_monat . vorgang_id


FileAppend, %vorgang%, %prog_verz%%vorgang_file%

Goto, neue_vorgangsnummer_anzeigen




neuer_vorgang_im_neuen_jahr:

; -- 1 Vorgang im neuen Jahr erstellen, und in die Datei schreiben --
; -------------------------------------------------------------------------------------


vorgang_id := 01

vorgang := heute_jahr . heute_monat . vorgang_id


FileAppend, %vorgang%, %prog_verz%%vorgang_file%

Goto, neue_vorgangsnummer_anzeigen






neue_vorgangsnummer_anzeigen:



; --  Neue Vorgangsnummer anzeigen --
; -------------------------------------
Gui, 1:New
Gui, Font, s10, Verdana
Gui, Add, Button, x242 y220 w100 h30 , Beenden
Gui, Add, Button, x82 y220 w100 h30 , Neu

Gui, Font, s15, Verdana
Gui, Add, Text, center x95 y50 w250 h30 , Neuer Vorgang:

Gui, Add, Text, center x170 y140 w100 h30 , %vorgang%

Gui, Show, x358 y214 h300 w440, Neuen Vorgang erstellen
Return

ButtonBeenden:
ExitApp

ButtonNeu:
Gui, Destroy
Goto, start


GuiClose:
ExitApp



vorgangsdatei_nicht_vorhanden:

hinweistext = Die Datei vorgang.dat existiert nicht. `nSie wird jetzt erstellt. `nUnd der erste Vorgang in diesem Monat wird erzeugt.

Gui, 2:New
Gui, Font, s10, Verdana
Gui, Add, Text, center x90 y30 w250 h130 , %hinweistext%
Gui, Add, Button, x170 y140 w100 h30 , Ok
Gui, Show, x358 y214 w400, Achtung !
Return

2ButtonOk:
FileAppend,,vorgang.dat
Goto start


2GuiClose:
ExitApp


hd0202
  • Members
  • 709 posts
  • Last active: Feb 14 2016 08:05 PM
  • Joined: 13 Aug 2006

Ich würde den Code etwas kleiner und damit übersichtlicher machen:

heute_monat := chr(heute_monat + 64)

Edit: heute_monat := statt heute :=

 

Hubert



winniepuh77
  • Members
  • 31 posts
  • Last active: Apr 16 2015 09:41 PM
  • Joined: 24 Jan 2014

heute_monat := chr(heute_monat + 64)

 

Danke für den Tipp... Sieht tatsächlich etwas übersichtlicher aus :D



Welpenmetzger
  • Members
  • 2 posts
  • Last active: Feb 24 2015 12:09 PM
  • Joined: 18 Feb 2015

Hallo winniepuh,

 

wenn ich Dein Script laufen lassen, laufe ich immer auf einen GUI-Fehler in Zeile 235:

 

; --  Neue Vorgangsnummer anzeigen --
; -------------------------------------
Gui, 1:New     <---  Parameter #1 invalid

 

Hast Du eine Lösung für diesen Fehler?

 

Vielen Dank

 

Michael

 

 

 



garry
  • Spam Officer
  • 3219 posts
  • Last active: Sep 20 2018 02:47 PM
  • Joined: 19 Apr 2005

download autohotkey von hier

http://ahkscript.org/



Welpenmetzger
  • Members
  • 2 posts
  • Last active: Feb 24 2015 12:09 PM
  • Joined: 18 Feb 2015

Vielen Dank für Deinen Tip: Das hat geholfen!



bejot
  • Members
  • 16 posts
  • Last active: Mar 09 2015 08:30 PM
  • Joined: 01 Nov 2012

Hi, ich komme nicht nach der  ersten GUI weiter. Es erzeugt keine "vorgang.dat" und legt auch kein Verzeichnis an. Immer wieder das gleiche Fenster.

Hier hapert es:

prg_verz := "C:\programme\vorgangsnummer\"
vorgang_file := "vorgang.dat"

 

Ich verstehe es nicht. Was spuckt mir in die Suppe?
 

Ich benutze dateiversion 1.1.19.3

 

Über Hilfe freue ich mich jetzt schon



hd0202
  • Members
  • 709 posts
  • Last active: Feb 14 2016 08:05 PM
  • Joined: 13 Aug 2006

So gelangt die neue Datei nach A_WorkingDir und nicht in dein Verzeichnis (und da sie nicht gefunden wird, kommt das Fenster immer wieder :D ).

2ButtonOk:
FileAppend,,vorgang.dat
Goto start

Und dein Verzeichnis wird auch nicht von selbst angelegt, wenn es nicht existiert.

 

Hubert



bejot
  • Members
  • 16 posts
  • Last active: Mar 09 2015 08:30 PM
  • Joined: 01 Nov 2012

Oh danke Hubert,

nun habe ich es geschnallt.

 

Gruß bejot