Você está na página 1de 34

Nr.

139/Juni 2014 5,00 ISSN 10221611


CLUBMOBILE
HTC One (M8)
CLUBSYSTEM
Fuballdatenbank
CLUBDEV
Datamining
Regex
PowerShell
DA S MA G A Z I N
P
.
b
.
b
.

G
Z

0
2
Z
0
3
1
3
2
4





S
i
c
c
a
r
d
s
b
u
r
g
g
a
s
s
e

4
/
1
/
2
2

1
1
0
0

W
i
e
n





PCNEWS139 Juni 2014
2
C
L
U
B
C
O
M
P
U
T
E
R
.
A
T

Liebe Leserinnen und Leser!
Franz Fiala
Selbsthilfegruppe
Inhalt
LIESMICH
1,2
Cover, Liebe Leser, Inhalt
Franz Fiala
4
Impressum, Autoren, Inserenten

CLUBCOMPUTER
2
Clubtermine 2014

4
ADIM Skripten
Marn Weissenbck
29
CC|Camp 2014Vortragende
Werner Illsinger, Georg Tsamis
30
CC|Camp 2014Themen
Werner Illsinger, Georg Tsamis
31
CC|Camp 2014Akonen
Werner Illsinger, Georg Tsamis
32
CC|Camp 2014
Werner Illsinger, Georg Tsamis

CLUBMOBILE
27
Das neue HTC One (M8)
Andreas Prohaska

CLUBSYSTEM
6
Vermessung des Runden Leders
Franz Fiala

CLUBDEV
20
Datamining
Franz Fiala
25
Regex
Franz Fiala
26
PowerShell KurzReferenz
Franz Fiala
33
PowerShellProgramme
Franz Fiala
(Anhang, nur in PDFVersion, online)

LUSTIGES
2
Selbsthilfegruppe
Chrisan Berger
http://bergercartoons.com/
CC|Camp
Biue vormerken: unser nchstes CC|Camp
(=Ganztagsveranstaltung im BarCampSul) n
det am Samstag, 14. Juni 2014 in der HTL
Rennweg stau. Details siehe Seite 2932.
FuballPCNEWS139
Es gibt sie, die Autoren, die eigens fr unsere
Zeitschri einen Arukel verfassen. Aber ein
groer Teil unserer Arukel stammt aus praku
schen Arbeiten an Projekten und wird fr die
PCNEWS nur in lesbare Form gebracht.
Das ist in dieser FuballAusgabe der Fall. Die
Aufgabenstellung, Beantwortung von Fragen
ber die sterreichische FuballNauonalmann
scha, fhrte zu einem umfangreichen Pro
jekt, das mit den Miueln von Datamining,
also dem Extrahieren von Erkenntnissen aus
gegebenen und eher chaouschen Daten, ge
wonnen wurde.
In diesem konkreten Fall waren die Daten noch
nicht als Datenbank verfgbar und daher muss
ten berhaupt erst einmal die Datenbanken aus
einfachen Textdokumenten hergestellt werden,
ein echter DatenBergbau. Dieser erste Arbeits
schriu wird als das eigentliche Datamining
bezeichnet.
Die Auswertung der so entstandenen Daten
bank wird im Beitrag Vermessung des Runden
Leders beschrieben.

ClubComputer
Clubtermine 2014
Di 20140107
Clubabend
F&A
Mo 20140113
Stammusch
ELGA
Do 20140123
Clubabend
Clubdienste
Di 20140204
Clubabend
Windows Phone 8
Mo 20140210
Stammusch
Kontaktose Bezahlung
Do 20140220
Clubabend
Windows Phone 8 Apps
Di 20140304
Clubabend
China DirektImport
Mo 20140310
Stammusch
Festplattenabgabe
Do 20140320
Clubabend
SmartPhone&Tablet
Di 20140401
Clubabend
Windows 8.1Tablets
Mo 20140407
Stammusch
Netzneutralitt
Do 20140424 Clubabend Social Media
Di 20140506 Clubabend F&A
Mo 20140512 Stammusch ELGA
Do 20140522 Clubabend Audacity
Sa 20140614 CC|Camp
Di 20140701 Sommerheuriger
Di 20140805 Sommerheuriger
Di 20140902 Clubabend
Mo 20140908 Stammusch
Do 20140918 Clubabend
Di 20141007 Clubabend
Mo 20141013 Stammusch
Do 20141023 Clubabend
Di 20141104 Clubabend
Mo 20141110 Stammusch
Do 20141120 Clubabend
Di 20141202 Weihnachtsfeier
14.6.2014
Beim Fuball verkompliziert sich alles
durch die Anwesenheit des Gegners.
(JeanPaul Sartre)
Man hetzt die Leute auf mit Tatsachen,
die nicht der Wahrheit entsprechen.
(Toni Polster)
Kleines Geld, kleiner Fuball,
groes Geld, groer Fuball.
(Ferenc Pusks)
Der schnellste Spieler ist der Ball.
(Sepp Herberger)
Es gibt nur einen Ball.
Wenn der Gegner ihn hat, muss man fragen:
Warum!? Ja, warum?
Und was muss man tun?
Ihn sich wiederholen.
(Giovanni Trappatoni)
Minimodule und Industriecomputer
Seit 10 Jahren bietet TQ-Components Embedded Sy-
steme fr den industriellen Einsatz an. In diesem Zeit-
raum entwickelte sich das Unternehmen zu einem der
fhrenden Embedded Hersteller in Europa.
16Bit- und 32-Bit-Infineon-Module
Freescale
MPC5200, 8xx,
82xx, 83xx und
85xx, ColdFire
ARM11
Xilinx- FPGA Module
Intelbasierten UTX Prozessor-Boards
Die Module punkten durch geringe Abmessun-
gen und lange Verfgbarkeit und erfllen
hohe Qualittsansprche. Industrie-
tauglichkeit und Langlebigkeit stehen
bei TQC an oberster Stelle.
Eine weitere wichtige Sule des Unterneh-
mens sind Industrie-PCs. Sie zeichnen sich
durch groe Robustheit und lange Verfgbarkeit
aus. Die Platz sparenden Mini-Industrie-PCs heben sich
durch hohe Modularitt hervor.
USV-Anlagen und Stromversorgungen
Computer- und Netzwerksicherheitsicherheit
Die Bedrohung durch gefhrliche Software ist bekannt. Mindestens ge-
nauso gefhrlich ist die Bedrohung durch Netzspannungsunterbrechungen
und Ausfllen. Dadurch kann Ihre Hardware und in Folge auch Ihre Daten,
Schaden nehmen.
Durch ausschlielicher Verwendung von
Unterbrechungsfreien StromVersorgungen
mit ON-Line Technologie, bieten wir
einen Rundumschutz fr Ihre Anlagen.
Selbstverstndlich bieten wir Installation
und Service sterreich weit an.
MTM-Mess & Strom- +43 1 2032814-0
versogungstechnik e.U. +43 1 2032814-15
Hadrawagasse 36 e-office@mtm.at
A-1220 Wien www.mtm.at
USV-Anlagen von
1kVA bis 800kVA




PCNEWS139 Juni 2014
4
C
L
U
B
C
O
M
P
U
T
E
R
.
A
T

Weissenbck Marn Dir.Dr. 1950 4

Direktor der HTL Wien 3 Rennweg, Leiter der ADIM,
Leiter der ARGE Telekommunikauon
martin@weissenboeck.at
http://www.weissenboeck.at/
A, Arbeitsgemeinschaft fr
Didaktik, Informatik und Mikroelektronik
1190 Wien, Gregor Mendel Strae 37
Tel.: 01-314 00 288 FAX: 01-314 00 788
Nr Titel
38 Turbo Pascal (Borland)
39 RUN/C Classic
40 TurboC (Borland)
413 Turbo/PowerBasic
432 DOS
433 DOS und Windows
47 TurboPascal (Borland)
49 QuickBasic (Microso)
50 C++ (Borland)
533 AutoCAD I (2DGrak)
535 AutoCAD I (2DGrak)
54 AutoCAD II (AutoLisp+Tuning)
55 AutoCAD III (3DGrak)
56 Grundlagen der Informauk
61 Visual Basic (Microso)
63 Windows und Oce
81 Linux
110 Best Of VoIP (CD)
111 All About VoIP (DVD)
191,192 Angewandte Informauk I + II
201,202 Word I+II
203 Excel
205,206 Access I+II
221 HTML
222 HTML und CSS
223 JavaScript,
227 VB.NET
231,232 Photoshop I+II
237, 238 Dreamweaver, Interakuve und ani
mierte Webseiten
Marn Weissenbck
Bestellhinweise, Download
http://www.adim.at/
http://adim.at/download/
http://www.adim.at/dateien/BESTELL.pdf
Impressum
Impressum, Oenlegung
Richtung Auf Anwendungen im Unterricht bezogene Informa
uonen ber Personal Computer Systeme. Berichte
ber Veranstaltungen des Herausgebers.
Erscheint 5 mal pro Jahr, Feb, Apr, Jun, Sep, Nov
Verleger PCNEWSEigenverlag
Siccardsburggasse 4/1/22 1100 Wien
06641015070 FAX: 0160099339210
pcnews@pcnews.at
http://www.pcnews.at/
Herausgeber ClubComputer
Siccardsburggasse 4/1/22 1100 Wien
01600993311 FAX: 12
office@clubcomputer.at
http://www.clubcomputer.at/
Druck Ultra Print
Pluhov 49, SK82103 Brauslava
http://www.ultraprint.eu/
Versand GZ 02Z031324
ClubComputer
Leitung, CCC
Werner Illsinger
016009933220 FAX: 9220
werner.illsinger@clubcomputer.at
http://illsinger.at/
http://illsinger.at/blog/
PCNEWS, PCC Franz Fiala
016009933210 FAX: 9210
franz.fiala@clubcomputer.at
http://franz.fiala.cc/
http://franz.fiala.cc/blogpcnews/
Markeng Ferdinand De Cassan
016009933230 FAX: 9230
ferdinand.de.cassan@clubcomputer.at
http://spielefest.at/
CC|Akademie Georg Tsamis
016009933250 FAX: 9250
georg.tsamis@clubcomputer.at
ClubPocketPC Paul Belcl
016009933288 FAX: 9288
paul.belcl@clubcomputer.at
http://www.belcl.at/
http://blog.belcl.at/
ClubDigitalHome Chrisan Haberl
016009933240 FAX: 9240
christian.haberl@clubcomputer.at
http://blog.this.at/
WebDesign Herbert Dobsak
012637275 FAX: 012691341
dobsak@ccc.or.at
http://www.dobsak.at/
Digitalfotograe Andreas Kunar
andreas.kunar@clubcomputer.at
http://www.fotocommunity.de/pc/account/
myprofile/16403
Linux Gnter Hartl
ClubComputerPortal: Guenter.Hartl
Konto BAWAGPSK
Konto: 17710812896 BLZ 14.000
lautend auf: ClubComputer
BIC: BAWAATWW IBAN: AT741400017710812896
Zugang Einwahl: 0804002222
DNS1/DNS2: 194.50.115.132 194.50.115.170
Alternauv: 213.129.226.2 213.129.226.2
Clublokal HTL, 1030 Wien, Rennweg 89b oder
Gasthaus Kulturschmankerl,
Simmeringer Hauptstrae 152, 1110
PCNEWS139
Kennzeichnung ISSN 10221611, GZ 02Z031324 M
Layout Microso Publisher 2013, GIMP, Inkscape
Herstellung Bogenoset, 80g
Erscheint Wien, Juni 2014
Texte http://pcnews.at/?id=PCN139
Kopien Fr den Unterricht oder andere nichtkommerzielle
Nutzung frei kopierbar. Fr gewerbliche Weiterver
wendung liegen die Nutzungsrechte beim jeweiligen
Autor. (Gilt auch fr alle am PCNEWSServer zugng
lichen Daten.)
Werbung A4: 1 Seite 522, EURO U2,3,4 782, EUR0
Beilage: bis 50g 138, EUR pro 1000 Stck
Bezug 1 He: 5, EURO (zuzglich Versand)
5 Hee: 20, EURO (1 Jahr, inklusive Versand)
kostenlos fr Mitglieder von ClubComputer
Hinweise Druckfehler und Irrtmer vorbehalten.
Alle erwhnten Produktnamen sind eingetragene
Warenzeichen der entsprechenden Erzeuger.
Autoren CC|Skripten
Berger Chrisan 2

Karikaturist und Comiczeichner fr Krntner Zeitungen
Firma Karicartoons
karicartoons@aon.at
http://www.bergercartoons.com/
Fiala Franz Dipl.Ing. 1948 1,20,25,26,33A

Leitung der Redakuon und des Verlags der PCNEWS,
Lehrer fr Nachrichtentechnik und Elektronik .i.R.
Werdegang BFPZArsenal, TGM Elektronik
Absolvent TUWien, Nachrichtentechnik
Privates verheiratet, 1 Kind
franz.fiala@clubcomputer.at http://fiala.cc/
MTMSysteme 3

Ing. Gerhard Muenthaler
Hadrawagasse 36 1220 Wien
012032814 FAX: 2021313 Handy. 06644305636
g.muttenthaler@mtm.at
http://www.mtm.at/
Produkte uC/uPEntwicklungswerkzeuge, Starterkits, Indust
riecomputer, Netzqualittsanalyzer, USVAnlagen
Vertretung Tasking, PLS, Inneon, TQComponents, Kontron,
DranetzBMI, Panasonic, Dr. Haag, HTItalia, Dr.
Kane
Erreichbar U1Kagran, 26A bis EnglischFeldGasse
Inserenten
Illsinger Werner Ing. 1968 29,30,31,32

Key Account Manager Financial Services bei Microsoft
sterreich, Prsident von ClubComputer
werner.illsinger@clubcomputer.at
http://www.illsinger.at/
Prochazka Andreas Ing. 1967 27

IT & SAP Development
Firma Wertheim GmbH
Club ClubComputer
Absolvent TGM, MB86
Hobbies Sport
office@propro.at
http://www.propro.at/
Tsamis Georg Dipl.Ing. 1950 29,30,31,32

Technische Dokumentation, bersetzung, Terminolo
gie, Technologie, Innovation. Direktor ClubComputer
Akademie
Firma VA TECH HYDRO
Absolvent TUWien
Hobbies Programmierung, Seminare, Doku, CC
Georg.tsamis@clubcomputer.at




5
Juni 2014 PCNEWS139
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Vermessung des Runden Leders
Franz Fiala
steht die vorliegende Ausgabe der PCNEWS
und ebenso der ganze nchste Fernsehmonat.
Vom 12. Juni bis 13. Juli wird jenes Land er
miuelt, das sich vier Jahre lang FuballWelt
meister nennen darf. Der Haken an der Sache:
wir sind nicht dabei. Das ist aber kein Grund,
Trbsal zu blasen. Es gibt ja immerhin noch die
Erinnerungen an eine glorreiche Vergangenheit
und die Honung, dass es wieder besser wird.
Am 23. April ernete das Rapideum (das Mu
seum des SK Rapid) eine Sonderausstellung fr
Alfred Krner, einem Giganten des sterreichi
schen Fuballs. 7facher Meister, Cupsieger,
WMDriuer 1954. Der Autor dure ihm eine
Datensammlung ber alle seine 384 Spiele, 180
Tore und verschiedene Zusammenfassungen
und Bilder berreichen. Nicht, dass sich der
Autor als Spezialist fr Fuball bezeichnen
dre aber die EDV ist eine universelle Disziplin,
die sich in allen anderen Fachgebieten ntzlich
machen kann.
Nehmen wir einmal das Titelbild, die wohl be
kannteste Version eines Fuballs, den so ge
nannten Fernsehball, den es seit den 60er
Jahren gibt, weil man die frheren braunen
Lederblle nur schwer im Fernsehen erkennen
konnte. Der Ball besteht aus 12 Fnfecken und
20 Sechsecken mit jeweils derselben Kantenln
ge. Er ist also eigentlich keine Kugel sondern ein
Polyeder., genauer ein Ikosaeder.
Whrend man frher Zeichenbreuer und Re
chenschieber bemhte, entwir man heute sol
che Zeichnungen am einfachsten mit einem
VektorZeichenprogramm, zum Beispiel mit
Inkscape. Inkscape hat eine hbsche Funkuon
zum Zeichnen von Vielecken. Zunchst werden
ein Fnfeck und ein Sechseck gezeichnet, dann
vom Fnfeck fnf und vom Sechseck neun Klone
hergestellt. Klone deshalb, weil es bei Form
und Farbnderungen gengt, die ursprngliche
Figur zu verndern und alle Klone sich gleicher
maen mitndern. Diese Figur ist aber erst eine
Ballhle. Fr einen ganzen Ball gruppiert man
die Figur und klont sie so o als man Ballhlen
benugt. Das Titelbild (und der Hintergrund
dieser Seite) besteht aus mehreren zusammen
gehngten Ballhlen.
Dieser Fernsehball ist aber nur mehr ein Symbol
fr Fuball. Bei jeder WM wird ein neuer Ball
mit immer besseren Eigenschaen produziert.
Der Ball zur WM 2014 heit brazuca und be
steht aus sechs idenuschen Segmenten. (siehe
Bild rechts oben).
Zurck zur WM, bei der wir ja leider nicht dabei
sind.
Was wissen wir ber unser Team? Hier ein paar
Fragen (und es gibt beliebige andere, interes
sante). Wie man zu den Antworten kommt, wird
im Anschluss erklrt. Einige dieser Fragen kann
man beantworten, indem man die Seite des FB
besucht, andere wieder wrden eine aufwndi
ge Recherche in den Daten zu den bisher 727
Lnderspielen erfordern.
Um Fragen nach Hugkeiten, wie sie im Fu
ball immer wieder gestellt werden, beantwor
ten zu knnen, benugt man eine Datenbank.
Ein ExcelSheet kann zwar auch Relauonen zwi
schen Tabellen herstellen aber das eigentliche
Instrument zur Darstellung solcher Daten sind
Datenbanken. Fuball ist ein sehr populres
Thema, prakusch jeder Zuseher fhlt sich kom
petent genug, es besser als der jeweilige Trainer
zu machen. Daher ist eine Fuballdatenbank
auch ohne groes Fachwissen fr alle verstnd
lich.
Fragen zum Thema
sterreichische Naonalmannscha
Hat unser Naonalmannscha eine posive
oder eine negave Bilanz?
Gibt es eigentlich mehr Heimspiele oder mehr
Auswrtsspiele?
Wie glorreich war eigentlich die ra der
beiden Wunderteams?
Wie o hat sterreich an einer WM teil
genommen?
Wie viele Spieler und von welchem Verein
nahmen an der WM1954 teil?
Wie viele Teamchefs hae die sterreichische
Naonalmannscha seit ihren Anfngen
1902?
Wer war der am lngsten amerende dieser
Teamchefs?
Wer war der erfolgreichste Teamchef?
Welche Leistung erbringt das Team unter der
Leitung von Marcel Koller?
Wer war der erfolgreichste Torschtze, wel
cher Spieler hae die meisten Einstze?
Welcher Verein stellte in der Geschichte der
sterreichischen Naonalmannscha die
meisten Spieler?
Wie gro ist heute der Anteil der Legionre
bei Spielen der Naonalmannscha? wie war
das frher?
Wie ist die Relaon der Spieler aus den Bun
deslndern zu den Spielern aus Wien?
Seit wann bertri der Anteil der Spieler aus
den BundeslnderVereinen den Anteil der
Spieler aus Wiener Vereinen?
Seit wann bertri der Anteil der Spieler
fremder Ligen den Anteil der Spieler aus der
sterreichischen Bundesliga?
Alle diese Fragen knnte man nach Durchsu
chen von Zeitungen oder Archiven nach einigem
Zeitaufwand beantworten. Aber mit Hilfe der
EDV geht das einfacher, vorausgesetzt, wir
huen die Daten, bestehend aus allen Spielen,
allen Spielern, allen Trainern und allen Toren
gespeichert. Diese Ausgabe der PCNEWS zeigt,
wie man es machen kann. Kein Lehrgang, nur
ein Rundgang. Die Beispieldatenbank, mit der
diese Fragen beantwortet werden, kann bei der
Webversion dieses Arukels downgeloadet wer
den. Das Projekt benutzt Microso Access zur
Auswertung von Daten.
Datenbankstruktur der Spiele der
sterreichischen Naonalmannscha
Grundlegendes
Wenn die Anwendung einmal mit Microso
Access ausreichend enuehlert ist, kann man
sie problemlos auf einen SQLServer porueren
und danach weiterhin mit dem vorhandenen
AccessFrontend bearbeiten. In einer weiteren
Ausbaustufe wird die Datenbank ber das Inter
net abgefragt werden knnen. Wir werden dazu
in einer spteren Ausgabe der PCNEWS berich
ten.
Im ersten Schriu nehmen wir einmal an, dass
wir uns diese Datenbankstruktur berlegt und
die einzelnen Tabellen mit Daten gefllt huen.
Vorweg, es wre eine ziemlich aufwndige Sa
che, diese Arbeiten hndisch durchzufhren.
Zur Illustrauon des Aufwandes sind in dem Da
tenbankdiagramm die Grenordnungen der
Tabellen angegeben. Im zweiten Teil dieses
Projekts Datamining wird daher beschrieben,
von wo die Daten geholt werden und wie diese
13.560 Datenstze in die jeweiligen Tabellen
kommen.
Schon allein diese TabellenDaten beantworten
einige staususche Fragen. Es gab seit 1902 727
Spiele bei denen 814 Spieler in 9180 Einstzen
eingesetzt worden sind. Ein Spieler kam daher
im Schniu auf etwa 11 Einstze. Ein Spieler
Datenstze Tabelle
727 Spiel
9180 Spieler-Spiel
1249 Spieler-Verein
1406 Tore
814 Spieler
184 Verein
13560
Datenbankstruktur
fr Spiele der ster
reichischen Fuball
Naonalmannscha




6
PCNEWS139 Juni 2014
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

spielte bei 1,5 Vereinen (frher weniger, heute
mehr).
Jede Tabelle verfgt ber eine eindeuuge ID
(die Tabelle Spiel sogar ber zwei: ID und
Spiel), einen so genannten Primrschlssel,
der im Diagramm mit einem Schlssel gekenn
zeichnet ist. In den meisten Fllen hat dieser
Primrschlssel den Typ Autowert, eine ganze
Zahl, beginnend bei 1. Dieser Schlssel wird von
der Datenbank selbstndig eingetragen und ist
immer eindeuug. Wird ein Datensatz gelscht,
verschwindet dieser Wert und wird nicht mehr
vergeben. Der Schlssel hat genau zwei Aufga
ben: er kennzeichnet einen Datensatz eindeuug
und er stellt eine Verbindung zu anderen Tabel
len her.
Die Werte dieses eindeuugen Primrschlssels
kommen auch in anderen Tabellen vor und
werden dort Fremdschlssel genannt.
Das Spiel 727 gegen Uruguay enthlt im eindeu
ugen Feld Spiel die Zahl 727. In der verbunde
nen Tabelle Spieler-Spiel steht im dorugen
Fremdschlssel Spiel die Zahl 727 so o als
Spieler bei diesem Spiel beteiligt waren. Das
folgende Bild zeigt in der blauen Zeile den Da
tensatz 727 der Tabelle Spiel und darunter in
einem Unterdatenblau alle Spieler der Tabelle
Spieler-Spiel, die in diesem Spiel zum Einsatz
kamen.
Man sieht, dass dort Spieler und ihr Verein ein
getragen sind.
Das Feld Spiel ist in der Tabelle Spiel einmal
enthalten (eindeuug, daher als Primrschlssel
verwendbar) und in der Tabelle Spieler-Spiel
so o enthalten als Spieler mitgespielt haben
(Fremdschlssel). Dieses eines zu viele wird
in der Grak mit 1 und dargestellt.
In Access gibt es neben 1:1 nur 1:n
Beziehungen, das heit, dass ein Element aus
der Tabelle mit dem Primrschlssel mehrfach
in der Tabelle mit dem Fremdschlssel enthal
ten sein kann. Das entspricht dem Fall, dass zu
einem Spiel mehrere Spieler angehren. Da
aber ein Spieler auch in mehreren Spielen teil
nehmen kann, muss die Beziehung eigentlich
n:m heien. Diese Beziehung kann man aber
nicht direkt realisieren. Man benugt dazu eine
Hilfstabelle. Im Beispiel ist es die Tabelle Spie-
ler-Spiel, in der es zwei Fremdschlsselfelder
gibt: einerseits zum Primrschlssel Spiel in
der Tabelle Spiel und anderseits zum Primr
schlssel ID_Spieler_Verein der Tabelle
Spieler_Verein.
Ein Spieler, der einem Verein angehrt (zum
Beispiel Franz Almer/Energie Cottbus) ist so o in der
Tabelle Spieler-Spiel vertreten als er in ei
nem Spiel beteiligt war und bei jedem dieser
Datenstze ist er einer anderen Spielnummer
Spiel zugeordnet; eine n:mBeziehung.
Unser Werkzeug, Microso Access 2013
Die Version ist nicht in erster Linie wichug. Auch
die OceVersionen 2010 oder 2007 erfllen
denselben Zweck. Wer aberso wie der Au
torein Oce 365Abo gekau hat, arbeitet
gemeinsam mit der ganzen Familie immer mit
der jeweils aktuellen Version.
Die Oberche von Access mit geladener ster
reichDatenbank prsenuert sich wie im Bild
oben.
Im linken Frame sieht man in Feuschri die
Tabellen und bei der Tabelle Spiel, die dazuge
hrigen Abfragen (Queries). Weiter unten sieht
man die anderen Tabellen (Spieler-Spiel,
Verein), jeweils ohne die Abfragen. Das ist ein
sehr bersichtliches Inhaltsverzeichnis. Wenn
sich eine konkrete Abfrage auf mehr als eine
Tabelle bezieht, scheint sie auch bei jeder Tabel
le auf.
Im Haupurame sehen wir die Spiele, beginnend
beim letzten Lnderspiel mit der Nummer 727
gegen Uruguay. Bei Spiel 710 gegen die Ukraine
wurde die verbundene Tabelle Tore aufge
klappt und wir sehen, wann die Tore gefallen
sind und wer die geschossen hat. Man erkennt,
dass nur die sterreicher in der Spielerdaten
bank erfasst sind, denn das Feld ID_Spieler ist
bei den Gegentoren leer.
Tabelle Spiel
Diese Tabelle enthlt alle Daten eines Spiels,
wie zum Beispiel die Saison, das Ergebnis, den
Trainer, den Spielort, das Stadion, die Zuschau
erzahl, den Schiedsrichter, die Anzahl der ge
schossenen und der kassierten Tore, den Geg
ner usw. Die folgenden Tabellenausschniue zei
gen das Ende (Spiel 716 bis 727) und den An
Access zeigt die Tabelle Spiel




7
Juni 2014 PCNEWS139
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

fang (Spiel 1 bis 10) der Tabelle Spiel. Auer
dem werden nur die Spalten bis Art dargestellt;
es gibt noch viele weitere Spalten.
Man sieht, dass der Standardgegner der ersten
Jahre des sterreichischen Fuballs die andere
Reichshle Ungarn war. Und gegen dieses
Ungarn haben wir nach wie vor eine ziemlich
negauve Gesamtbilanz und an der wird sich so
bald nichts ndern, weil diese groe Zahl der
Spiele mit den Nachbarlndern der Vergangen
heit angehrt.
Diese Tabelle kann man aus der Sicht der Da
tenmodellierung gleich heig kriusieren, denn
viele Angaben sind redundant. Eigentlich wrde
es gengen, die geschossenen und erhaltenen
Tore anzugeben. Daraus sieht man gleich, wer
gewonnen hat, daraus kann man das Spieler
gebnis 3:2 ableiten. Es gibt aber zum Beispiel
eine Spalte Sieg mit den mglichen Werten S,
U, N fr Sieg, Unentschieden und Niederlage, da
nach gibt es auch noch die Spalten Sieg, Un-
entschieden und Niederlage wobei jeweils
eine auf 1 gesetzt ist. Warum das? Der Grund
ist, damit man die Tabelle mglichst einfach
auswerten kann. Addiert man zum Beispiel die
Spalte Sieg, erhlt man automausch die Anzahl
der Siege, will man in einer Auswertung das
Ergebnis verwenden, gengt die Verwendung
des Feldes Ergebnis.
Diese Redundanz der Eintragungen ist fr die
sptere Auswertung prakusch, kann aber zu
Fehlern fhren, wenn die Eintragungen falsch
vorgenommen worden sind. Als Schutz gegen
Eingabefehler verwendet man ein Formular und
gibt daher die Werte nicht direkt in die Tabelle
ein. Dieses Formular enthlt nur das notwendi
ge Minimum der Daten, die redundanten Felder
werden durch ein Programm eingetragen, das
dem Formular zugeordnet ist und das beim
Speichern der Formulardaten automausch auf
gerufen wird. Zustzlich gibt es ein Prfpro
gramm, welches man bei nderungen aufru,
das alle diese Redundanzen auf Plausibilitt
berpr.
In dieser Tabelle Spiel knnen Angaben wie
Aufstellung, Spielerwechsel, Tore, Stammverei
ne der Spieler nicht dargestellt werden. Diese
zustzlichen Angaben stehen in weiteren Tabel
len, die mit Spiel ber Schlsselfeldern zu
sammenhngen.
Die Spiele der sterreichischen Nauonalmann
scha wurden vom FB seit 1902, dem Beginn
der Aufzeichnungen, fortlaufend, lckenlos und
eindeuug nummeriert. Daher eignet sich dieses
Feld Spiel zur Herstellung eines Zusammen
hangs zu den Toren eines Spiels und zu der
Mannschasaufstellung eines Spiels.
Tabelle Tore
Bei einem Tor wird erfasst: Minute, Spiel-
stand, Elfer, Freistotor, Eigentor. Die
Reihung ist eventuell von Nutzen, wenn bei
einem Spiel die Minutenangabe fehlt, damit
dann aufgrund dieses Feldes Reihung eine Rei
henfolge der Tore festgelegt werden kann. Das
Ja/NeinFeld TorA gibt an, ob es ein Tor ist, das
sterreich geschossen hat TorA=true oder
erhalten hat TorA=false.
Eigentlich ist damit das Tabellensystem bereits
berbesummt, denn die Anzahl der Tore steht
ja schon in der Tabelle Spiel. Es muss daher
diese Angabe ToreA und ToreG in Spiel mit
der Anzahl der Zeilen in der Tabelle Tore ber
einsummen. Damit Fehler ausgeschlossen wer
den, gibt es ein Programm, dass eventuelle
Ungereimtheiten zwischen den redundanten
Angaben aufzeigt.
Der Zusammenhang zwischen den Tabellen
Spiel einerseits und Spieler-Verein und
Tore anderseits wird am Spiel 710 sterreich
Ukraine in den beiden Bildern oben verdeut
licht. Man sieht in der blau hervorgehobenen
Zeile die Daten zum Spiel aus der Tabelle Spiel
und in einem Unterdatenblau einerseits die
Aufstellung und in einem anderen Unterdaten
blau die Tore, die in diesem Spiel geschossen
wurden.
Tabelle SpielerSpiel
Diese Tabelle Spieler-Spiel gibt an, welcher
Spieler, wie lange am Spiel beteiligt war. Es wird
aber nicht einfach der Spieler eingetragen, son
dern eine SpielerVereinKombinauon aus der
Tabelle Spieler-Verein. Diese Dierenzierung
erlaubt uns spter die Beurteilung der Herkun
der Spieler.
Wesentlich sind die Angaben vonMinute und
bisMinute. Dort steht normalerweise 0 und 90,
es kann aber bei Auswechslungen auch eine
andere Angabe dort stehen. Aufgrund dieser
Angaben kann man Spieler nden, die hug als
Joker verwendet werden und gemeinsam mit
der Tortabelle kann man herausnden, ob sie
dabei zu einem Torerfolg gekommen sind.
Beispiel: Wer waren die hugsten Joker der
Nauonalmannscha? Hier interessiert uns
nicht, bei welchem Verein dieser Spieler gerade
spielt.
Joker sind Spieler, die whrend des Spieles
einen anderen Spieler am Feld ersetzen. Fr
diese Spieler gilt also vonMinute>0. Wir gene
rieren eine Abfrage Spieler Joker
Keine Angst, man muss das nicht lernen
(zumindest nicht am Beginn, denn diese
Formel ist die schriliche Version folgender
grascher Abfrage. Man zieht aus dem Tabel
lenverzeichnis die benugten Tabellen auf das
Entwurfsfeld und zieht die gewnschten Felder
715...11 ausgeblendet
Anfang und Ende der Tabelle Spiel (oben)
Spiel sterreichUruguay und dazu
die aufgeklappte Detailtabelle
SpielerSpiel, die die Aufstellung fr
dieses Spiel zeigt. Man sieht, auch die
Einwechslungszeitpunkte und kann
dadurch die exakte Einsatzzeit besm
men.

Die Detailtabelle kann in den Eigen
schaen von SpielerSpiel zu Tore
getauscht werden. (siehe Bild auf der
vorigen Seite und nchstes Bild)
SQLAbfrage
SELECT Count(Spieler_Spiel.ID_Spieler_Spiel) AS Joker, Spieler.SpielerName AS Spieler
FROM Spieler INNER JOIN ([Spieler-Verein] INNER JOIN Spieler_Spiel ON [Spieler-
Verein].ID_Spieler_Verein = Spieler_Spiel.[ID_Spieler-Verein]) ON Spieler.ID_Spieler =
[Spieler-Verein].ID_Spieler
WHERE (((Spieler_Spiel.VonMinute)>0))
GROUP BY Spieler.SpielerName
ORDER BY Count(Spieler_Spiel.ID_Spieler_Spiel) DESC;




8
PCNEWS139 Juni 2014
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

in das Tabellenraster unten. Die SQLAbfrage
wird daraus von Access ermiuelt.
Die SQLAbfrage kann zur eindeuugen Doku
mentauon verwendet werden, auerdem ist sie
wertvoll, wenn man diese Auswertungen einem
Programm bertragen will.
Wir erhalten folgendes Ergebnis:
Das zeigt uns, dass diese Auswechslungen ein
Phnomen der jngeren Fuballgeschichte sind.
Was uns jetzt noch interessieren knnte, ist die
Anzahl der Treer, die diese Spiele erzielt ha
ben. Das Ergebnis ist nicht besonders aullig,
jedenfalls waren die Joker nicht in besonderer
Torlaune.
Tabelle SpielerVerein
Ein Spieler ist aber nicht einfach ein Name, also
zum Beispiel Polster Anton, sondern dieser Spieler
spielt im Laufe seiner Karriere bei vielen ver
schiedenen Vereinen. Bleiben wir bei dem Bei
spiel Polster, bei dem es besonders viele Stauo
nen waren: 1. Austria, 2. Turin, 3. Sevilla, 4. Logrones,
5. Rayo Vallecano, 6. Kln und am Ende 7. vereinslos.
Diese Angabe ist wichug, um zu wissen, wie sich
unsere Nauonalmannscha zusammensetzt,
von wo der Teamchef vorzugsweise die Spieler
einberu. Siehe dazu dann eine sptere Aus
wertung. Es gibt also nicht einen Polster sondern
deren sieben. Und um diesen Umstand darzu
stellen, wird in der Tabelle Spiel-Spieler
nicht der Spieler eingetragen sondern der Spie
ler, der in einem besummten Verein spielt. Und
dieser Zusammenhang steht in der Tabelle
Spieler-Verein. Diese Tabelle Spieler-
Verein verbindet einen konkreten Spieler mit
einem konkreten Verein.
Beispiel Anton Polster
Wenn man daher die Frage stellt, wann Anton
Poster wie o gespielt und dabei eben Einstze
bei der sterreichischen Nauonalmannscha
absolviert, muss man etwa so vorgehen.
Die einfache Frage nach den Vereinen eines
Spielers beantwortet die Datenbank. Man er
stellt eine Abfrage und fgt die Tabellen Spie-
ler-Verein, Spieler und Verein ein. Auf
grund der bereits eingetragenen Beziehungen
werden die Tabellen automausch mit den Be
ziehungsbndern 1 verbunden. Man
zieht die gewnschten Felder Spielername,
Land, Verein, Bundesland in die Spaltenan
sicht. Nach einem Klick auf Ausfhren erhlt
man die Liste der Vereine.
Diese Abfrage wird unter dem Namen Spieler
Vereine gespeichert.
Das ist schon sehr gut. Was man aber nicht
wei, ist die Reihenfolge der Stauonen und
auch nicht wie viele Spiele jeweils absolviert
worden sind.
Um auch diese Informauonen zu erhalten, ms
sen wir diese Abfrage um die Tabellen Spieler
-Spiel und Spiel ergnzen, weil dort dann
diese Informauonen enthalten sind. Auch inte
ressieren uns nicht primr die einzelnen Spiele
sondern nur die jeweiligen Zeitrume.
In der Abfrage werden die Funktionen akuviert,
die es erlauben, die Spalten einer Tabelle ein
fach nur zu gruppieren (Standardeinstellung)
SQLAbfrage
SELECT Spieler.SpielerName, Verein.Land, Verein.Verein, Verein.Bundesland
FROM Verein INNER JOIN (Spieler INNER JOIN [Spieler-Verein] ON Spieler.ID_Spieler =
[Spieler-Verein].ID_Spieler) ON Verein.ID_Verein = [Spieler-Verein].ID_Verein
WHERE (((Spieler.SpielerName) Like "Polster*"));




9
Juni 2014 PCNEWS139
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

oder aber auch gewisse Kennwerte der Spalte,
wie in diesem Fall Maximum und Minimum des Da
tums oder die Anzahl der Spiele zu berechnen.
Jetzt sehen wir also in der Tabelle rechts die
genauen Daten zur Karriere von Toni Polster bei
der sterreichischen Nauonalmannscha.
Das letzte Spiel, das er als Spieler ohne Verein
absolviert hat, war sein Abschiedsspiel gegen
den Iran, eines der ersten Lnderspiele, die ich
mit meinem Sohn besucht habe und das 5:1
gewonnen wurde.
Es wurden jetzt alle Tabellen vorgestellt und wir
knnen daran gehen, die eingangs gestellten
Fragen mit Hilfe dieser Tabellen zu beantwor
ten.
Hat unsere Naonalmannscha eine posive
oder eine negave Bilanz?
Diese Frage beantwortet uns auch die Seite des
FB, nebenstehend unsere eigene Auswertung:
sterreich hat also eine durchaus posiuve Bi
lanz. Bleibt die Frage, ob das nur durch die
guten Ergebnisse der Vergangenheit gegeben
ist oder auch noch heute der Fall ist.
Mit den Toren kann aber etwas nicht summen,
denn sterreich 1305 Tore geschossen und
1175 Tore kassiert und das wren dann insge
samt 2470 Tore und nicht wie in der Tabelle
Tore angegeben nur 1406 Tore(=1406 Datens
tze). Die Antwort auf diese Ungereimtheit ist
die die Art des Datamining, auf das spter noch
eingegangen wird. Die Daten stammen von PDF
Dokumenten des FB und in den ersten Jahren
wurden zu den Spielen nur die sterreichischen
Torschtzen vermerkt, spter dann auch die
Torminute und erst in den letzten Jahren wer
den auch die gegnerischen Tore in diese Tabelle
aufgenommen. Was daher summt, sind die
Tore von sterreich, die des Gegners sind in
dieser Tabelle Tore unvollstndig. Man knnte
sie aber leicht ergnzen, damit die rechnerische
Summe summt.
Aktuelle Ergebnisse werden gerne an der Ge
schichte gemessen. Im historischen Miuel
schauen die Ergebnisse so aus:
41% Siege
22% Unentschieden
38% Niederlagen
Wenn wir einen Sieg mit zwei Punkten und ein
Unentschieden mit einem Punkt bewerten, liegt
der Erfolg der Mannscha bei 52%.
(295*2+158*1)/(727*2) = 0,52
Es wurden im Schniu 1,8 Tore geschossen und
1,6 Tore kassiert.
Wenn also die Ergebnisse eines Trainers ber
diesem Schniu liegen, ist das schon ein beacht
liches Ergebnis; und Marcel Kollers Spiele liegen
deutlich ber diesem Wert!
Es wird gerne von glorreichen Zeiten ge
schwrmt und dabei werden o die Leistungen
der aktuellen Mannscha ungerechterweise
geschmlert, wie mir scheint. Die folgende
Rechnung versucht, die Leistung der gesamten
Geschichte des Nauonalmannscha darzustel
len.
Um diese Auswertung nicht unnug zu verkom
plizieren, teilen wir die gesamte FB
Geschichte des Nauonalteams einfach in Deka
den ein und untersuchen die Erfolge dieser
einzelnen Dekaden.
Die Tabelle ist zwar bereits ein Ergebnis aber
besonders lesbar ist es noch nicht. Wir verwen
den daher eine ExcelTabelle und werten die
Leistung innerhalb einer Dekade aus, indem wir
einen Sieg mit der Punktezahl 2 und ein Unent
schieden mit 1 bewerten und auf die Anzahl der
Spiele Siege Remis Niederlagen Tore A Tore Gegner
727 295 158 274 1305 1175
Spiel Bilanz Gesamt
SQLAbfrage Gesamtbilanz
SELECT Count(Spiel.ID) AS Spiele, Sum(Spiel.S) AS Siege, Sum(Spiel.U) AS Unentschieden,
Sum(Spiel.N) AS Niederlagen, Sum(Spiel.ToreA) AS [Tore sterreich], Sum(Spiel.ToreG) AS
[Tore Gegner] FROM Spiel;
Dekade Spiele Siege Remis Niederlagen Tore A Gegentore
19001909 6 3 1 2 16 12
19101919 32 12 6 14 58 71
19201929 63 28 13 22 136 113
19301939 69 41 14 14 197 98
19401949 25 10 6 9 55 56
19501959 62 27 10 25 150 123
19601969 78 31 13 34 130 144
19701979 60 19 17 24 77 83
19801989 86 41 18 27 130 95
19901999 78 22 20 36 100 125
20002009 89 38 22 29 152 125
20102019 79 23 19 37 104 120
Spiel Bilanz Dekade
SQLAbfrage Bilanz pro Dekade
SELECT CStr(Round(Year([Datum])/10)*10)+"-"+CStr(Round(Year([Datum])/10)*10+9) AS Deka-
de, Count(Spiel.ID) AS Spiele, Sum(Spiel.S) AS Siege, Sum(Spiel.U) AS Unentschieden,
Sum(Spiel.N) AS Niederlagen, Sum(Spiel.ToreA) AS [Tore sterreich], Sum(Spiel.ToreG) AS
[Tore Gegner] FROM Spiel
GROUP BY CStr(Round(Year([Datum])/10)*10)+"-"+CStr(Round(Year([Datum])/10)*10+9)
ORDER BY CStr(Round(Year([Datum])/10)*10)+"-"+CStr(Round(Year([Datum])/10)*10+9);




10
PCNEWS139 Juni 2014
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Spiele beziehen. Wir erhalten ein gut vergleich
bares Leistungsma. 100% bedeutet, dass alle
Spiele gewonnen wurden.
Um Platz zu sparen, wird die ExcelTabelle s-
terreich.xlsx gleich als Grak dargestellt. In
der Beilage zum He ist die ExcelDatei mit
zahlreichen weiteren Auswertungen verfgbar.
Das Wunderteam der 30er Jahre war auch ei
nes. Eine Siegquote von 70% und das gegen alle
groen Nauonen, das kann sich sehen lassen.
Hut ab vor Hugo Meisl! Aber die groen Erfolge
rund um die WM 1954 kann man in dieser Aus
wertung nicht sehen, weil eben 10 Jahre ein
langer Zeitraum sind. Die markanten Ergebnisse,
etwa ein 6:1 gegen Portugal bleiben im Ge
dchtnis aber es gab eben auch viele Niederla
gen, die den Leistungsmiuelwert in die 50%
Zone drcken.
Interessant ist das Leistungsmaximum der 80er
und 2000er Jahre.
Es wre informauv, wenn man diese mehr als
100jhrigen Geschichte etwas detaillierter
betrachten knnte. Es gibt daher auch eine
Auswertung pro Kalenderjahr, die einerseits
mehr Schwankungen enthlt aber einzelne be
sonders erfreuliche Jahre deutlicher heraus
streicht. Das Ergebnis dieser Auswertung ist
wieder ein in Excel eingespeistes Abfrageergeb
nis. (Die grasche Auswertung sieht man auf
dieser Seite unten.)
Die dnne blaue und ganz leicht abfallende
Gerade ist eine Trendlinie ber den gesamten
Zeitraum. Sie sagt, dass die Leistungsunterschie
de nicht ganz so gro sind, wie es einzelne posi
uve (oder negauve) Ergebnisse vermuten las
sen. Ein gleitender Miuelwert ber fnf Jahre
(punkuerte rote Linie) hil, die erfreulichen
Zeiten besser zu erkennen.
1920 und 1936, die ra des Wunderteams
und Hugo Meisl, WM 1934
1948 und 1955, die Zeit der WM1954
1970 bis 1983, die Zeit der WM 1978, 1982
1995 bis 2002, die Zeit der WM1998
Die WMTeilnahmen korrelieren daher mit Zei
ten grerer Leistungsfhigkeit.
Es wre noch interessant zu wissen, welche
Spieler zu diesem punktuellen Hoch 1996 beige
tragen haben, einem Jahr, in dem 92% aller
Spiele gewonnen wurden, mehr als es das Wun
derteam der 30er Jahre je zustande gebracht
hat. Teamchef war Herbert Prohaska, die Spiele
sind die Nummern von 562 bis einschlielich
567 und die Spieler ermiuelt man mit einer
Abfrage wie im Rahmen auf der Seite oben:
CernyTirol (2), FeiersingerSalzburg (3), Frstal
lerSalzburg (1), HerzogBayern Mnchen (3),
KoglerAdmira (1), KoglerAustria (2), Konrad
(Salzburg (1), KonselRapid (3), KhbauerRapid
(3), MarasekRapid (4), OgrisAustria (1), Pfeer
Austria (4), PfeifenbergerSalzburg (4), Polster
Kln (4), ProsenikSalzburg (1), RamuschGAK
(1), SchoppSturm (4), SchelRapid (3), Stger
Rapid (4), StumpfRapid (1), WetlSturm (1).
Aktuelle Lage
Derzeit ist Leistung steigend und knapp ber
der 50%Marke und daher durchaus im langjh
rigen Schniu. Wenn sich der aktuell steigende
Trend in den nchsten Jahren fortsetzt und wir
die 50%Leistungsmarken berschreiten, knn
te es wieder einmal fr die Qualikauon bei
einer WM oder EM reichen.
Randbedingungen
Man muss aber bei allen diesen Bewertungen
sehr aufpassen und die Zahl der Spiele, die zu
einem Saisonergebnis fhren, bercksichugen.
Mit geringerer Anzahl von Spielen, die einem
Miuelwert zugrunde liegen ist dieser auch we
niger aussagekrig. Denn im aulligen Jahr
1996 wurden nur sechs Lnderspiele gespielt.
Je geringer die Zahl der Spiele, desto weniger
unwahrscheinlich ist es, diese auch derart posi
uv zu absolvieren. Ganz deutlich zeigt das auch
das Jahr 1902 mit 100% Leistung. Toll, nicht?
Aber es gab auch nur ein Spiel!
Wir werden bei der Auswertung der Teamchefs
aber sehen, dass sich sterreich mit Marcel
Koller auf einem durchaus guten Weg bendet.
Gibt es eigentlich mehr Heimspiele oder mehr
Auswrtsspiele?
Diese Frage ist mit unserer Tabelle Spiel ganz
leicht zu beantworten, wir mssen nur die Ab
frage Spiel Bilanz Gesamt nach dem Feld
Heim gruppieren (Tabelle oben N: Neutral, Gro
ereignis wie WM, EM oder Olympische Spiele.)
Das Ergebnis zeigt zwei Dinge:
sterreich spielt deutlich mehr Spiele zu Hause
als auswrts; wir laden gern uns Gste ein.
Und das Wichuge: auswrts ist es wie auch
bei Klubmannschaen deutlich schwerer. Die
Auswrtsbilanz ist negauv und nur die deutlich
bessere Heimbilanz gibt dem Nauonalteam
insgesamt eine posiuve Gesamtbilanz.
(Grasche Auswertung in Balken und Torten
diagramm siehe Seite 16.)
Wie o hat sterreich an einer WM teilge
nommen?
1934, 1954, 1958, 1978, 1982, 1990, 1998
Diese Antwort bekommt man, indem man im
Feld Art in Spiele nach Weltmeisterschaft ltert.
Dann sieht man die Spiele, die bei einer Welt
meisterscha absolviert wurden. (Eine genaue
re Antwort fr alle Groveranstaltungen siehe
Kasten auf Seite 15.)
Wie viele Spieler und von welchem Verein
nahmen an der WM1954 teil?
Zur WM 1954 gehren die Spiele 250 bis 254.
Das erfhrt man aus der Auswertung der vori
gen Frage. Die Spieler erfhrt man durch leichte
nderung der Frage nach den Spielern 1996
(siehe Abfrage auf diese Seite oben):
BarschandtSportklub (2), HanappiRapid (3),
HappelRapid (3), KollerVienna (3), KrnerA.
Rapid (3), KrnerR.Rapid (3), OcwirkAustria
(3), ProbstRapid (3), SchlegerAustria (1),
SchmiedVienna (2), StojaspalAustria (3),
ZemanRapid (1), Wagner3Wacker (3).
Wie viele Teamchefs hae die sterreichische
Naonalmannscha seit ihren Anfngen
1902?

Und erhalten 37 Namen. Die erste leere Zeile
betrim jene Spiele, fr die der damalige Team
chef unbekannt ist, das Feld Teamchef also leer
ist.
Teamchefs in alphabeuscher Reihenfolge
(manchmal auch mehrere gleichzeiug im Team):
, Alfred Frey, Franz Putzendoppler, Josef Mol
zer, Egon Selzer; Alfred Riedl; Branko Elsner;
Dietmar Constanni; Dionys Schnecker; Edi
Bauer; Edi Frhwirth; Erich Hof; Ernst Happel;
Erwin Alge, Johann Pesser; Felix Latzke, Georg
Schmidt; Franz Putzendoppler, Edi Frhwirt,
Arthur Kolisch; Hans Kaulich; Hans Krankl; Hein
rich Retschury; Helmut Senekowitsch; Herbert
Prochaska; Hugo Meisl; Jimmy Hogan; Josef
Argauer, Josef Molzer; Josef Hickersberger; Josef
Molzer; Josef Walter, Bela Gutmann; Karel Br
ckner; Karl Decker; Karl Geyer; Karl Stotz; Karl
Zankl; Leopold Stastny; Marcel Koller; Oo Ba
ric; Robert Lang; Walter Nausch; Wilhelm
Schmieger; Willi Ruensteiner; Willi Ruenstei
ner, Andreas Herzog, Zlatko Kovacic.
SELECT Spiel.Teamchef
FROM Spiel
GROUP BY Spiel.Teamchef
ORDER BY Spiel.Teamchef;
Ermilung der Spieler und deren Verein fr ein Spiel oder eine Folge von Spielen
SELECT [FName]+"("+[Verein]+")" AS [Spieler/Verein], Count(Spieler_Spiel.ID_Spieler_Spiel) AS Einstze
FROM Spieler INNER JOIN (Verein INNER JOIN ([Spieler-Verein] INNER JOIN Spieler_Spiel ON [Spieler-
Verein].ID_Spieler_Verein = Spieler_Spiel.[ID_Spieler-Verein]) ON Verein.ID_Verein = [Spieler-Verein].ID_Verein) ON
Spieler.ID_Spieler = [Spieler-Verein].ID_Spieler
WHERE (((Spieler_Spiel.Spiel)>562 And (Spieler_Spiel.Spiel)<567)) // 1996 oder
WHERE (((Spieler_Spiel.Spiel)>250 And (Spieler_Spiel.Spiel)<254)) // WM-1954
GROUP BY [FName]+" ("+[Verein]+")"
ORDER BY [FName]+" ("+[Verein]+")";
Heim und Auswrtsbilanz
SELECT Spiel.Heim, Count(Spiel.ID) AS Spiele, Sum(Spiel.S) AS Siege, Sum(Spiel.U) AS Unentschieden, Sum(Spiel.N) AS
Niederlagen, Sum(Spiel.ToreA) AS [Tore sterreich], Sum(Spiel.ToreG) AS [Tore Gegner]
FROM Spiel
GROUP BY Spiel.Heim
ORDER BY Spiel.Heim;
A: Auswrts, H:Heim, N: Neutral (Groveranstaltungen)
Auswrts
Heim
Neutral




11
Juni 2014 PCNEWS139
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Was knnen wir ber die Amtszeit und ber
die Leistung der Naonalmannscha unter
diesen Teamchefs sagen?
Wenn es darum geht, die Leistung dieser
Epochen zu bewerten, benugen wir weitere
Angaben: die Anzahl der Spiele (damit erfahren
wir, welcher Teamchef die meisten Spiele be
treut hat), den Zeitraum (damit wrden wir den
am lngsten amuerenden Teamchef nden),
die Leistungsdaten (Siege, Unentschieden, Nie
derlagen, Tore). Als Erstes erstellen wir diese
Leistungstabelle und schrnken gleich insofern
ein, als wir nur jene Teamchefs in die Bewer
tung einbeziehen wollen, die mindestens 10
Spiele bestriuen haben, weil krzere Beobach
tungszeitrume o zu berraschenden Ausrei
ern fhren.
Beispiel (war tatschlich einmal der Fall): Ein
Teamchef, der das Team einmal anfhrt und
dabei gewinnt, wrde in einem Ranking die
unangefochtene Nummer eins sein, da er eben
100% seine Spiele gewonnen hat.
Daher benutzt die folgende Abfrage die Ein
schrnkung auf mindestens 10 Spiele. Das Er
gebnis sieht man in der nebenstehenden Tabel
le.
SELECT Spiel.Teamchef, Min(Spiel.Datum)
AS Von, Max(Spiel.Datum) AS Bis, Count
(Spiel.ID) AS Spiele, Sum(Spiel.S) AS
Siege, Sum(Spiel.U) AS Unentschieden,
Sum(Spiel.N) AS Niederlagen, Sum
(Spiel.ToreA) AS [Tore sterreich], Sum
(Spiel.ToreG) AS [Tore Gegner]
FROM Spiel
GROUP BY Spiel.Teamchef
HAVING (((Count(Spiel.ID))>=10))
ORDER BY Count(Spiel.ID) DESC;
Wir wissen jetzt, dass Hugo Meisl in einem
Zeitraum von 24 Jahren die meisten Spiele be
striuen hat, gefolgt von Josef Hickersberger und
Herbert Prohaska. Durch die Verlngerung der
Amtszeit von Marcel Koller wird auch dieser in
die Region der LangzeitTeamchefs vorrcken.
Fr einen Leistungsvergleich braucht man aber
ein eindeuuges Leistungsma. Dazu speisen wir
die Daten wieder in eine ExcelTabelle ein und
berechnen die prozentuale (also auf die Anzahl
der mglichen Punkte bezogene) Leistung
(=erreichte Punktezahl, Sieg=2 Punkte) fr die
zusammengefassten (gruppierten) Spiele.
Das ergibt immerhin ein berraschendes Ergeb
nis. Karl Stotz rangiert in dieser Balkengrak am
ersten Platz, noch vor der ra des Hugo Meisl.
Marcel Koller liegt im guten Miuelfeld und hat
bereits prominente Vorgnger hinter sich gelas
sen. Er liegt auf gleicher Hhe wie Walter
Nausch, dem Trainer der WM1954.
Der unbeschriete Balken fasst alle Spiele mit
unbekannter Betreuung zusammen.
Dass Hugo Meisl dieses Ranking trotz der ra
des Wunderteams nicht deutlicher anfhrt,
liegt an dem beraus langen Zeitraum seiner
Karriere als Teamchef. In diese lange Periode
fallen natrlich nicht nur glnzende Erfolge
sondern auch viele Niederlagen, die vor dieser
Wunderteamra der 30er Jahre liegen. Miuel
werte tun das, was im Wort steckt: sie miueln
extreme Werte aus, sowohl extrem posiuve als
auch extrem negauve.
Spiel Bilanz Teamchef
Teamchef Von Bis Spiele S U N Tore
A
Tore
Gegner
Hugo Meisl 15.06.1913 24.01.1937 132 70 30 32 338 209
Josef Hickersberger 05.02.1988 16.06.2008 56 15 16 25 65 78
Herbert Prohaska 10.03.1993 27.03.1999 51 25 9 17 96 73
Leopold Stastny 16.06.1968 24.09.1975 49 15 16 18 58 62
Walter Nausch 03.10.1948 14.11.1954 47 21 10 16 119 87
Karl Decker 19.11.1958 14.12.1963 36 16 3 17 60 67
Hans Krankl 27.03.2002 07.09.2005 31 10 10 11 47 46
Helmut Senekowitsch 28.04.1976 21.06.1978 26 14 4 8 40 26
Dietmar Constanuni 16.10.1991 06.09.2011 26 7 4 15 31 46
Karl Stotz 30.08.1978 11.11.1981 24 13 6 5 43 25
Ouo Baric 28.04.1999 14.11.2001 22 7 6 9 31 35
Marcel Koller 15.11.2011 05.03.2014 20 9 4 7 32 23
Branko Elsner 15.10.1975 18.11.1987 20 6 5 9 26 31
Josef Argauer, Josef Molzer
02.05.1956 15.06.1958 18 7 6 5 37 28
Heinrich Retschury 01.10.1916 24.10.1937 17 5 3 9 30 38
Erich Hof 22.09.1982 14.11.1984 15 6 3 6 22 20
Edi Frhwirth 24.03.1965 30.10.1966 15 4 3 8 12 23
Edi Bauer 06.12.1945 09.11.1947 11 4 0 7 26 28
Fuball beherrscht den Teil im Hirn des Mannes, der sich weigert, erwachsen zu werden. (Sir Peter Usnov)
sterreich wird bis sptestens 2006 FuballWeltmeister. (Frank Stronach 1998 in einem SpiegelInterview)
Das meiste, was ich vom Leben wei, verdanke ich dem Fuball. (Albert Camus)
Fuball ist Ding, Dang, Dong. Es gibt nicht nur Ding. (Giovanni Trapaoni)




12
PCNEWS139 Juni 2014
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Bilanz gegenber den beliebtesten Gegnern
Da der Gegner bei jedem Datensatz der Tabelle
Spiel eingetragen ist, gengt eine einfache
Abfrage der Tabelle Spiel mit der Einschrn
kung, dass wir nur Gegner bercksichugen,
gegen die mindestens 10 Mal gespielt wurde.
Die absteigende Soruerung nach der Anzahl
der Spiele zeigt uns den Lieblingsgegner.
Der grasche AbfrageEntwurf zeigt nicht alle
Felder der Abfrage, rechts sind einige der betei
ligten Felder nicht angezeigt.
Die SQLVersion dieser Abfrage (mit allen Fel
dern) sieht man unter der Tabelle der Ergebnis
se.
Die groe Zahl der Lnderspiele gegen Ungarn
(Tabelle rechts) wird wohl nicht mehr ber
troen werden auch werden wir diese negauve
Bilanz auch nicht mehr ausgleichen knnen.
Dazu hat sich die FuballWelt zu sehr vern
dert; es gibt zu wenige Spiele gegen Ungarn.
Die Auswertung mit Excel wurde so getroen,
dass zwischen posiuven und negauven Leis
tungsbilanzen leicht unterschieden werden
kann (Grak unten).
Gegner Von Bis Spiele S U N Tore Aus. Tore Geg.
Ungarn 12.10.1902 16.08.2006 136 40 30 66 252 297
Schweiz 23.12.1917 11.08.2010 41 25 5 11 104 59
Deutschland 07.06.1908 06.09.2013 39 8 6 25 55 89
Italien 03.07.1912 20.08.2008 37 13 8 16 57 47
CSSR 24.05.1925 19.08.1992 36 8 11 17 53 69
Schweden 27.03.1921 11.10.2013 33 16 5 12 49 50
Frankreich 19.04.1925 14.10.2009 23 9 2 12 40 39
Schouland 16.05.1931 30.05.2007 20 8 6 6 33 25
England 06.06.1908 16.11.2007 18 4 5 9 27 48
Niederlande 30.06.1912 09.02.2011 18 6 4 8 24 34
Jugoslawien 10.02.1924 13.11.1991 18 6 4 8 38 39
Spanien 21.12.1924 18.11.2009 16 4 3 9 22 43
Trkei 30.05.1948 15.08.2012 15 8 1 6 17 20
UDSSR 11.06.1958 06.09.1989 15 4 4 7 14 20
Belgien 13.12.1925 25.03.2011 14 9 3 2 41 18
Irland 07.05.1952 10.09.2013 14 9 3 2 36 17
Griechenland 04.10.1967 14.08.2013 12 3 5 4 16 19
Norwegen 01.07.1912 20.11.2002 10 7 1 2 21 8
Portugal 26.01.1936 11.10.1995 10 3 5 2 19 11
Finnland 31.07.1921 29.02.2012 10 8 1 1 23 10
SELECT Count(Spiel.ID) AS Spiele, Spiel.Gegner, Min(Spiel.Datum) AS Von, Max
(Spiel.Datum) AS Bis, Sum(Spiel.S) AS Siege, Sum(Spiel.U) AS Unentschieden, Sum
(Spiel.N) AS Niederlagen, Sum(Spiel.ToreA) AS [Tore sterreich], Sum(Spiel.ToreG)
AS [Tore Gegner]
FROM Spiel
GROUP BY Spiel.Gegner
HAVING (((Count(Spiel.ID))>=10))
ORDER BY Count(Spiel.ID) DESC;




13
Juni 2014 PCNEWS139
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Wer war der erfolgreichste Torschtze, welcher Spieler hae die meisten Einstze?
Diese Frage beantworten wir mit einem Ranking aller Torschtzen. Der folgende grasche
AbfrageEntwurf zeigt oben die beiden beteiligten Tabellen, darunter das benutze Feld Spie-
lerName sowie die Anzahl der Tore, die dieser Spieler erzielt hat als Anzahl der Datenstze.
Dieser grasche Entwurf liefert die folgende SQLAbfrage Tore pro Spieler mit dem Ergebnis der Tabelle rechts oben.
SELECT Spieler.SpielerName AS Spieler, Count(Tore.ID) AS Tore
FROM Spieler INNER JOIN Tore ON Spieler.ID_Spieler = Tore.ID_Spieler
GROUP BY Spieler.SpielerName
ORDER BY Count(Tore.ID) DESC;
In dieser Tabelle wurden nur die Spieler mit mehr als 10 Toren angefhrt. Unangefochtener Spitzenreiter ist Anton Polster. Diese AccessTabelle
wurde in eine ExcelTabelle kopiert und als Balkengrak (nchste Seite, oben links) dargestellt.
Man fragt sich, warum so berhmte Strmer wie Franz Binder in dieser Liste nur im Miuelfeld rangieren. Der Grund ist, dass es in den sieben Saiso
nen zwischen 1938 und 1945 keine Einstze in der sterreichischen Nauonalmannscha gab und er in dieser Disziplin auch nicht punkten konnte.
Diese Tabelle der besten Torschtzen enthlt eine sehr verbreitet aber unschne Eigenscha publizierter Stausuken. Diese Grak der Anzahl der
Tore verschweigt, in welchem Zeitraum diese Tore gefallen sind. Daher mssen wir genau genommen diese geschossenen Tore auf die Anzahl der
Spiele normieren und erhalten dann die Tore, die ein Spieler pro Spiel erzielt hat.
Dazu speisen wir die Abfrage Tore pro Spieler in eine weitere Abfrage ein, die uns dann diese Auskun gibt:
SELECT [Tore pro Spieler].Spieler, [Tore pro Spieler].Tore, Count(Spieler_Spiel.ID_Spieler_Spiel) AS Anzahl-
vonID_Spieler_Spiel
FROM [Tore pro Spieler] INNER JOIN ([Spieler-Verein] INNER JOIN Spieler_Spiel ON [Spieler-Verein].ID_Spieler_Verein = Spie-
ler_Spiel.[ID_Spieler-Verein]) ON [Tore pro Spieler].ID_Spieler = [Spieler-Verein].ID_Spieler
GROUP BY [Tore pro Spieler].Spieler, [Tore pro Spieler].Tore
ORDER BY [Tore pro Spieler].Tore DESC;
Mit dieser Abfrage erhalten wir gleichzeiug mit den Toren auch die Gesamtzahl der Einstze und knnen damit wieder eine ExcelTabelle fllen und
auswerten. Das ergibt nun eine ganz andere Reihung und zeigt uns, wie ezient die Torschtzen waren (siehe Balkengrak nchste Seite oben
rechts).
Spitzenreiter in der Disziplin der Ezienz war WeselikRapid, der in jedem seiner 11 Einstze zwischen 1927 und 1933 ein Tor geschossen hat, im
ersten Spiel sogar 3. Daher ist seine Torquote grer als 1. Hier liegt Toni Polster im Miuelfeld etwa wie Marc Janko. Franz Binder rckt in dieser
Darstellung sehr weit nach vorne.

Anmerkung: Auch die FBSeite gibt eine Torschtzenliste an, die von der obigen geringfgig abweicht. Kein Zweifel, irgendwo
ist beim Import der Daten ein Tor von Anton Polster (wahrscheinlich durch einen Tippfehler) verloren gegangen und wurden
auch Erich Hof einige Tore aberkannt. Diese Fehler werden bei Gelegenheit in der Datenbank der Webversion beseiugt, natr
lich nur, wenn der Fehler gefunden werden kann.
Polster 43
Krankl 34
Horvath 29
Schall 27
Herzog 26
Sindelar 26
Zischek 24
Hof 24
Schachner 23
Wagner3 22
Decker 19
Probst 18
Studnicka 18
Swatosch 18
Wessely 17
JankoMarc 17
Melchior 16
Binder 16
Nemec 16
Tore pro Spieler
Stger 15
Jara 15
Stojaspal 14
Bican 14
Vasuc 14
Kuthan 14
Weselik 13
Bauer 13
Huber 12
Ivanschitz 12
Wieser 12
OgrisA. 12
Hanappi 12
Dienst 12
Gschweidl 12
Aumauser 12
Harnik 10
Prohaska 10
Krner 10
Kreuz 10




14
PCNEWS139 Juni 2014
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Wie gro ist heute der Anteil der Legionre bei Spielen der Naonalmannscha, wie war das frher?
Legionre gibt es seit den Anfngen des Fuballs. Allerdings kamen sie damals, in der Monarchie, aus dem heuugen Tschechien, das zur sterrei
chischen Reichshle gezhlt wurde. Diese Spieler waren damals Inlnder. Ihre damaligen Vereine (vorwiegend DFC Prag) werden in den Vereinsta
bellen als Ausland gefhrt, daher scheinen diese Spieler in der Auswertung als Legionre auf.
Der Legionrsanteil steigt seit 1968 konunuierlich an und erreichte 1980 erstmals die 50%Marke.
Heute liegt der Anteil der Legionre zwischen 70 und 80 Prozent.
Wie ist die Relaon der Spieler aus den Bundelndern zu den Spielern aus Wien?
Bis in die Miue der 50er Jahre waren prakusch alle Spieler der Nauonalmannscha Wiener. Dann aber, in der 60er und 70er Jahren nahm der Anteil
der Spieler von Bundeslndervereinen stark zu und erreichte 1970 erstmals 50%. Dieser Anteil ging in den 80er Jahren wieder zurck, sueg in den
90er Jahren wieder an. Heute ist der Anteil der Spieler aus sterreich generell gering.
Diese Fragen knnen durch eine einzige Grak zusammengefasst werden:
Um diese Grak erstellen zu knnen, sind zwei Abfragen und auch ein VisualBasicProgramm nug.
Eine Abfrage ermiuelt die Spiele pro Saison, eine weitere ermiuelt Spielerherkunft pro Saison und gruppiert die Spieler nach ihrer Herkun
(Wien, Bundeslnder, Land). Die Prozedur SpielerHerkunft verbindet diese beiden Abfragen zu einer Tabelle. Diese Tabelle wird in Excel impor
uert, die prozentualen Werte berechnet und in der Grak dargestellt.
Spiele Bilanz Saison
SELECT Spiel.Saison, Count(Spiel.ID) AS Spiele, Sum(Spiel.S) AS Siege, Sum(Spiel.U) AS Unentschieden, Sum(Spiel.N) AS Nieder-
lagen, Sum(Spiel.ToreA) AS [Tore sterreich], Sum(Spiel.ToreG) AS [Tore Gegner]
FROM Spiel
GROUP BY Spiel.Saison
ORDER BY Spiel.Saison;
Spielerherkun pro Saison
SELECT Spiel.Saison, Count([Spieler-Verein].ID_Spieler_Verein) AS Spielerzahl, Verein.Land, Verein.Bundesland
FROM Verein INNER JOIN (Spiel INNER JOIN (Spieler INNER JOIN ([Spieler-Verein] INNER JOIN Spieler_Spiel ON [Spieler-
Verein].ID_Spieler_Verein = Spieler_Spiel.[ID_Spieler-Verein]) ON Spieler.ID_Spieler = [Spieler-Verein].ID_Spieler) ON
Spiel.Spiel = Spieler_Spiel.Spiel) ON Verein.ID_Verein = [Spieler-Verein].ID_Verein
GROUP BY Spiel.Saison, Verein.Land, Verein.Bundesland
ORDER BY Spiel.Saison, Verein.Land, Verein.Bundesland;
Warum benugt man in diesem Fall ein Programm, um das gewnschte Ergebnis zu erzielen? Der Grund ist, dass die Abfrage Spielerherkunft pro
Saison wegen der Gruppierung nach Saison, Land und Bundesland fr jede Saison mehrere Datenstze generiert, die durch das Programm in
einer einzigen (Excelkompaublen) Tabelle mit je einer Spalte fr Spieler aus sterreich, Spieler aus Wien, aus den Bundelndern und aus dem Aus
land herstellt. Diese Seite zeigt sowohl das Visual BasicProgramm als auch die Auswertung der entstandenen Tabelle in einer Grak. Man sieht in
dem Programm, wie die in der Abfrage fehlenden Kriegsjahre 1915 und 19381945 in die Ergebnistabelle eingebaut werden. Die Variablen G, A, W,
B, I stehen fr Gesamt, sterreich, Wien, Bundesland und Internaonal (Legionr).




15
Juni 2014 PCNEWS139
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Public Sub SpielerHerkunft()
Dim Rs_Herkunft, Rs_Spiele As Recordset
Set Rs_Herkunft = CurrentDb.OpenRecordset("Spielerherkunft pro Saison")
Set Rs_Spiele = CurrentDb.OpenRecordset("Spiel Bilanz Saison")
Dim Season, SeasonOld As String
SeasonOld = Rs_Herkunft("Saison")
Dim G, A, B, I, W As Integer
Dim Spiele As Integer
G = 0
A = 0
B = 0
I = 0
W = 0
Do While Not Rs_Herkunft.EOF
Season = Rs_Herkunft("Saison")
Spiele = Rs_Spiele("Spiele")
If Season <> SeasonOld Then
Dim iSeason, iSeasonOld As Integer
Debug.Print SeasonOld, Spiele, G, A, W, B, I
G = 0
A = 0
B = 0
I = 0
W = 0
iSeason = CInt(Left(Season, 4))
iSeasonOld = CInt(Left(SeasonOld, 4))
If iSeason > iSeasonOld + 1 Then
If iSeason = iSeasonOld + 2 Then '1905/06 kein Spiel
Debug.Print "1905/06", 0, 0, 0, 0, 0, 0
Else 'Kriegsjahre
Debug.Print "1938/39", 0, 0, 0, 0, 0, 0
Debug.Print "1939/40", 0, 0, 0, 0, 0, 0
Debug.Print "1940/41", 0, 0, 0, 0, 0, 0
Debug.Print "1941/42", 0, 0, 0, 0, 0, 0
Debug.Print "1942/43", 0, 0, 0, 0, 0, 0
Debug.Print "1943/44", 0, 0, 0, 0, 0, 0
Debug.Print "1944/45", 0, 0, 0, 0, 0, 0
End If
End If
SeasonOld = Season
Rs_Spiele.MoveNext
End If
Dim Spielerzahl As Integer
Spielerzahl = Rs_Herkunft("Spielerzahl")
Select Case Rs_Herkunft("Land")
Case "A"
Select Case Rs_Herkunft("Bundesland")
Case "W"
W = W + Spielerzahl
Case Else
B = B + Spielerzahl
End Select
A = A + Spielerzahl
Case Else
I = I + Spielerzahl
End Select
G = G + Spielerzahl
Rs_Herkunft.MoveNext
Loop
Debug.Print SeasonOld, Spiele, G, A, W, B, I
Rs_Herkunft.Close
Rs_Spiele.Close
End Sub
Teilnahmen an Groveranstaltungen
1912 Olympia
1934 WMQualikauon
1934 Weltmeisterscha
1936 Olympia (diese Spiele fehlen
leider bei den FBSeiten)
1937 WMQualikauon
1948 Olympia
1953 WMQualikauon
1954 Weltmeisterscha
1956/57 WMQualikauon
1958/59 Weltmeisterscha
1960 EC der Nauonen
1963 EC der Nauonen
1965 WMQualikauon
1966/67 EMQualikauon
1968/69 WMQualikauon
1970/71 EMQualikauon
1972/73 WMQualikauon
1974/75 EMQualikauon
1976/77 WMQualikauon
1978 Weltmeisterscha
1978/79 EMQualikauon
1980/81 WMQualikauon
1982 Weltmeisterscha
1982/83 EMQualikauon
1984/85 WMQualikauon
1986/87 EMQualikauon
1988/89 WMQualikauon
1990 Weltmeisterscha
1990/91 EMQualikauon
1992/93 WMQualikauon
1994/95 EMQualikauon
1996/97 WMQualikauon
1998 Weltmeisterscha
1998/99 EMQualikauon
2000/01 WMQualikauon
2002/03 EMQualikauon
2004/05 WMQualikauon
2008 Europameisterscha
2008/09 WMQualikauon
2010/11 EMQualikauon
2012/13 WMQualikauon




16
PCNEWS139 Juni 2014
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Welcher Verein stellte in der Geschichte der sterreichischen Nao
nalmannscha die meisten Spieler?
Der grasche AbfrageEntwurf:
Liefert folgende SQLAbfrage
SELECT Count([Spieler-Verein].ID_Spieler_Verein) AS Spieler-
zahl, Verein.Land, Verein.Bundesland, Verein.Verein
FROM Verein INNER JOIN (Spiel INNER JOIN (Spieler INNER JOIN
([Spieler-Verein] INNER JOIN Spieler_Spiel ON [Spieler-
Verein].ID_Spieler_Verein = Spieler_Spiel.[ID_Spieler-
Verein]) ON Spieler.ID_Spieler = [Spieler-Verein].ID_Spieler)
ON Spiel.Spiel = Spieler_Spiel.Spiel) ON Verein.ID_Verein =
[Spieler-Verein].ID_Verein
GROUP BY Verein.Land, Verein.Bundesland, Verein.Verein
ORDER BY Verein.Land, Verein.Bundesland;
Diese Abfrage ergibt ausgefhrt die Tabelle rechts oben. Dargestellt sind
nur jene Vereine, deren Spieler mehr als 100 Mal eingesetzt worden
sind. Die Tabelle erfordert aber eine kleine Korrektur, denn blicher
weise zhlt man die Amateure als VorluferVerein der Austria und
daher wre die Austria mit 1782 knapp an erster Stelle der Einstze fr
die Nauonalmannscha. Schmerzlich fr siegverwhnte Rapidler, aber
die Zahlen sind unerbiulich, speziell die Miuelwerte.
Beschrnken wir den Zeitraum auf die Saisonen ab 2000/01, muss die
Zeile
WHERE (((Spiel.Saison)>="2000/01"))
Vor GROUP BY eingesetzt werden.
Wir erhalten im Bild rechts mie ein mehr internauonales Bild aber noch
immer fhren die Wiener Klubs die Liste an.
In der jngsten Zeit mit Marcel Koller als Teamchef ab 2011/12 ergibt
sich durch die Einschrnkung
WHERE (((Spiel.Saison)>="2011/12"))
das Bild rechts unten:
Nur mehr Austria, Rapid und Salzburg nden sich in der Liste, sonst n
det man nur Legionre.
Stammvereine der Spieler der sterreichischen Naonalmannscha
seit 1902
Stammvereine der Spieler der sterreichischen Naonalmannscha
seit 2000
Stammvereine der Spieler der sterreichischen Naonalmannscha
seit 2011/12 (ra Marcel Koller)
Ergebnisse der sterreichischen Naonalmannscha seit 1902
ein knapp posives Ergebnis, dank einer guten Heimbilanz




17
Juni 2014 PCNEWS139
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Serien
Bei der Beurteilung einer Mannscha werden
gerne Serien aufgezhlt, die dann bei einem
konkreten Spiel prolongiert werden oder eben
zu Ende gehen. Derzeit etwa ist unsere Nauonal
mannscha seit drei Spielen unbesiegt (Frer
3:0, USA, 1:0, Uruguay 1:1). Die Frage ist, wie
das historisch ausschaut, wann also besonders
aullige Serien zu verzeichnen waren.
Solche Fragestellungen knnen durch einfache
Abfragen nicht beantwortet werden, man
braucht Programme dazu. Die Prozedur, die
solche lngsten Serien auswertet, wurde Zeit-
reihen genannt. Die Prozedur ermiuelt die
lngsten Serien bei Heimspielen, Auswrtsspie
len und Heim und Auswrtsspielen. Es be
summt die lngste Siegesserie, die lngste Serie
ohne Niederlage, die lngste Unentschieden
Serie, die lngste Serie ohne Sieg, die lngste
Niederlagenserie, beantwortet also fnf solcher
Fragen.
Die nebenstehende Tabelle zeigt die lngsten
Serien fr Heim und Auswrtsspiele.
Das Programm auf der folgenden Seite bewertet
darber hinaus auch reine HeimspielSerien und
reine AuswrtsspielSerien. Die TextAusgabe
dieses Programms ndet sich bei der Webversi
on dieses Arukels.
Interessant in dem Zusammenhang ist die Um
wandlung der ProgrammAusgabe in eine Tabel
lenstruktur. Eine Ausgabezeile lautet zum Bei
spiel:
4:3 H 14.09.1947 203 Ungarn Edi Bauer
Die Felder dieser Ausgabezeile sind durch Ab
stnde abgegrenzt und damit diese Struktur in
Word in eine Tabelle konveruert werden kann,
muss man an der Stelle der Spaces Tabulatoren
einfgen aber die Spaces in den Trainernamen
beibehalten. Im Notepad++ ist der Suchbegri
dazu:
\s+(\d+)\:(\d+) (\w) (\d+)\.(\d+)\.
(\d\d\d\d) (\d+)\s(\w+)\s(.+)
Und der Ersetzungsbegri:
\1:\2\t\3\t\4.\5.\6\t\7\t\8\t\9

\s+ ein oder mehrere Spaces
(\d+) eine oder mehrere Ziern > \1
(\d+) eine oder mehrere Ziern > \2
(\w) ein Buchstabe (H oder A) > \3
(\d+)\.(\d+)\.(\d\d\d\d) Datum
(\d+) Spielnummer > \7
\s Zwischenraum
(\w+) Gegner > \8
(.+) Trainer > \9
\t Tabulator
Erst nach dieser Ersetzung wird der Text in ein
WordDokument eingefgt und dieser Text in
eine Tabelle umgewandelt.
Der letzte Teil dieser WordTabelle (der Ab
schniu mit den gemischten Heim und Aus
wrtsspielen) wurde in der nebenstehenden
Tabelle bernommen.
Wenig berraschend, dass die lngste Siegesse
rie unter Hugo Meisl gescham wurde.
Zur Ehrenreuung von Leopold Stastny (lngste
Serie ohne Sieg) sollte man auch die durchaus
beachtlichen Ergebnisse dieser an sich unerfreu
lichen Serie mit jeweils Unentschieden gegen
Brasilien(2x), Niederlande, Ungarn und Italien
bercksichugen.
Dass die Zeit unmiuelbar nach dem Krieg unter
Edi Bauer keine einfache war, sieht man sogar
an den Ergebnissen der Fuballspiele.
Serien bei Heim und Auswrtsspielen
Lngste Siegesserie: 7 Spiele beginnend bei Spiel 159
1:0 A 10.12.1933 159 Niederlande Hugo Meisl
4:2 A 11.02.1934 160 Italien Hugo Meisl
3:2 A 25.03.1934 161 Schweiz Hugo Meisl
5:2 H 15.04.1934 162 Ungarn Hugo Meisl
6:1 H 25.04.1934 163 Bulgarien Hugo Meisl
3:2 A 27.05.1934 164 Frankreich Hugo Meisl
2:1 A 31.05.1934 165 Ungarn Hugo Meisl
Lngste Serie ohne Niederlage: 14 Spiele beginnend bei Spiel 136
2:1 H 12.04.1931 136 CSSR Hugo Meisl
0:0 H 03.05.1931 137 Ungarn Hugo Meisl
5:0 H 16.05.1931 138 Schouland Hugo Meisl
6:0 A 24.05.1931 139 Deutschland Hugo Meisl
2:0 H 17.06.1931 140 Schweiz Hugo Meisl
5:0 H 14.09.1931 141 Deutschland Hugo Meisl
2:2 A 04.10.1931 142 Ungarn Hugo Meisl
8:1 A 29.11.1931 143 Schweiz Hugo Meisl
2:1 H 20.03.1932 144 Italien Hugo Meisl
8:2 H 24.04.1932 145 Ungarn Hugo Meisl
1:1 A 22.05.1932 146 CSSR Hugo Meisl
4:3 A 17.07.1932 147 Schweden Hugo Meisl
3:2 A 02.10.1932 148 Ungarn Hugo Meisl
3:1 H 23.10.1932 149 Schweiz Hugo Meisl
Lngste Unentschiedenserie: 3 Spiele beginnend bei Spiel 156
3:3 A 17.09.1933 156 CSSR Hugo Meisl
2:2 H 01.10.1933 157 Ungarn Hugo Meisl
2:2 A 29.11.1933 158 Schouland Hugo Meisl
Lngste Serie ohne Sieg: 9 Spiele beginnend bei Spiel 384
2:2 A 29.04.1973 384 Ungarn Leopold Stastny
2:3 A 23.05.1973 385 Schweden Leopold Stastny
1:1 H 13.06.1973 386 Brasilien Leopold Stastny
0:7 A 26.09.1973 387 England Leopold Stastny
0:4 A 10.10.1973 388 Deutschland Leopold Stastny
1:2 A 27.11.1973 389 Schweden Leopold Stastny
1:1 A 27.03.1974 390 Niederlande Leopold Stastny
0:0 A 01.05.1974 391 Brasilien Leopold Stastny
0:0 H 08.06.1974 392 Italien Leopold Stastny
Lngste Niederlagenserie: 6 Spiele beginnend bei Spiel 197
1:3 A 05.05.1946 197 Frankreich Edi Bauer
0:2 A 06.10.1946 198 Ungarn Edi Bauer
3:4 H 27.10.1946 199 CSSR Edi Bauer
0:1 A 10.11.1946 200 Schweiz Edi Bauer
2:3 A 01.12.1946 201 Italien Edi Bauer
2:5 A 04.05.1947 202 Ungarn
Edi Bauer




18
PCNEWS139 Juni 2014
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Public Sub Zeitreihen()
Dim RS_Spiele As Recordset
Dim Text(5) As String
Dim HA(3) As String
HA(0) = "Serien bei Heimspielen"
HA(1) = "Serien bei Auswrtsspielen"
HA(2) = "Serien bei Heim- und Auswrtsspielen"
Dim SMax(5) As Integer
Dim CMax(5) As Integer
Dim S(5) As Integer
Dim C(5) As Integer
Dim i, j As Integer
Text(0) = "Lngste Siegesserie"
Text(1) = "Lngste Serie ohne Niederlage"
Text(2) = "Lngste Unentschiedenserie"
Text(3) = "Lngste Serie ohne Sieg"
Text(4) = "Lngste Niederlagenserie"
Dim Sql As String
For j = 0 To 2 '0: Heim, 1: Auswrts, 2: Heim und Auswrts
Debug.Print HA(j)
For i = 0 To 4
SMax(i) = 0
CMax(i) = 0
S(i) = 0
C(i) = 0
Next i
Select Case j
Case 0
Sql = "SELECT Spiel, Sieg FROM Spiel WHERE Heim='H' ORDER BY Spiel"
Case 1
Sql = "SELECT Spiel, Sieg FROM Spiel WHERE Heim='A' ORDER BY Spiel"
Case 2
Sql = "SELECT Spiel, Sieg FROM Spiel ORDER BY Spiel"
End Select
Set RS_Spiele = CurrentDb.OpenRecordset(Sql)
Do While Not RS_Spiele.EOF
Dim Sieg, Spiel As String
Sieg = RS_Spiele("Sieg")
Spiel = RS_Spiele("Spiel")

Dim Serie As Integer
For Serie = 0 To 4
If (Serie = 0 And Sieg = "S") _
Or (Serie = 1 And (Sieg = "S" Or Sieg = "U")) _
Or (Serie = 2 And (Sieg = "U")) _
Or (Serie = 3 And (Sieg = "N" Or Sieg = "U")) _
Or (Serie = 4 And (Sieg = "N")) Then
If C(Serie) = 0 Then
S(Serie) = Spiel
End If
C(Serie) = C(Serie) + 1
Else
If C(Serie) > CMax(Serie) Then
SMax(Serie) = S(Serie)
CMax(Serie) = C(Serie)
End If
S(Serie) = Spiel
C(Serie) = 0
End If
Next Serie
RS_Spiele.MoveNext
Loop
RS_Spiele.Close
For Serie = 0 To 4
'Debug.Print "", SMax(Serie), CMax(Serie), Text(Serie)
Debug.Print "", Text(Serie), CStr(CMax(Serie)) + _
" Spiele beginnend bei Spiel " + CStr(SMax(Serie))
Select Case j
Case 0
Sql = " (Heim='H') AND "
Case 1
Sql = " (Heim='A') AND "
Case 2
Sql = ""
End Select
Sql = "SELECT Gegner, Heim, ErgebnisA, Datum, Teamchef, Spiel " & _
"FROM Spiel " & _
"WHERE " + Sql + " (Spiel>=" + CStr(SMax(Serie)) + ") " & _
"ORDER BY Spiel"
Set RS_Spiele = CurrentDb.OpenRecordset(Sql)
Dim Count As Integer
Count = 0
Do While Not RS_Spiele.EOF
Debug.Print "", "", RS_Spiele("ErgebnisA") + " " + _
RS_Spiele("Heim") + " " + CStr(RS_Spiele("Datum")) + _
" " + CStr(RS_Spiele("Spiel")) + " " + _
RS_Spiele("Gegner"), RS_Spiele("Teamchef")
Count = Count + 1
If Count = CMax(Serie) Then
Exit Do
End If
RS_Spiele.MoveNext
Loop
RS_Spiele.Close
Next Serie
Next j
End Sub
Zeitreihen
Die Prozedur Zeitreihen ermiuelt lngste Serien gleichblei
bend guter oder schlechter Ergebnisse.
Es gibt drei Auswertungen HA(0), HA(1), HA(2), die in der
Schleife For j = 0 To 2 durchlaufen werden. Je nach In
dex j wird die Abfrage Sql der Spiele modiziert. J=0 nur
Heimspiele, j=1 nur Auswrtsspiele, j=2 alle Spiele (siehe
Tabelle auf der vorigen Seite).
Innerhalb jeder dieser Auswertungen wird nach fnf Serien
gesucht (Text(0..4)). Zur Ermiulung der Serien werden vier
Variablen eingesetzt: SMax (speichert die Spielnummer der
lngsten gefundene Serie), CMax (speichert die Anzahl der zu
dieser Serie gehrigen Spiele), S (die Spielenummer der gera
de untersuchten Serie), C (die Anzahl der zusammenhngen
den Spiele dieser Serie). Wenn das C der gerade untersuchten
grer ist als die gespeicherte Folge CMax, wird S zum neuen
SMax und C zum neuen CMax.
Die fnf Serien werden in der Schleife For Serie = 0 To 4
gesucht. Ausgewertet wird das Feld Sieg, das die drei Werte
S, U oder N haben kann.
Wenn eine Serie noch nicht beginnen hat C(Serie)=0, startet
sie mit der ersten zutreenden bereinsummung. Ist eine
Serie zu Ende Else, wird gepr, ob die aktuelle Serie lnger
ist als die bereits gespeicherte. Wenn ja, triu sie an ihre Stelle
und der Zhler fr die aktuelle Serie wird zurckgesetzt S
(Serie)=Spiel und C(Serie)=0.
Die Ausgabe der gespeicherten Ergebnisse erfolgt durch Kon
strukuon der SqlAbfrage aus den ermiuelten Werten SMax
und CMax kombiniert mit einer Einschrnkung fr den Spielort
Sql = " (Heim='H') AND ".
Die Ausgabe selbt erfolgt im Zuge von Debug.Print
Anweisungen, die einen einfachen Text ausgeben.
Damit dieser Text in eine WordTabelle umgeformt warden
kann, wird er noch in Notepad++ mit der auf der vorigen Seite
angegebenen Regular Expression umformauert.
Dateneingabe
Wie fuert man die Datenbank mit neuen Spielern, Vereinen
und Spielen? Man knnte natrlich Daten direkt in die Tabel
len eingeben. Das sollte man aber nicht, speziell, wenn es
redundante Felder gibt, die erst aus den Eingaben errechnet
werden. Man gibt daher neue Daten ber Formulare ein, die
eine fehlerfreie Eingabe durch Plausibilittschecks auf dem
Umweg kleiner Funkuonen berprfen knnen.
Die Daten der FBSeite sind bis zum letzten Spiel im Jahr
2012, Spielnummer 716 gegen die Elfenbeinkste kompleu.
Die Daten bis zum 727 Lnderspiel gegen Uruguay mssen
hndisch nachgetragen werden. Als Quelle dient die Seite
weltfussball.at.
Auf der folgenden Seite sieht man die Formulare zur Eingabe
von Spielern, Vereinen und Spielen.
Noch bevor die Daten zu einem konkreten Spiel eingegeben
werden, pr man, ob es neue Spieler oder neue Vereine gibt.
Diese gibt man zuerst ein.
Um ein Formular zu erstellen, gengt es, die Tabelle zu nen
und auf Erstellen -> Formular zu klicken. Abgesehen von Fragen der
Gestaltung werden alle erforderlichen Felder im Formular
eingesetzt und man kann schon mit der Eingabe beginnen.
Die beiden Eingabemasken (nchste Seite rechts oben) zeigen,
wie Spieler und Verein zusammenhngen. Man kann zu einem
Spieler mehrere Vereine zuordnen und umgekehrt einem
Verein mehrere Spieler.
Bei der Eingabe der Mannschasaufstellung gibt man daher
immer eine SpielerVereinKombinauon aus der Tabelle Spie-
ler-Verein ein.
Das wichugste Eingabeformular ist aber Spiel:
Es besteht aus dem Haupuormular mit den Angaben zum Spiel
im oberen Teil und einem Unterformular fr die teilnehmen
den Spieler und einem Unterformular fr die Tore des Spiels.




19
Juni 2014 PCNEWS139
C
L
U
B
S
Y
S
T
E
M
.
N
E
T

Datenbank wurden mit den Angaben in weltfussball.at verglichen und als fehlerfrei befun
den. Dennoch bleiben im Vergleich mit den FBAngaben Fehler. Diese kleinen Abweichungen
kommen mglicherweise von verschieden interpreuerten Ergebnissen mit einem Elferschieen.
Aber keine Angst, an den ermiuelten Stausuken ndert das kaum etwas, solche Miuelwerte ha
ben auch etwas Gutes, weil sie sich an groen Zahlen orienueren und ein Sieg mehr oder weniger
spielt dabei keine Rolle.
Fehler
Im Zusammenhang mit Datenbankstrukturen
gibt es zahlreiche Fehlermglichkeiten. In die
sem besonderen Fall kommen bereits sehr viele
Fehler seitens der Originaldaten ins Spiel. Je
nachdem, wer die jeweiligen Dokumente ver
fasst hat und wie seine Vorgaben waren, ist die
Schreibweise von Spieler und Trainernamen
verschieden. Einmal heit es Didi, das andere
Mal Dietmar. Einem Leser ist das egal, er
wei, wer gemeint ist: Dietmar Konstanni.
Aber ein Programm erstellt aus den beiden
Namen zwei Personen, die man hndisch verei
nigen muss.
Bei den Toren wird ein Spieler mit Linz ange
geben, bei der Aufstellung aber als Roland
Linz. In allen diesen Fllen ist es aber fr ein
Programm durchaus eine andere Person und
man muss alle diese Mehrdeuugkeiten mh
sam hndisch enuernen.
Teuisch wird die Sache mit den vielen
Hubers, Wagners und sonsugen hugen
Namen. Bei berprfungen stellt sich dann
rasch heraus, dass nicht etwa Anton Polster
einer der am lngsten spielende Fuballer war,
sondern ein Huber, der von 1902 bis 2006
gespielt haben soll.
Ob schlielich die dargestellten Stausuken
summen oder wenigstens einigermaen sum
men, kann man durch Vergleich mit den Staus
uken des FB kontrollieren. Der Spieler mit den
meisten Toren, Anton Polster sollte wenigs
tens auch in der PCNEWSStausuk seine 73
Tore geschossen haben. Lange war das aber
nicht der Fall, denn in meiner Aufstellung ha
ben dem Toni zuerst fnf Tore gefehlt, bis ein
Spieler mit dem Namen Polser aufgefallen ist,
der diese fnf fehlenden Tore geschossen hat.
Einer dieser zahlreichen Schreibfehler mit gro
en Wirkungen.
Plausibilittsprfung der Daten
Weil der Prozess der Erfassung der Daten durch
die vielen Umformungsschriue sehr feh
lerbehaet ist, muss man nach der Herstellung
der Datenbanktabellen einen Plausiblittscheck
ausfhren. Die Visual Basic Prozedur Plausi-
bel berpr fr jedes Spiel redundante An
gaben in den Feldern Ergebnis, Tore, Sieg,
S, U und N; berpr, ob die Zahl im Feld
ToreA mit der Anzahl der Tore in der Tabelle
Tore bereinsummt und pr auch, ob die
Anzahl der eingesetzen Spieler in der Tabelle
Spieler-Spiel >=11 ist.
Die Prozedur Plausibel ist hier nicht
abgedruckt, man ndet sie aber in der Daten
bank unter Datenbanktools-> Visual Basic -> Modul
Auswertungen:
Ist dieser Check erfolgreich, ist die Datenbank
formal in Ordnung.
Dass zum Beispiel Spieler oder Vereine
eingetragen worden wren, die nicht exisueren
(Tippfehler), kann man ausschlieen, weil die
Tabellen durch das Prinzip der referenziellen
Integritt vor solchen Fehlern geschtzt sind.
Nach Abschluss dieses PlausibilittsChecks
erfolgen Eingaben nur mehr ber die im
nchsten Abschniu vorgestellten Eingabefor
mulare.
Trotz aller dieser Korrekturmanahmen bleibt
ein gewisser Rest von Fehlern in der Daten
bank, der erst durch das Arbeiten mit den Da
ten und laufende Korrekturen beseiugt werden
kann.
Vergleichen wir die FBBilanz mit der von den
FBSeiten abgeleiteten Bilanz, Stand April
2014: Alle 727 Spiele in der PCNEWS
Spiele Siege Remis Niederlagen Tore A Tore Gegner
727 295 (+2) 158 (1) 274 (1) 1305 (+2) 1175
Spiel Bilanz Gesamt (Kopie von Seite 9)
Stask des FB
Stask von PCNEWS, abgeleitet von den FBDaten zwecks detaillierter Auswertung




PCNEWS139 Juni 2014
20
C
L
U
B
D
E
V
.
N
E
T

Datamining
Franz Fiala
Ja, wenn die Datenbank einmal ferug ist, dann
hat man fast schon gewonnen, denn die ein
gangs beschrieben Auswertung ist nur der End
punkt eines mhsamen Weges. Aber wie
kommt man zu diesen Daten ohne sie mhsam
abuppen zu mssen?
Der FB publiziert auf seiner StausukSeite
http://www.oefb.at/statistik-pid623#el15406
in 12 PDFDateien alle Spiele der sterreichi
schen Nauonalmannscha seit 1902:
Liste der Lnderspiele der sterreichischen
Naonalmannscha, in 12 PDFDokumenten
Format 1. Lnderspiel, 1902
Format 716. Lnderspiel 2012
Alles.txt: reiner Text nach Konversion der Datei alles.pdf,
mit typischen OCRFehlern.
Die Spiele sind fortlaufend nummeriert. Das
erste Spiel gegen Ungarn vom 12.10.1902 hat
die Nummer 1 und das letzte gegen Uruguay
vom 5.3.2014 hat die Nummer 727. Das letzte
Spiel in der FBPublikauon ist das Spiel 716
gegen die Elfenbeinkste vom 14.11.2012.
Der Originaltext in der PDFDatei ist so wie in
den beiden Bildern rechts.
Man sieht an der Darstellung dieser beiden
Spiele, dass sich die Zahl der Angaben zum Spiel
im Laufe der vielen Jahre sehr verndert hat.
Zwischen dem Minimum des ersten Spiels und
der ganzen Seite des letzten Spiels ist ein gro
er formaler Unterschied.
Fr Leser ist das unbedeutend aber fr ein Pro
gramm, das diese Angaben in eine Tabellen
struktur umwandeln soll, ist das eine Herausfor
derung.
Zuerst mssen die 12 PDFDateien zu einem
einzigen Dokument verbunden werden. Dazu
eignet sich Acrobat oder das preisgnsugere
Foxit.
Die so gewonnene PDFDatei alles-
original.pdf wird mit dem OCRProgramm
Omnipage in Text umgewandelt. Der Anfang
dieser neuen Datei (alles-original.txt)
schaut so aus wie im Bild rechts unten.
Whrend die Datei alles-original.pdf noch
ein Bild war, arbeiten wir jetzt mit reinem Text.
Natrlich mit kleinen Tippfehlern, etwa sieht
man, dass gleich in der ersten Zeile
Osterreich O stau steht. Diese Fehler
wiederholen sich im Dokument und werden
wie viele andere Kleinigkeiten durch Suchen
und Ersetzen beseiugt.
Grob kann man in diesen Angaben zu den Spie
len die Datenbankstruktur erkennen. Jedes
Spiel besteht eigentlich aus drei tabellarischen
Strukturen:
aus den Angaben zum Spiel (Datum, Ergeb
nis, Gegner),
den Spielern, die an dem Spiel teilnehmen,
den Vereinen denen sie angehren, ergnzt




Juni 2014 PCNEWS139
21
C
L
U
B
D
E
V
.
N
E
T

durch die Spielernummer und die Spielzeit
(von Minute, bis Minute), die Aufstellung
Die Auswechslungen, wobei jeweils angege
ben ist, welcher Spieler gegen welchen ande
res Spieler in welcher Minute getauscht wur
de und schlielich
den Toren der Begegnung, ergnzt durch die
Minute, den Schtzen und wer das Tor ge
schossen hat.
In einem ersten Schriu werden die Angaben
zum Spiel in alle diese Einzelteile zerlegt und die
Aufstellung und Tore noch als eine Zeichen
keue beisammen gelassen aber die Angaben
zum Spiel bereits in die Felder Datum, Gegner,
Ergebnis, Halbzeitergebnis, Schiedsrich-
ter, Zuschauerzahl, Spielort usw. aufgeteilt.
Die Aufstellung und die Tore bleiben zunchst
als Text in einem gengend groen Texueld.
255 Zeichen (die Vorgabe Kurzer Text in
Microso Access) gengt nicht, man muss
Langer Text einstellen, sonst werden bei eini
gen Spielen Texueile abgeschniuen. In diesem
ersten Schriu entsteht also die einzige Tabelle
Spiel.
Dazu muss aber die Textdatei grndlich umfor
mauert werden, damit ein lesendes Programm
einfach erkennen kann, wann ein Spiel beginnt,
wann es endet und welche Abschniue daraus in
welches Feld kommen sollen.
Das folgende Beispiel zeigt am Spiel 716 gegen
die Elfenbeinkste, das auf der vorigen Seite
auch im Original zu sehen ist, wie dieser maschi
nenlesbare Text schlielich ausschaut. Zur Ver
besserung der Lesbarkeit wurden die Feldna
men feu gedruckt.
####
#Begegnung#sterreich:Elfenbeinkste
#Spiel#716
#Ergebnis#0:3
#Pause#0:1
#Art#Freundschasspiel,
#Datum#14.November 2012
#Details#Linz, Linzer Stadion, 13.832 Zuschau
er,
#Schiedsrichter#Kralovec (CZE)
#Aufstellung#(GK 24) Hein4 Lindner/FK Austria
Wien (2) Gyrgy Garics/FC Bologna, (3) Alek
sandar Dragovic/FC Basel, (4) Emanuel Poga
tetz/VfL Wolfsburg, (13) Markus Suner/FK
Austria Wien (7) Marko Arnautovic/SV Werder
Bremen, (18) Christoph Leitgeb/FC RB Salzburg,
(8) David Alaba/FC Bayern Mnchen, (16) Jakob
Jantscher/Dynamo Moskau (6) Andreas Ivan
schitz/1.FSV Mainz 05 (21) Marc Janko/
Trabzonspor
#Austausch#(17) Florian Klein/FC RB Salzburg
fr Garics (46.), (15) Sebasan Prdl/SV Werder
Bremen fr Pogatetz (46.), (14) Julian Baum
gartlinger/1.FSV Mainz 05 fr Leitgeb (46.), (19)
Veli Kavlak/Besiktas JK fr Alaba (59.), (9) An
dreas Weimann/Aston Villa FC fr Ivanschitz
(64.), (11) Marn Harnik/VfB Stugart fr Jant
scher (76.)
#Teamchef#Marcel Koller
#AufstellungG#Boubacar Barry/KSC Lokeren,
Igor Lolo/Kuban Krasnodar, Kolo Tour/
Manchester City, Sol Bamba/Trabzonspor,
Arthur Boka/VfB Stugart Romaric/Real Sara
gossa, Arouna Kone/Wigan Athlec, Cheick
Tiot/Newcastle United, Didier Ya Konan/
Hannover 96, Max Gradel/AS Saintenne
Wilfried Bony/Vitesse Arnheim
#Austausch#Ismael Traore/Stade Brestois fr
Bamba (46.), Lacina Traor/Anzhi Makhachkala
fr Bony (46.), Abdul Razak/Manchester City fr
Tiote (53.), Didier Drogba/Shanghai Shenhua fr
A. Kone (59.), Yaya Tour/Manchester City fr
Romaric, Salomon Kalou/Lille OSC fr Ya Konan
#Teamchef#Sabri Lamouchi
#Tore#0:1 Ya Konan (44.) 0:2 Drogba (52.) 0:3
L. Traore (76.)
Die gewhlte Strategie
Jedes Feld in der spteren Tabelle Spiel ist
eine Zeile in der Textdatei. Jede dieser Zeilen
wird durch den spteren Feldnamen #Name#
eingeleitet. Zwischen Spielen steht die Zeile
####. Die Felder Aufstellung, Tore und Aus-
tausch sind vorlug noch unstrukturierte
Texte, die spter, wenn aus diesem Text bereits
die Tabelle Spiel geworden ist, per Programm
in weitere Tabellen umgewandelt werden.
Wie formt man nun die Angaben des FB zu
den Spielen in die gezeigte Form mit den Raute
zeichen um? Hndisch wre das ein mhsamer
Weg. Man kann sich dafr aber hervorragende
Hilfe in Form der Regular Expressions holen, die
in Editoren fr ProgrammierAufgaben und
sogar in Word enthalten sind. Fr diese Aufgabe
verwende ich gerne den kostenlosen Editor
Notepad++. Im Dialogfeld von Notepad++ kann
man einstellen, ob der Suchbegri als ein Regu
lrer Ausdruck interpreuert werden soll.
Regular Expressions
Ein einfaches Suchen und Ersetzen erlaubt nur
die Suche nach einem konkreten Text, also zum
Beispiel nach Lnderspiel oder sterreich
aber nicht nach einem beliebigen Text, der im
Zusammenhang mit Lnderspiel vorkommt,
zum Beispiel 25. Lnderspiel oder sterreich
Ungarn. Das 25. und Ungarn ist bei jedem
Spiel anders und daher versagt die einfache
Suche.
Hier kommen die Regular Expressions ins
Spiel. Grundstzlich wrde ein normaler Text in
einer Regular Expression ebenso behandelt
werden wie in einer normalen Suche.
Besummte Sonderzeichen haben aber eine
besondere Bedeutung. Diese Zeichen sind:
.:()[]^+*?-\|
Daher kann man nach diesen Zeichen nicht
direkt suchen sondern nur, indem man ihnen
einem Backslash voranstellt. Um also zum Bei
spiel nach einem PlusZeichen zu suchen, ver
wendet man \+.
Einfache Umformungen
Einfach sind Umformungen wie Tore: im
Originaltext, denn es gengt nach Tore: zu
suchen und durch #Tore# zu ersetzen. Dazu
gehren auch Schreibfehler, wie das erwhnte
Polser stau Polster.
Alles, was man jetzt korrigieren kann, kann man
einheitlich in der ganzen Datei ausfhren. Zum
Beispiel die Enuernung mehrfacher Spaces,
mehrfacher Zeilenumbrche. Meist muss man
diese Kleinigkeiten auch am Ende der Umfor
mungen noch einmal ausfhren, weil durch die
Umformung wieder mehrfache Spaces oder
Zeilenumbrche entstehen.
Hier unterscheiden sich die Regular Expressions
nicht von der normalen Suche.
Wie nun diese Spezialzeichen zu interpreueren
sind, zeigen die folgenden Beispiele und auch
die Sonderseite ber Regular Expressions.
Der gesamte Prozess dieser Umwandlung ist
hier nicht exakt darstellbar. Es gibt sehr viele
Ausnahmen, hervorgerufen durch Tippfehler
(manchmal steht irgendwo ein Abstand, dann
fehlt er) oder durch verschiedenarugen Aumau
der Zeilen, wie man im Vergleich des ersten und
des letzten Spiels sieht. Die Herstellung der
strukturierten Datei ist daher eine Mischung aus
systemauschen Umformungen und manuellen
Korrekturen.
Begegnung
Die Begegnung steht meist an erster Stelle eines
Spiels und wird von keinem Text begleitet, da
her muss man sich an dem sterreich orien
ueren. Aus Ungarnsterreich oder ster
reichUngarn soll daher werden #Begegnung
#Ungarnsterreich oder #Begegnung#ster
reichUngarn, unabhngig davon, welchen Geg
ner sterreich hat. Solche Ersetzungen sind nun
mit den Miueln des einfachen Suchen und Ersetzen
nicht mehr durchfhrbar und man benugt die
Hilfe der Regular Expressions.
In dem Beispiel suchen wir nach einem Wort,
das wir unverndert auch nach dem Ersetzungs
vorgang verwenden wollen. Dafr verwendet
man in der RegexSprache als Suchbegri die
Suche
(\w+)\-(sterreich)
und ersetzt durch
#Begegnung#\1\2\r\n#Gegner#\2
\r\n#Heim#A\r\n
Diese Formeln wollen erklrt werden:
(\w+)\-(sterreich)
() Eingeklammerte Begrie werden in der Rei
henfolge ihres Auretens als Variable betrach
tet, die als \1, \2 im Ersetzungsbegri ver
wendet werden knnen.
\w Steht fr irgendein alphanumerisches Zei
chen, Pluszeichen + bedeutet, dass das Zeichen
davon beliebig o, mindestens aber einmal vor
kommt. Das \w+ ist eingeklammert, daher wer
den alle dadurch gefundenen Zeichen in die
Variable \1 gespeichert. Nach dem Bindestrich
kann nicht direkt gesucht werden, daher muss
ihm in der Suche ein Backslash vorangestellt
werden.
####\r\n#Begegnung#\1\2\r\n#Gegner#\1
\r\n#Heim#A\r\n
\1 steht fr den Gegner und \2 fr sterreich.
####, #Begegnung#, #Gegner# und #Heim#A
werden unverndert ausgegeben. \r steht fr
das Steuerzeichen CR und \n fr LF.
Durch diese Ersetzung entstehen die vier Felder
####, Begegnung, Gegner und Heim. Der Zeilen
rest nach den #...#Feldbezeichnungen ist der
eigentliche Feldinhalt und wird in die Daten
banktabelle Spiel imporuert. Die ExtraZeile
#### ist die Trennung zwischen zwei Lnder
spielen, an der sich das sptere Einlesepro
gramm orienueren kann.
Fassen wir also zusammen. Durch diese Erset
zung werden aus der Zeile
Ungarn-sterreich
die Zeilen
####
#Begegnung#Ungarn-sterreich
#Gegner#Ungarn
#Heim#A
D.h. etwa die Hle der Spiele wird auf diese
Weise umgeformt.
Diese Suche muss noch einmal durchgefhrt
werden und zwar fr den Fall von Heimspielen,
weil dort die beiden Gegner ihren Platz tau
schen. Die Such und Ersetzungkommandos
lauten dann:
Suchen
(sterreich)\-(\w+)
Ersetzen
####\r\n#Begegnung#\1\2\r\n#Gegner#\2
\r\n#Heim#H\r\n
Grundstzlich knnte man mit den Miueln der
Regular Expressions sogar beide Ersetzungen in
einem einzigen Vorgang durchfhren, doch
lohnt sich in diesem Projekt dieser zustzliche




PCNEWS139 Juni 2014
22
C
L
U
B
D
E
V
.
N
E
T

Aufwand nicht, weil alle diese Formeln nur
einmal verwendet werden.
Ergebnis
Das Ergebnis eines Spiels wird meist in zwei
Zeilen angegeben. Die erste Zeile ist das Ender
gebnis, die zweite ist der eingeklammerte Halb
zeitstand.
Suchen
(\d+)\:(\d+)\r\n\((\d+)\:(\d+)\)\r\n
Ersetzen
\r\n#Ergebnis#\1:\2\r\n#ErgebnisH#\3:\4
\r\n
Aus 2:3(1:1) wird
#Ergebnis#2:3
#ErgebnisH#1:1
Art
Suchbegri
(Freundschaftsspiel|Weltmeisterschaft|E
uropameisterschaft|WM-Qualifikation|EM-
Qualifikation|EC der Nationen|Olympia)
Ersetzungsbegri \r\n#Art#\1\r\n
Der senkrechte Strich ist die Trennung zwischen
Textalternauven. Ganz egal, welcher der Texte
gefunden wird, immer wird das Feld Art gene
riert.
Der vorangestellte Zeilenumbruch beim Erset
zungsbegri garanuert, dass die Feldbezeich
nung jedenfalls in einer neuen Zeile beginnt.
Lnderspiel
Jedes Spiel enthlt eine Zeile, die etwa so aus
schaut:
633. Lnderspiel, Innsbruck (TivoliNEU),
28.04.2004 Schiedsrichter: Damir Skomina, SLO
Aus diesen Zeilen werden die Felder Spiel,
Datum, Schiedsrichter und Stadion extra
hiert.
Leider ist der Aumau des Dokuments nicht ganz
gleich, daher muss man in Einzelschriuen vorge
hen und kann sich nicht darauf verlassen, diese
Zeile in einem einzigen Schriu umwandeln zu
knnen.
Suchen
(\d+)\. Lnderspiel(.*)
Ersetzen
\r\n#Spiel#\1\r\n#Details#\2\r\n
Das Wort Lnderspiel dient und lediglich zum
Aunden der richugen Zeilen. Zuerst trennen
wir die Spielnummer (\d+) vom Rest der Zeile
(.*). \d steht fr eine Zier \d+ steht fr min
destens eine Zier. Der Punkt . steht fr irgend
ein Zeichen, der Stern * bedeutet, dass davor
stehende Zeichen beliebig o und auch gar
nicht vorkommen kann. Damit erkennen wir
auch Zeilen, die berhaupt nur mit dem Wort
Lnderspiel enden.
Datum
Suchen
(\d+)\.(\d+)\.(\d\d\d\d)
Ersetzen
\r\n#Datum#\1. \2. \3\r\n
Es gibt auch Datumsangaben mit ausgeschriebe
nen Monatsangaben und die mssen in einem
weiteren, etwas komplizierteren Schriu verar
beitet werden.
Schiedsrichter
Suchen
Schiedsrichter\:(\w+)
Ersetzen
\r\n#Schiedsrichter#\1\r\n
Im Feld Detail bleiben nach diesen Umformun
gen Angaben zum Stadion stehen.
Abgeschlossen werden diese Umformungen
durch Enuernen mehrfacher Zwischenrume:
Suchen
\s+
Ersetzen
(ohne Anfhrungszeichen)
Und mehrfacher Zeilenumbrche, die sich wh
rend der Ersetzungen durch Voranstellen von
\r\n\ angehu haben.
Suchen
(\r\n)+
Ersetzen
\r\n
Diese Ersetzungen sind eine grobe Skizze, wie
man von dem Rohtext alles-original.txt zu
einem strukturierten Text alles.txt mit Feld
angaben kommen kann.
In der Praxis ist die Zahl der erforderlichen Um
wandlungsschriue deutlich hher und zwischen
durch durch manuelle Textkorrekturen beglei
tet, die dadurch erforderlich werden, dass die
Originaldateien Tippfehler enthalten aber auch
dadurch, dass die Umwandlungen versehentlich
eine Ersetzung an einem Ort ausfhren, an dem
das gar nicht gewnscht ist.
Import in Datenbank
Es gibt jetzt also eine strukturierte Textdatei
alles.txt. Jede Zeile enthlt ein Datenfeld der
Form #Feldname#Inhalt. Ein Datensatz ist vom
nchsten durch eine Zeile #### getrennt. Die
Reihenfolge der Datenfelder ist unerheblich.
Fehlen Datenfelder, bleibt das entsprechende
Datenbankfeld eben leer.
Programmwahl
Man knnte den Import der Texte mit dem in
Access eingebauten Visual Basic ausfhren. Man
kann aber auch die ungemein exible Power
Shell verwenden, die alles, was das DotNet
Framework anbietet, auch nutzen kann. Wenn
man daher rouunemig mit C# arbeitet, ist die
Verwendung der PowerShell naheliegend.
Man kann die PowerShell entweder mit dem in
Windows vorhandenen Power Shell ISE (Integrated
Software Environment) oder auch mit dem kosten
losen Tool Power Gui Script Editor verwenden.
Mit gefllt Power Gui besser aber fr den An
fang ist das egal.
Eine kurze Darstellung der Skriptsprache Power
Shell zeigt die folgende Seite, eine etwas lnge
re Darstellung ist bei der Webversion dieses
Beitrags verfgbar.
Der Import der Daten erfolgt in mehreren
Schriuen:
Tabelle Spiel durch sequenuelles Auslesen
der TextDatei alles.txt fllen.
(TextDateiLesen.ps1)
Das Feld Spiel (in der Textdatei alles.txt wur
de es ID genannt) dient als eindeuuge Daten
satzkennzeichnung und Verknpfungsfeld zu
den Tabellen SpielerSpiel und Tore.
Tabelle Spieler-Spiel aus dem Feld
Aufstellung der Tabelle Spiel erstellen
(SpielerTabelleErstellen.ps1)
Die Tabelle Spieler-Spiel enthlt zunchst
noch sowohl den Verein als auch den Spie-
ler, beides in vielfacher Anzahl. Durch Grup
pierung nach dem Spieler und nach dem
Verein wird daraus die Tabellen Spieler
Verein und aus dieser dann die Tabellen
Spieler und Verein hergestellt. Lscht
man danach die nicht mehr benugten Felder
sind die genauen Schriue nicht mehr erkenn
bar.
Tabelle Tore aus dem Feld Tore ermiueln
(ToreTabelleErstellen.ps1)
Tabelle Spieler-Tausch aus dem Feld
Austausch erstellen und dann die
Spielminuten der bereits eingetragenen
Feldspieler korrigieren
(SpielerTauschTabelleErstellen.ps1).
Die neuen Eintauschspieler an die Tabelle
Spieler anfgen und die Spielminuten
eintragen.
Dieser relauv komplizierte Vorgang ist not
wendig, weil die FBDaten zwischen der
Aufstellung (die 11 Mann, die das Spiel begin
nen) und den Wechselspielern unterscheidet.
Fr die Zhlung der Zahl der Einstze ist diese
Unterscheidung eher unprakusch wie man
sieht. Daher mssen eben die Austauschspie
ler zu der Spielertabelle hinzugefgt werden
und dabei die Beginn und Endeminute der
neuen Spieler als auch jener, die ausge
tauscht werden, besummt werden.
Datenquellen
http://www.oefb.at (Spiel 1..716)
http://www.weltfussball.at (Spiel 717727)
Verwendete Programme
Microso Access 2013
Microso Excel 2013
Notepad++
Power GUI Script Editor
Windows Power Shell ISE
Download
Webversion Vermessung des Runden Leders
http://d.pcnews.at/ins/pcn/139/000500/
sterreich.accdb Datenbank
sterreich.xlsx Grasche Auswertungen
Serien.docx Textversion aller Serien
Webversion Datamining
http://d.pcnews.at/ins/pcn/139/002000/
Alles-Original.pdf
Alles-Original.txt
Alles.txt
TextDateiLesen.ps1
SpielerTabelleErstellen.ps1
SpielerTauschTabelleErstellen.ps1
ToreTabelleErstellen.ps1

Links
Einfhrung in Access von Karel upek in
PCNEWS103
http://d.pcnews.at/ins/pcn/103/002700/
main.htm
Und alle anderen Arukel von Karel upek
http://pcnews.at/?
Show=AutorenArtikel&n=17484&id=13725&de
tail=%C5%A0




Juni 2014 PCNEWS139
23
C
L
U
B
D
E
V
.
N
E
T

#TextDateiLesen
#Connection
$DatabaseName = "s:\Desktop\nationalmannschaft\sterreich.accdb"
$ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$DatabaseName;"
$Connection = New-Object System.Data.OleDb.OleDbConnection $ConnectionString
$Connection.Open()

#Tabelle Games
$SqlQuery = "SELECT * FROM Games"
$Command = New-Object System.Data.OleDb.OleDbCommand $SqlQuery,$Connection
$SqlInsert = "INSERT INTO Games ( Spiel, Begegnung, Ergebnis, Pause, Art, Details, Datum,
Schiedsrichter, Aufstellung, AufstellungG, Austausch, AustauschG, Teamchef, TeamchefG, Tore ) VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$CommandInsert = New-Object System.Data.OleDb.OleDbCommand $SqlInsert,$Connection
$Adapter = New-Object System.Data.OleDb.OleDbDataAdapter $Command
$Adapter.InsertCommand = $CommandInsert
$Parameter1 = New-Object System.Data.OleDb.OleDbParameter "@Spiel", Char, 255, "Spiel"
$Parameter2 = New-Object System.Data.OleDb.OleDbParameter "@Begegnung", Char, 255, "Begegnung"
$Parameter3 = New-Object System.Data.OleDb.OleDbParameter "@Ergebnis", Char, 255, "Ergebnis"
$Parameter4 = New-Object System.Data.OleDb.OleDbParameter "@Pause", Char, 255, "Pause"
$Parameter5 = New-Object System.Data.OleDb.OleDbParameter "@Art", Char, 255, "Art"
$Parameter6 = New-Object System.Data.OleDb.OleDbParameter "@Details", Char, 255, "Details"
$Parameter7 = New-Object System.Data.OleDb.OleDbParameter "@Datum", Char, 255, "Datum"
$Parameter8 = New-Object System.Data.OleDb.OleDbParameter "@Schiedsrichter", Char, 255,
"Schiedsrichter"
$Parameter9 = New-Object System.Data.OleDb.OleDbParameter "@Aufstellung", Char, 2550, "Aufstellung"
$Parameter10 = New-Object System.Data.OleDb.OleDbParameter "@AufstellungG", Char, 2550,
"AufstellungG"
$Parameter11 = New-Object System.Data.OleDb.OleDbParameter "@Austausch", Char, 255, "Austausch"
$Parameter12 = New-Object System.Data.OleDb.OleDbParameter "@AustauschG", Char, 255, "AustauschG"
$Parameter13 = New-Object System.Data.OleDb.OleDbParameter "@Teamchef", Char, 255, "Teamchef"
$Parameter14 = New-Object System.Data.OleDb.OleDbParameter "@TeamchefG", Char, 255, "TeamchefG"
$Parameter15 = New-Object System.Data.OleDb.OleDbParameter "@Tore", Char, 255, "Tore"
[void]$CommandInsert.Parameters.Add($Parameter1);
[void]$CommandInsert.Parameters.Add($Parameter2);
[void]$CommandInsert.Parameters.Add($Parameter3);
[void]$CommandInsert.Parameters.Add($Parameter4);
[void]$CommandInsert.Parameters.Add($Parameter5);
[void]$CommandInsert.Parameters.Add($Parameter6);
[void]$CommandInsert.Parameters.Add($Parameter7);
[void]$CommandInsert.Parameters.Add($Parameter8);
[void]$CommandInsert.Parameters.Add($Parameter9);
[void]$CommandInsert.Parameters.Add($Parameter10);
[void]$CommandInsert.Parameters.Add($Parameter11);
[void]$CommandInsert.Parameters.Add($Parameter12);
[void]$CommandInsert.Parameters.Add($Parameter13);
[void]$CommandInsert.Parameters.Add($Parameter14);
[void]$CommandInsert.Parameters.Add($Parameter15);
$DataTable = New-Object System.Data.DataTable
[void] $Adapter.Fill($DataTable)

$File_Alles = "S:\desktop\nationalmannschaft\alles.txt"
$Alles = Get-Content $File_Alles
$Game = 0
$KeyNames = @()
$DataRow = $DataTable.NewRow()
function ClearValues {
$DataRow["Spiel"]=""; $DataRow["Begegnung"]=""; $DataRow["Ergebnis"]=""; $DataRow["Pause"]="";
$DataRow["Art"]=""; $DataRow["Details"]=""; $DataRow["Datum"]=""; $DataRow["Schiedsrichter"]="";
$DataRow["Aufstellung"]=""; $DataRow["AufstellungG"]=""; $DataRow["Austausch"]=""; $DataRow
["AustauschG"]=""; $DataRow["Teamchef"]=""; $DataRow["TeamchefG"]=""; $DataRow["Tore"]=""
}
ClearValues

for($i=0; $i -lt $Alles.length; $i++) {
$Line = $Alles[$i];
#"Line:"+$Line
if ($Line.StartsWith("####")) {
$Game++

$DataTable.Rows.Add($DataRow)

$GameText = "Record:$Game "

$DataRow = $DataTable.NewRow()
ClearValues

# if ($Game -eq 5) { break }
continue
}
if ($Line.StartsWith("#Spiel#")) {
Write-Host $GameText"Spiel"($Line.Substring(7))
# if ($Line.Substring(7) -eq 1) { break }
}
$regex = [regex] '#(.+)#(.*)'
$groups = $regex.Match($Line).Groups
$key = $groups[1].ToString().ToLower()
$value = $groups[2]

$value = $value.ToString().Trim(' ',',',';',':')

#Write-Host $key":"$value
switch ($key) {
"aufstellung" { if ($DataRow[$key] -eq "") { $DataRow[$key] = $value; }
else { $DataRow[$key+"G" ] = $value; } }
"austausch" { if ($DataRow[$key] -eq "") { $DataRow[$key] = $value; }
else { $DataRow[$key+"G" ] = $value; } }
"teamchef" { if ($DataRow[$key] -eq "") { $DataRow[$key] = $value; }
else { $DataRow[$key+"G" ] = $value; } }
default { $DataRow[$key] = $DataRow[$key] + $value; }
}
}

$Adapter.Update($DataTable)
$Connection.Close()

TextDateiLesen
Der Abschniu #Connection stellt die Verbindung
zur AccessDatenbank her.
Im Abschniu #Tabelle Games werden die beiden
benugten Zugrismechanismen SELECT und
INSERT fr ein so OleDbAdapterObjekt $Adapter
formuliert und fr jedes Feld ein eigenes Para
meterObjekt deniert. Der Einfachheit halber
werden alle Felder als Text imporuert. Die Um
wandlung in Zahlen (beim Feld Spiel) erfolgen
spter in der Datenbank durch nderung des
Feldtyps.
An dieser Stelle sieht man auch den nicht ganz
reibungsfreien Entwicklungsvorgang. Anfangs
wurde nmlich die Tabelle der Spiele Games ge
nannt, damit sie mit einer bereits bestehenden
FuballDatenbank zusammenpasst. Dann aber,
als dieser Arukel entstehen sollte, wurde die
Tabelle auf das deutsche Spiele umgendert.
Auch das sollte nicht bestehen bleiben und
wurde nach Ferugstellung der Datenbank auf
die Einzahl Spiel gendert. Aus Termingrnden
war es dann aber nicht mehr mglich, die Ein
zahlbildung auf die anderen Tabellen auszudeh
nen und daher ist zum Beispiele die Tabelle Tore
immer noch in der Mehrzahl geschrieben.
Dieses AdapterObjekt $Adapter kommuniziert
mit einer $DataTable, die die Spaltennamen und
Spaltentypen vom Adapter in $Adapter.Fill
($DataTable) bernimmt. Anfangs ist diese Ta
belle leer, lediglich die Anzahl und die Namen
der Spalten ist deniert.
Die Datei alles.txt wird in die Variable $Alles
eingelesen, eine neue Datenzeile $DataRow ange
legt.
Die forSchleife for($i=0; $i -lt $Alles.length;
$i++) liest alle Zeilen des Textes und berpr
den Aumau der Zeilen.
Beginnt eine Zeile mit ####, wir die Variable
$Game hochgezhlt, der mit Daten gefllte Da
tensatz $DataRow an die Tabelle $DataTable ange
fgt und ein neuer, leerer Datensatz $DataRow
erzeugt und alle Werte in diesem Datensatz mit
der Funkuon ClearValues gelscht.
Beginnt der Datensatz mit #Spiel# wird zur Kon
trolle ein Text ausgegeben.
Die Regular Expression $regex = [regex] '#(.+)#
(.*)' ndet Zeilen, die den gewhlten Aumau
#key#value hat und isoliert daraus die Variablen
$key und $value.
Bei den Keys aufstellung, austausch und teamchef
muss noch der Umstand gelst werden, dass es
bei den aktuellen Begegnungen immer zwei
gibt: die der Heimmannscha und die der Aus
wrtsmannscha. Bei der Gastmannscha wird
ein G zum Feldnamen angehngt.
Diese Schleife fllt daher 716 Datenstze in die
Datentabelle. Die bertragung in die Datenbank
erfolgt mit dem Kommando $Adapter.Update
($DataTable). Das gengt, denn wie die Tabelle in
die Datenbank zu bertragen ist, wurde bereits
in der Deniuon des Adapters genau festgelegt.
Um diese konkreten Schreibvorgnge, die ein
fach eine schleifenaruge Abarbeitung des INSERT
Kommandos ist, muss man sich nicht kmmern,
das kann der Adapter ganz von allein.




PCNEWS139 Juni 2014
24
C
L
U
B
D
E
V
.
N
E
T

#SpielerTabelleErstellen
#Datenbank
$DatabaseName = "s:\Desktop\nationalmannschaft\sterreich.accdb"
$ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$DatabaseName;"
$Connection = New-Object System.Data.OleDb.OleDbConnection $ConnectionString
$Connection.Open()

#Tabelle Spiele
$SqlSpielQuery = "SELECT Spiel, Aufstellung FROM Spiele ORDER BY SPIEL"
$CommandSpiel = New-Object System.Data.OleDb.OleDbCommand $SqlSpielQuery,$Connection
$AdapterSpiel = New-Object System.Data.OleDb.OleDbDataAdapter $CommandSpiel

$DataTableSpiel = New-Object System.Data.DataTable
[void] $AdapterSpiel.Fill($DataTableSpiel)
$DataTableSpielLength = $DataTableSpiel.Rows.Count

#Tabelle Spieler
$SqlSpielerQuery = "SELECT * FROM Spieler"
$SqlSpielerInsert = "INSERT INTO Spieler (Spiel, FName, VName, Verein, Spielposition, Captain, Lfd, Nummer) VALUES
(@Spiel, @FName, @VName, @Verein, @Spielposition, @Captain, @Lfd, @Nummer )";
$CommandSpieler = New-Object System.Data.OleDb.OleDbCommand $SqlSpielerQuery,$Connection
$AdapterSpieler = New-Object System.Data.OleDb.OleDbDataAdapter $CommandSpieler
$AdapterSpieler.ContinueUpdateOnError = $false
$CommandSpielerInsert = New-Object System.Data.OleDb.OleDbCommand $SqlSpielerInsert,$Connection
$AdapterSpieler.InsertCommand = $CommandSpielerInsert
$Parameter1 = New-Object System.Data.OleDb.OleDbParameter "@Spiel", Integer, 4, "Spiel"
$Parameter2 = New-Object System.Data.OleDb.OleDbParameter "@FName", Char, 255, "FName"
$Parameter3 = New-Object System.Data.OleDb.OleDbParameter "@VName", Char, 255, "VName"
$Parameter4 = New-Object System.Data.OleDb.OleDbParameter "@Verein", Char, 255, "Verein"
$Parameter5 = New-Object System.Data.OleDb.OleDbParameter "@Spielposition", Char, 255, "Spielposition"
$Parameter6 = New-Object System.Data.OleDb.OleDbParameter "@Captain", Boolean, 4, "Captain"
$Parameter7 = New-Object System.Data.OleDb.OleDbParameter "@Lfd", Integer, 4, "Lfd"
$Parameter8 = New-Object System.Data.OleDb.OleDbParameter "@Nummer", Integer, 4, "Nummer"
[void]$CommandSpielerInsert.Parameters.Add($Parameter1)
[void]$CommandSpielerInsert.Parameters.Add($Parameter2)
[void]$CommandSpielerInsert.Parameters.Add($Parameter3)
[void]$CommandSpielerInsert.Parameters.Add($Parameter4)
[void]$CommandSpielerInsert.Parameters.Add($Parameter5)
[void]$CommandSpielerInsert.Parameters.Add($Parameter6)
[void]$CommandSpielerInsert.Parameters.Add($Parameter7)
[void]$CommandSpielerInsert.Parameters.Add($Parameter8)

$DTSpieler = New-Object System.Data.DataTable
[void] $AdapterSpieler.Fill($DTSpieler)

for ($i=0; $i -lt $DataTableSpielLength; $i++) {
$Spiel = $DataTableSpiel.Rows[$i]["Spiel"].ToString()
$Team = $DataTableSpiel.Rows[$i]["Aufstellung"].ToString()
$Spiel+":"+$Team
$Split_Spieler = ',',';'
$Trim_Verein_Old = ' ',')'
$TeamA = $Team.ToString().Split($Split_Spieler)
#$TeamA
for ($j=0; $j -lt $TeamA.Length; $j++) {
$TeamA[$j] = $TeamA[$j].Trim()
}
for ($j=0; $j -lt $TeamA.Length; $j++)
{
$SpielerNummer = 0
$Spieler = ""
$Verein = ""
$Spielposition = ""
$Captain = $false

#if ($TeamA.Length -eq 0) {} else { $Spieler }
if ($Team.Contains("/")) { # neuere Aufstellung mit Rckennummern
$Spieler = ($TeamA[$j].Split('/'))[0].Trim(' ')
if ($TeamA[$j].Split('/').Length -eq 2) {
$Verein = ($TeamA[$j].Split('/'))[1].Trim(' ')
}
if ($TeamA[$j].Contains("(")) { # Rckennummer ist angegeben
$SpielerNummer = $Spieler.Substring(1,$Spieler.IndexOf(')')-1).Trim()
if ($SpielerNummer.Contains("C")) { $SpielerNummer = $SpielerNummer.Replace("C",""); $Captain=$true }
if ($SpielerNummer.Contains("GK"))
{ $SpielerNummer = $SpielerNummer.Replace("GK",""); $Spielposition="G" }
$Spieler = $Spieler.Substring($Spieler.IndexOf(')')+1).Trim()
}
} else { # alte Aufstellung
if ($TeamA[$j].Contains("(")) { # Verein ist angegeben
$Spieler = ($TeamA[$j].Split('('))[0].Trim(' ')
$Verein = ($TeamA[$j].Split('('))[1].Trim($Trim_Verein_Old)
} else { # Verein fehlt
$Spieler = $TeamA[$j].Trim(' ')
}
}
if ($j -eq 0) { $Spielposition="G" }
$Out = $Spiel+":"+$Spieler+"->"+$Verein+"->"+$SpielerNummer
if ($Captain -eq "true") {$Out +=" C"}
if ($Spielposition -ne "") {$Out +=" "+$Spielposition}
#$Out

$DataRow = $DTSpieler.NewRow()
$DataRow["Spiel"] = $Spiel
$SpielerTeilname = $Spieler.Split(' ')
switch ($SpielerTeilname.Count)
{
2 { if ($SpielerTeilname[1].Length -lt 3) {
$DataRow["FName"] = $SpielerTeilname[0]
$DataRow["VName"] = $SpielerTeilname[1]
} else {
$DataRow["FName"] = $SpielerTeilname[1]
$DataRow["VName"] = $SpielerTeilname[0]
}
}
default {
$DataRow["FName"] = $Spieler
$DataRow["VName"] = ""
}
}
$DataRow["Verein"] = $Verein
$DataRow["Spielposition"] = $Spielposition
$DataRow["Captain"] = $Captain
$DataRow["Lfd"] = $j + 1
$DataRow["Nummer"] = [int]$SpielerNummer

$DTSpieler.Rows.Add($DataRow)
}
}
$AdapterSpieler.Update($DTSpieler)
$Connection.Close()
SpielerTabelleErstellen
Der Abschniu #Datenbankstellt die Verbindung zur
AccessDatenbank her.
Im Abschniu #Tabelle Spiele werden die beiden
Felder benugten Felder Spiel und Aufstellung in
den DatenAdapter $AdapterSpiel eingelesen.
In den zweiten DatenAdapter $AdapterSpieler
wird die Tabellenstruktur der Tabelle Spieler
aufgebaut.
$Team aus der Tabelle Spiel enthlt die gesamte
Aufstellung als Text. Diese Textzeile wird in die
einzelnen Spieler in der ArrayVariablen $TeamA
zerlegt.
Jeder dieser Einzelteile enthlt ein besummtes
Spielerformat. Bei neueren Aufstellungen wird
der Verein nach dem Spielernamen durch einen
Schrgstrich / angegeben. Die Rckennummer
ist eingeklammert. Die zustzliche Kennzeich
nungen bei der Rckennummer: G steht fr
Goalie und C fr Captain.
Bei der lteren Schreibweise ist der Verein ein
geklammert und muss daher anders behandelt
werden wie bei den neuere Spielen.
Spielernamen knnen einteilig sein (nur Famili
enname) oder zweiteilig (Vorname und Famili
enname). Leider ist diese Systemauk nicht ganz
durchgngig und manchmal stehen Vor und
Nachname in der falschen Reihenfolge. Da
bleibt dann o nichts anders brig, als diese
punktuellen Fehler hndisch zu korrigieren.
Jedenfalls wird versucht, den Spielernamen in
die Felder FName und VName richug einzutragen und
gleichzeiug auch die Rckennummer in das Feld
Nummer.
In der Tabelle Spieler stehen die wesentlichen
Felder: Spiel, FName, Vname und Verein. Jeder Daten
satz ist ein Einsatz eines Spielers. Es gibt bis zum
Spiel 727 9180 Einstze. Diese jetzt imporuerte
Tabelle Spiel wird spter Spieler-Spiel heien,
weil daraus noch die Teiltabelle Spieler-Verein
und dann daraus die Tabellen Spieler und Verein
entstehen.
SpielerTauschTabelleErstellen
(Kode siehe nchste Seite) Leider ist der Spieler
tausch in einem anderen Format angegeben als
die Aufstellung. Das Feld Austausch in der
Tabelle Spiele wird daher zuerst in einer
Hilfstabelle Spieler_Spiel_Tausch impor
uert. Da die Vorgnge dem Import der Spieler
prinzipiell gleichen, wird dieser Vorgang nicht
weiter beschrieben. Bei diesem Import werden
die Bestandteile des Austausches (SpielerEin,
SpielerAus, VereinEin, VereinAus, Minute) in einzelnen
Felder abgelegt. Dann werden mit Miueln von
Access diese Datenstze dieser Tabelle Spie-
ler_Spiel_Tausch mit der AnfgeAbfrage
SpielerTausch Neue Spieler an die Tabelle
Spieler-Spiel angehngt und das Feld von
Minute auf den richugen Zeitpunkt eingestellt.
Die bisMinute ist 90. Danach wird bei jenen
Spielern, die das Feld verlassen, die bisMinute
auf denselben Wert eingestellt.
Anhang
Die beiden Programme SpielerTauschTabel-
leErstellen und ToreTabelleErstellen sind
in einem Anhang der PDFVersion dieser Ausga
be auf den Seiten 33 und 34 enthalten.




Juni 2014 PCNEWS139
25
C
L
U
B
D
E
V
.
N
E
T

Regex
Regular Expressions wie sie im Text
Editor Notepad++ verwendet wer
den. Andere Editoren oder Pro
grammiersprachen verwenden
eventuell eine geringfgig abwei
chende Syntax.
bereinstimmung einzelner Zeichen
. \c
Der Punkt summt bei der Suche mit jedem
Zeichen einer Zeile berein. Akuviert man
ndet \r\n kann man auch ber Zeilengrenzen
hinweg suchen.
\X
Findet ein einzelnes Zeichen gefolgt von beliebig
vielen kombinierbarer Zeichen. Das trim zu bei
UnikodeZeichen, die aus einem diakriuschen
Zeichen und dem eigentlichen Buchstaben
zusammengesetzt sind.
\
Der Backlash vor einem Zeichen erlaubt die
Verwendung dieses Zeichens ohne dessen
Bedeutung als RegexZeichen. Beispielsweise ist
\[ eine nende eckige Klammer und nicht der
Beginn einer Zeichenklasse.
Nicht ASCII-Zeichen
\xnn
Einzelnes Zeichen mit dem Kode nn. Was das
bedeutet, hngt von der Kodierung ab. Bei
spielsweise ndet \xE9 ein oder ein je
nachdem welche KodeSeite im Dokument
verwendet wird.
\x{nnnn}
Findet ein 16BitUnicodeZeichen. In ANSI
Dokumenten ist dieses Konstrukt nicht erlaubt.
\Onnn
Findet ein Zeichen im OktalKode
[[.Sortierreihenfolge.]]
Soruerreihenfolge festlegen. Beispielsweise wird
die Zeichenkombinauon "ch" im Spanischen als
einzelnes Zeichen betrachtet, obwohl sie aus
zwei Zeichen besteht. Das Zeichen ist dann
[[.ch.]]. Funkuoniert auch mit symbolischen
Namen wie zum Beispiel [[.BEL.]] mit dem
Zeichenkode 0x07.
Steuerzeichen
\a
Steuerzeichen BEL 0x07 (alarm).
\b
Steuerzeichen BS 0x08 (backspace). Nur innerhalb
einer Zeichenklassendeniuon erlaubt, ansons
ten hat es die Bedeutung einer Wortgrenze.
\e
Steuerzeichen ESC 0x1B (escape)
\f
Steuerzeichen FF 0x0C (form feed).
\n
Steuerzeichen LF 0x0A (line feed). Zeilenende in
UNIXSystemen.
\r
Steuerzeichen CR 0x0D (carriage return). Teil der
ZeilenendeSequenz CRLF in DOS/Windows und
auch in Mac 9 und frher. Sptere MacOS
benutzen \n.
\R
Irgend ein Zeilenendezeichen.
\t
Steuerzeichen TAB 0x09 (tab, or hard tab, horizontal
tab).
\C<character>
Das Steuerzeichen, das durch Isolierung der 6
niederwerugen Bit entsteht. Beispielsweise
stehen \C1, \CA and \Ca fr das Steuerzeichen
SOH 0x01.
Zeichenklasse
[...]
Deniert eine Zeichenklasse. Beispielsweise
bedeutet [abc] irgendeines der Zeichen a, b
oder c. Man kann mit einem Bindestrich auch
ganze Bereiche denieren, zum Beispiel [az] fr
irgendeinen Kleinbuchstaben. Man kann auch
die Soruerreihenfolge in diesem Rahmen ver
wenden, wie [[.ch.][.ll.]]
[^...]
Komplemenuert die Zeichenklasse, meint daher
alle Zeichen, die in der Zeichenklassendeniuon
nicht enthalten sind. Beispielsweise bedeutet
[^AZaz] jedes Zeichen auerhalb der Alpha
Zeichen. Vorsicht diese diesen Komplementr
Zeichenklassen, denn sie nden Zeichen immer
auch ber Zeilengrenzen hinweg. Will man das
verhindern, muss man die Zeilenendezeichen in
die Zeichenklasse aufnahmen. Beispiel:
[^ABC\r\n].
Vordefinierte Zeichenklassen
[[:alnum:]]
ASCIIZeichen und Zahlen
[[:alpha:]]
ASCIIZeichen
[[:blank:]]
Zwischenraum aber kein Zeilenende
[[:cntrl:]]
Steuerzeichen
[[:d:]] [[:digit:]]
Dezimalzahl
[[:graph:]]
Grakzeichen
[[:l:]] [[:lower:]]
Kleinbuchstabe
[[:print:]]
Druckbares Zeichen
[[:punct:]]
Sonderzeichen: , " ' ? ! ; : # $ % & ( ) * + / < > =
@ [ ] \ ^ _ { } | ~
[[:s:]] [[:space:]]
Zwischenraum
[[:u:]] [[:upper:]]
Grobuchstabe
[[:unicode:]]
Irgendein Zeichen mit einem Kodewert ber 255
[[:w:]] [[:word:]]
Wortzeichen
[[:xdigit:]]
HexadezimalZeichen
[[:\pshort name:]] [[\p{name}:]]
Idenusch mit [[:name:]]. Beispielsweise stehen
\pd und \p{digit} fr eine Zier \d.
[[:Pshort name:]] [[:\P{name}:]]
Idenusch mit [^[:name:]] (gehrt nicht zu der
Zeichenklasse).
\d
Zier 09 range, entspricht [[:digit:]].
\D
Keine Zier, entspricht [^[:digit]].
\l
Kleinbuchstabe, entspricht [az] oder [[:lower:]].
Wenn die Opuon "Match case" ausgeschaltet
ist, entspricht das einem Wortzeichen \w
\L
Kein Kleinbuchstabe
\u
Grobuchstabe, entspricht [[:upper:]].
\U
Kein Grobuchstabe
\w
Wortzeichen. Entweder ein Buchstabe, eine Zahl
oder ein Unterstrich. Entspricht [[:word:]].
\W
Kein Wortzeichen. Entspricht [[:alnum:]] mit der
Ergnzung des Unterstrichs.
\s
Abstandzeichen; enthlt SP, TAB und EOL.
Entspricht [[:space:]].
\S
Kein Abstandzeichen.
\h
Horizontales Abstandzeichen. Enthlt SP, TAB
und LF.
\H
Kein Horizontales Abstandzeichen
\v
Verukales Abstandzeichen. Enthlt die Steuer
zeichen VT, FF und CR = 0x0B (verucal tab),
0x0D (carriage return) und 0x0C (form feed).
\V
Kein Verukales Abstandzeichen.
[[=primary key=]]
Alle Zeichen, die sich von primary key durch
die Schreibweise (gro/klein), den Akzent oder
eine hnliche Variauon unterscheiden. Beispiel:
[[=a=]] ndet irgendeines der Zeichen: a, , , ,
, , , A, , , , , and .
Vervielfachende Operatoren
+
Findet eines oder mehrere des vorigen Zeichens,
so viele wie mglich. Beispiel: Sa+m ndet Sam,
Saam, Saaam. [aeiou]+ ndet aufeinander
folgende Selbstlaute.
*
Findet kein oder mehrere des vorigen Zeichens,
so viele wie mglich. Beispiel: Sa*m ndet Sm,
Sam, Saam
?
Findet keines oder eines des vorigen Zeichens.
Beispiel: Sa?m ndet Sm and Sam, aber nicht
Saam.
+?
Findet eines oder mehrere des vorigen Zeichens,
aber so wenig wie mglich. Beispiel: Sa+?m
ndet Sam, Saam, Saaam. [aeiou]+ ndet
aufeinander folgende Selbstlaute.
*?
Findet kein oder mehrere des vorigen Zeichens,
so wenig wie mglich.
Beispiel: m.*?o ndet im Text marginbouom:
0; marginbo, whrend m.*o ndet margin
bouo.
{n}
Findet n Elemente.
{n,}
Findet n oder mehr Elemente, so viele wie
mglich.
{n,}?
Findet n oder mehr Elemente, so wenig wie
mglich.
{m,n}
Findet m bis n Elemente, so viele wie mglich.
{m,n}?
Findet m bis n Elemente, so wenig wie mglich.
Anker
^
Findet den Zeilenbeginn (auer innerhalb einer
Zeichenklasse [].
$
Findet das Zeilenende.
\<
Findet einen Wortanfang.
\>
Findet ein Wortende.
\b
Findet entweder Wortanfang oder Wortende.
\B
Findet weder Wortanfang noch Wortende.
\A \'
Der Beginn des Suchstrings.
\z \`
Das Ende des Suchstrings.
Gruppen
(.)
Klammern markieren eine Gruppe, einen Teil
des Suchbegris. Der so markierte Teilstring
kann bei Ersetzungsvorgngen als Variable
verwendet werden. Gruppen knnen verschach
telt werden.
(?<some name>.) (?'some name'.)
(?(some name) .)
Benennung von Gruppen.
\gn \g{n}
Die nte Gruppe (d.h. eingeklammerte Gruppe).
Die zweite Form hat Vorteile, weil n auch grer
als 9 werden kann. Wenn n' negauve ist, warden
die Gruppen nach rckwrts gezhlt, sodass \g2
die vorletze gefundene Gruppe ist.
\g{something} \k<something>
Findet die mit something benannte Gruppe.
\1 \2...
Ersetzung: \1 ndet die ersten angegeben
Gruppe. Beispiel: ([Cc][Aa][Ss][Ee]) ndet
alle denkbaren Schreibweisen von Case. Ein
RegexAusdruck kann mehrere Untergruppen
\2, \3 usw. haben.
Verbesserung der Lesbarkeit
(:.)
Eine Gruppierung, zur Erleichterung der Lesbar
keit.
(?#...)
Kommentar. Comments. Eventuell gemeinsam
mit dem xModizierer ein guter Ansatz zur
Erleichterung der Lesbarkeit.
nderungen der Suchregeln
\Q
Behandelt Zeichen wrtlich bis zum Aureten
von \E
\E
Beendet die wrtliche Betriebsart. Beispiel:
"\Q\*+\Ea+" ndet "\*+aaaa".
(?:flags-not-flags ...) (?:flags-not-
flags:...)
Deniert Bedingungen (setzt oder lscht Flags)
fr eine Suche:
i schreibweisenunabhgnig (default: o)
m ^ und $ nden eingebeuete Zeilenunbrche.
s Punkt ndet Zeilenumbruch.
x ignoriert Spaces sofern sie nicht mit Backslash
eingeleitet werden (default: o)
Alternierungskonstrukte
|
Findet einen von mehreren opuonalen Suchbe
grien. Beispiel: eins|zwei|drei ndet entweder
"eins", "zwei" oder "drei". Der Vergleich ndet
von links nach rechts stau. Mit (?:) kann auch
ein leerer String als Alternauve angegeben
werden.
\K
Lscht den bereits gefundenen Text exakt an
diesem Punkt. Beispiel: Suche nach
Apfel\Kbaum ndet zwar Apfelbaum
schrnkt aber das Gesuchte auf baum ein.
Ersetzungen
\a,\e,\f,\n,\r,\t,\v
Setzt das entsprechende Steuerzeichen ein, also
BEL, ESC, FF, LF, CR, TAB und VT.
\Ccharacter" \xnn \x{nnnn}
Das Steuerzeichen, das durch Isolierung der 6
niederwerugen Bit entsteht, wird eingefgt.
Beispielsweise stehen \C1, \CA and \Ca fr das
Steuerzeichen SOH 0x01.
nnnn erfordert Unicode Kodierung.
\l
Nchstes Zeichen als Kleinbuchstaben ausge
ben.
\L
Alle nchsten Zeichen werden bis zum Aureten
eines \E als Kleinbuchstaben ausgeben.
\u
Nchstes Zeichen als Grobuchstaben ausge
ben.
\U
Alle nchsten Zeichen werden bis zum Aureten
eines \E als Grobuchstaben ausgeben.
\E
Beendet die erzwungene Schreibeweise, die
durch \L oder \U eingeleitet wurden.
$& $MATCH ${^MATCH}
Der gesamte gefundene Text.
$` $PREMATCH ${^PREMATCH}
Der Text zwischen der vorigen und der aktuellen
bereinsummung oder . wenn es die erste
bereinsummung ist, der Text vor der berein
summung.
$" $POSTMATCH ${$POSTMATCH}
Der Text nach der aktuellen bereinsummung.
$LAST_SUBMATCH_RESULT $^N
Der Text, mit der der letzte Suchbegri berein
gesummt hat.
$+ $LAST_PAREN_MATCH
Der Text, mit der der letzte Suchbegri im
Suchmuster bereingesummt hat.
$$
Das Dollarzeichen wird zurckgegeben.
$n ${n} \n
Der Text, der mit dem nten Suchbegri
bereingesummt hat..
$+{name}
Der Text, der mit dem mit name benannten
Suchbegri bereingesummt hat..
Download
Webversion
http://d.pcnews.at/ins/
pcn/139/002500/
RegularExpressions.docx




PCNEWS139 Juni 2014
26
C
L
U
B
D
E
V
.
N
E
T

PowerShell Kurz-Referenz
Franz Fiala
Argumente
Die Argumente zu einer Funkuon sind in der $args Variablen. Man
kann auf diese Argumente in einer hnlichen Schleife durchlaufen wie
diese:
foreach ($i in $args) {$i}
Der Zugri auf jedes einzelne Argument erfolgt ber den Index,
beginnend bei 0.
$args[0]
Das letzte Element wir ber den Index 1 zugegrien.
$args[-1]
Bunter Text
Um eine Textausgabe bunt zu gestalten, kann man die Vordergrundfar
be im Kommando Write-Host ndern.
Write-Host "test" -foregroundcolor "green"
Write-Host "test" -backgroundcolor "red"
Zeilenumbruch
Das Zeichen `n bewirkt einen Zeilenumbruch.
Write-Host "Zeile 1.`nZeile 2."
Inverse Schri
Das Kommando Write-Warning schreibt eine Nachricht invers.
Write-Warning "Es ist ein Fehler aufgetreten."
Kommentare
Eine Raute am Beginn eines Textes ist ein Kommentar.
# Das ist ein Kommentar und wird nicht ausgefhrt.
Texteingabe von der Konsole
Fr das Einlesen von Benutzereingaben wird Read-Host verwendet.
$a = Read-Host "Bitte einen Namen eingeben"
Umfalten einer Skriptzeile
Mit dem Backuck kann man eine Zeile in der nchsten Zeile fortset
zen.
Write-Host `
"Das ist eine Fortsetzung der Zeile"
Auch beim Verkeuungsoperator kann eine Zeile umgebrochen werden
(sofern das Kommando eine Verkeuung verwendet).
Get-ChildItem C:\Scripts |
Sort-Object Length Descending
Mehrere Kommandos in einer Zeile
Mehrere Kommandos in einer Zeile trennt man mit einem Strichpunkt.
$a = 1,2,3,4,5; $b = $a[2]; Write-Host $b
Vergleiche
Kommandos, die Vergleiche enthalten (z.B. Where-Object) benutzen
besondere Vergleichoperatoren, die mit einem Bindestrich eingeleitet
werden.
Ein c unmiuelbar nach dem Bindestrich macht den Vergleich von der
Schreibweise (groklein) abhngig. Beispielsweise ist ceq die gro
kleinVariante von eq.
lt kleiner als (less than)
le kleiner oder gleich (less than or equal to)
gt grer als (greater than)
ge grer oder gleich (greater than or equal to)
eq gleich (equal to)
ne ungleich (not equal to)
like wie (like), erlaubt Wildcards
notlike nicht wie (not like), erlaubt Wildcards
Lesen einer Textdatei
Das Kommando Get-Content liest den Text aus einer Datei in eine
Variable.
$a = Get-Content C:\Scripts\Test.txt
Jede Zeile ist ein Element im Array $a. Jede Zeile kann ber einen
Index erreicht werden. Erste Zeile im Array $a:
$a[0]
Letzte Zeile im Array $a
$a[-1]
Die Anzahl der Zeilen, Wrter und Zeichen in einer Textdatei besum
men.
Get-Content c:\scripts\test.txt |
Measure-Object -line -word -character

Schreiben einer Textdatei
Um eine Variable in eine Textdatei zu schreiben, benutzt man das Out-
FileKommando.
Get-Process | Out-File C:\Scripts\Test.txt
Um einen Text an eine bestehende Datei anzuhngen, muss der
Parameter append verwendet werden.
Get-Process | Out-File C:\Test.txt append
Man kann auch die aus DOS bekannten Parameter zur Umlenkung
verwenden (> schreiben, >> anhngen).
Get-Process > C:\Scripts\Test.txt
Eine andere Opuon erlaubt die Speicherung als CSVDatei (Comma
Separated Value).
Get-Process | Export-CSV C:\Test.csv
Ausdruck
Die Ausgabe an den Drucker erfolgt mit dem Kommando Out-
Printer:
Get-Process | Out-Printer
Bedingte Anweisungen
Eine if Anweisung schaut etwa so aus:
$a = "wei"
if ($a -eq "red")
{" Die Farbe ist rot."}
elseif ($a -eq "wei")
{" Die Farbe ist wei."}
else
{" Die Farbe ist blau."}
Mit switch vereinfacht sich eine Mehrfachentscheidung:
$a = 2
switch ($a)
{
1 {"Die Farbe ist rot."}
2 {"Die Farbe ist blau."}
3 {"Die Farbe ist grn."}
4 {"Die Farbe ist gelb."}
default {"Es ist eine andere Farbe."}
}
For und For EachSchleifen
Um Vorgnge zu wiederholen, benutzt man for oder foreach
Schleifen.
for ($a = 1; $a -le 10; $a++) {$a}
foreach ($i in get-childitem c:\scripts) {$i.extension}
DoLoopSchleifen
Schleifen mit Abfrage am Ende:
$a = 1
do {$a; $a++}
while ($a -lt 10)

$a = 1
do {$a; $a++}
until ($a gt 10)
COMObjekt erzeugen
Die folgenden Zeilen nen Excel und schalten es ein.
$a = New-Object -comobject `
"Excel.Application"
$a.Visible = $True
.NETObjekt erzeugen
Eine Instanz des DotNetObjekts system.Net.DNS erzeugen und die
gewnschte Methode resolve aufrufen.
[system.Net.DNS]::resolve("207.46.198.30")
Eine ObjektReferenz eines DotNetFrameworkObjekts erzeugen.
$a = new-object `
-type system.diagnostics.eventlog `
-argumentlist system
Eigenschaen auswhlen
Um mit besummten Eigenschaen einer Sammlung zu arbeiten oder
diese anzuzeigen, leitet man das Objekt an das Kommando Select-
Object weiter:
Get-Process | Select-Object Name, Company
Daten sorueren
Sorueren nach der Eigenscha ID:
Get-Process | Sort-Object ID
nderung der Soruerrichtung
Get-Process | Sort-Object ID descending
Nach mehreren Eigenschaen sorueren
Get-Process | Sort-Object ProcessName, ID
WMI
Ein WMIObjekt nen, um Informauonen ber den Computer zu
bekommen
Get-WMIObject Win32_BIOS
Wenn die gewnschte Klasse nicht im Namensraum cimv2 ist, muss
der Parameter -namespace verwendet werden:
Get-WMIObject SystemRestore `
-namespace root\default
Wenn es sich um einen anderen Computer handelt, muss der Parame
ter computername verwendet werden:
Get-WMIObject Win32_BIOS `
computername atl-ws-01
Mit dem Parameter -query kann die Ausgabe eingeschrnkt werden.
Get-WMIObject -query `
"Select * From Win32_Service `
Where State = 'Stopped'"

Acuve Directory
Um das Programm an einen Acuve Directory Account zu binden, muss
der LDAPProvder benutzt werden.
$a = [adsi] "LDAP://cn=kenmyer, `
ou=Finance, dc=fabrikam, dc=com"
Alle Objekte in einer OU aufzulisten, ist etwas komplizierter. Man
bindet das Programm an die OU und benutzt dann die Methode
PSBase_GetChildren().
$objOU = [ADSI]`
"LDAP://ou=Finance,dc=fabrikam,dc=com"
$users = $objOU.PSBase.Get_Children()
$users | Select-Object displayName
Lokale User
Um das Programm an einen lokalen User zu binden, benutzt man den
WinNT provider:
$a = [adsi] "WinNT://atl-ws-01/kenmyer"
$a.FullName
Hilfe
Fr jedes Kommando kann man mit Get-Help und dem Parameter
full eine ausfhrliche Informauon erhalten.
Get-Help Get-Process full
Anzeige von Beispielen
Get-Help Get-Process examples
Alle Kommandos erfhrt man mit Get-Command.
Get-Command
Alle AliasNamen erfhrt man mit dem Kommendo Get-Alias:
Get-Alias
SicherheitsEinstellungen
Um Skripts aus der PowerShell ausfhren zu knnen, mssen die
Sicherheitseinstellungen gendert werden, weil PowerShell in der
Anfangseinstellung nur signierte Skripts ausfhrt. Um auch lokal
verfasste Skripts ausfhren zu knnen, die signiert oder auch unsig
niert sein knnen, benutzt man folgendes Kommando:
Set-ExecutionPolicy RemoteSigned
Objekt untersuchen
Um Informauonen ber ein Objekt zu erhalten, legt man zuerst eine
Instanz des Objekts an und leitet das Objekt an das Kommando Get
Member weiter. Beispielsweise erhlt man mit dem folgenden
Kommando alle Eigenschaen und Methoden der aktuellen Ar
beitsumgebung.
Get-Process | Get-Member
Konsolenfenster lschen
Um den Inhalt des Kommandofensters zu lschen, benutzt man das
Kommando ClearHost oder dessen Alias cls.
Copy & Paste
Mit WindowsX> PowerShell nen.
Das Eigenschasfenster durch einen Mausklick auf das Symbol links
oben nen.
In der DialogBox Opons den QuickEdit Mode auswhlen und auf OK
klicken.
Um einen Text zu kopieren, diesen Im Konsolenfenster markieren und
auf Enter klicken. Um einen Text in der Zwischenablage einzufgen,
auf die rechte Maustaste klicken.
Skript ausfhren
Um ein Skript auszufhren, gibt man den vollen Pfad ein:
C:\Scripts\Test.ps1
Wenn der Pfad Spaces enthlt, muss die Zeile mit Anfhrungszeichen
eingeschlossen werden.
&"C:\Scripts\My Scripts\test.ps1"
Von auerhalb der Windows PowerShell, etwa aus einer DisolgBox
cmd.exe, ru man PowerShell auf und bergibt den Pfad als Parame
ter:
powershell.exe noexit C:\Scripts\Test.ps1
Mit dem Parameter noexit wird sichergestellt, dass das Fenster auch
nach Ausfhrung des Skripts oen bleibt.
Mehr Informauonen
hp://technet.microso.com/enus/scriptcenter/dd742419.aspx.
hp://technet.microso.com/dede/library/cc196356.aspx
Windows PowerShell Language Specicauon
hp://www.microso.com/enus/download/details.aspx?id=36389
Dieses Dokument steht auch als WordDatei in einer etwas lngeren
Variante bei der WebVersion dieses Arukels zur Verfgung.
Download
Webversion
http://d.pcnews.at/ins/pcn/139/002600/
PowerShell Kurz.docx




27
Juni 2014 PCNEWS139
C
L
U
B
M
O
B
I
L
E
.
A
T

Jetzt entsteht natrlich jede Menge Erklrungs
bedarf. Schon wieder ein One? Vor einem Jahr
wurde man noch zum Unterschied zwischen
One X, One X+ und One belehrt und jetzt das zur
vlligen Verwirrung. Das ist leider nicht unrich
ug. Darum wird man zwecks Dierenzierung das
aktuellste Flaggschi von HTC meist mit dem
Zusatz 2014 oder M8 nden. Das Krzel M8 ist
eigentlich nur eine fortlaufende Modellbezeich
nung, so trug der Vorgnger den internen Code
namen M7.
Doch was ist neu? Ist es einfach nur wieder
etwas grer und schneller, werden sich viele
fragen. Nun zumindest laut HTC wurden ber
100 Verbesserungen durchgefhrt. Mit Sieges
pltzen in der Vergangenheit, kann das wohl nur
erneute Spitzenplatzierungen bringen. Und
noch etwas hat HTC spitzenmig gemacht: Es
wurde am 28.Mrz vorgestellt und am gleichen
Tag begann der Verkauf, ab 4.April war es fast
berall verfgbar. Andere Hersteller zeigen ihre
Modelle im Februar beim Mobile World Con
gress in Barcelona her und dann darf der End
kunde frustrierende Monate lang warten, bis er
es im Laden kaufen kann.
Hlle
HTC bleibt seiner DesignLinie treu (zum Glck)
und gibt seinem Flaggschi wieder einen Alumi
niumUnibody. Obwohl aus einem Stck heraus
gefrst, gibt es keine unangenehme Kante.
Schner kann man Metall fr die Hand gar nicht
formen. Trotz AluminiumUnibody gibt es kei
nerlei Empfangsprobleme und auch durchge
fhrte Tests ergeben tadellose Empfangsstrken
und bertragungsgeschwindigkeiten, da HTC
die Antennen nach auen in Kunststostreifen
gelegt hat. Das Gehuse ist zwar nicht wasser
dicht, aber Schutzklasse IPX3 (temporres
Spritzwasser) geht sich aus. Zur Auswahl stehen
die Farben Grau mit gebrsteter Oberche
(Gunmetal Gray) und die als glau gehaltenen
Ausfhrungen Silber (Glacial Silver) und Gold
(Amber Gold).
Bei der Gelegenheit sei erwhnt, dass HTC
neuerweise auch eine Schutzhlle mitliefert.
Das ist jedoch noch nicht das in Krze erhltli
che HTC Dot View Cover (Bild 1).
Front
Der Front bleibt im Wesentlichen das 5
Display, welches nach wie vor in FullHD aust
und keine Wnsche oen lsst, ja sogar ganz
nebenbei einen neue Rekord in Sachen Reaku
onszeit aufstellt. In einem Test wurden lediglich
46ms (Millisekunden) Latenz gemessen. Zur
Erklrung: unter 50ms ist ungefhr gleichbedeu
tend mit scheinbar unantastbaren unter 9,5s
beim 100mSprint. Selbst das ReunaDisplay des
iPhone 5, tummelt bei 75ms herum (Bild 2). Der
mit Gorilla Glas geschtzte Touchscreen lsst
sich zudem brigens auch problemlos mit Hand
schuhen bedienen!
Und dann sind da noch die StereoLautsprecher
(mit BenachrichugungsLED im oberen Schutz
giuer), die dem One sowieso das wahre Allein
stellungsmerkmal verleihen.
Sound
Kein Smartphone kann hier dem One nur ann
hernd das Wasser reichen. Der so genannte
BoomSound wird auch ohne BeatsAudioLogo
seinem Namen gerecht. Laut HTC blasen noch
mal 25% mehr Volumen aus den Stereolautspre
chern, meine Vergleichsmessung ergaben (mit
+6db) sogar 1,5x mehr Lautstrke als beim Vor
gnger, bei nicht schwchelnder Qualitt zu
sammen mit dem absolut brillanten Bildschirm
hat man mehr oder weniger das Kinoerlebnis
immer mit dabei. Wenn der Hersteller auch
andere Eigenschaen hervorgehoben haben
will, dies ist die unangefochtene Strke des One.
Kameras
Obwohl die Ultrapixelkamera mit ihren 4 MP
quasi die alte blieb, macht das One M8 nun
trotzdem wesentlich bessere Bilder als der Vor
gnger. Man kann behaupten, HTC hat bei der
Kamera bei der Ausung gespart, bei der restli
chen Ausstauung aber kann man von einem
wahren Erguss sprechen. Wobei von den vielen
Features, wahrscheinlich fr den ambiuonierten
Hobbyknipser, eventuell der manuelle Modus
das Highlight ist. Fr Smartphones unblich, ist
hier bei allem Denkbaren die Automauk zu de
akuvieren und manuell zu steuern. Sogar Ver
schlusszeiten und Focus sind einstellbar. Und
das nicht einmal kompliziert. Die Bedienung
hierzu kann uneingeschrnkt als durchdacht
bezeichnet werden (Bild 3).
Die am strksten beworbene Neuheit, war die
zweite (eigentlich driue) Kamera. Neben der
Hauptkamera auf der Rckseite ist nun also
noch eine weitere platziert. Mit rund 2 MP sam
melt sie bers geschossene Bild verteilt die
Enuernungen, weshalb sie des eren auch als
Tiefensensor bezeichnet wird. Mit diesen Infor
mauonen kann der Nutzer im Nachhinein den
Das neue HTC One (M8)
Andreas Prochazka
Bild 1: Dot View Cover
Bild 2: DisplayLatenz
Bild 3: Manueller Modus




28
PCNEWS139 Juni 2014
C
L
U
B
M
O
B
I
L
E
.
A
T

Fokus auf ein beliebiges Objekt setzen und die
Soware schr alles in dieser Ebene, der Rest
wird unscharf (Bild 4). Dieser neue Gag wird
dann Ufocus genannt und gibt den Fotografen
ein Werkzeug in die Hand, Akzente seinen Vor
stellungen gem zu setzen. Die Realisierung ist
jedoch noch etwas verbesserungswrdig. So
sind die Grenzen teilweise nicht exakt genug
und der UnschrfeEekt ist eher zu stark, je
doch nicht jusuerbar.
Je nach Mouv liefern aber anhand der 3D
Informauonen die sogenannten Verfremdungs
eekte (Skizze, Zoom, Cartoon, Frben) eben
falls nicht zu verachtende Ergebnisse (Bild 5). So
kann das gewnschte Objekte durch Auswhlen
hervorgehoben werden, indem es in Farbe
bleibt und der Rest (blicherweise der Hinter
grund) wird z.B. schwarzwei oder skizziert
dargestellt. Weiterst amsant, mehr aber auch
nicht, ist ferner der verfgbare 3DEekt durch
Kippen des Telefons. Einziger Wermutstropfen
ist, dass diese Technik mit dem opuschen Bild
stabilisator ber Kreuz gekommen ist und dieser
deshalb kurzerhand weggelassen wurde.
Ein DualFarbBlitz sorgt nicht nur fr ausrei
chendes Zusatzlicht, sondern auch fr wrmere
Farben, was vor allem Portrts zu Gute kommen
soll und die zuletzt bereits integrierte Funkuon
namens Zoe ist der Kamera selbstverstndlich
auch erhalten geblieben (siehe PCNEWS 135,
Seite 8).
Ansonsten ist noch die rekordverdchuge kurze
Auslsezeit zu erwhnen und gemessene 16
Bilder pro Sekunde in der Serienaufnahme sind
ebenfalls aussagekrig genug.
Die Frontkamera motzt HTC auf 5MP auf und
erreicht damit die absurde Situauon, dass diese
nun mehr Ausung, als die eigentliche Haupt
kamera hat und somit ist sie auch die derzeit
beste Frontkamera am Markt. Mit ihrem Weit
winkel macht sie nicht nur gute Selbstaufnah
men im DualModus knipst man hinten und
vorne gleichzeiug die Posiuon des Frontkame
rabildes schiebt man im Hauptkamerabild ein
fach hin wo man will.
Leistung
Als Herz dient der Vierkernprozessor Snapdra
gon 801 von Qualcomm, den HTC hierzulande
mit 2,3 GHz arbeiten lsst. Im HighPerformance
Mode, der letztlich auch unter Entwicklerein
stellungen akuviert werden kann, erreichte das
One fr die Konkurrenz unangenehm gute
BenchmarkWerte (Bild 6), bis sich herausge
stellte, dass das Gert Testprogramme erkennt
und die Drossel voll aufmachte. Man kann das
als Schummelei bezeichnen oder aber auch als
sehr clever. Dass HTC beim Managen von Per
formance und Energie seine Hausaufgaben ge
macht hat, zeigt die Praxis. Das One lu in
jeder Situauon immer wie geschmiert und trotz
dem kommt es mit dem nicht berdimensio
nierten 2600mAhAkku bei halbwegs typischem
SmartphoneGebrauch rund eineinhalb bis zwei
einhalb Tage aus. Traumwerte, wenn man be
denkt, welch heies Eisen man in Hnden hlt.
Auch laut diversen Tests liegt die Laufzeit des
neuen HTC Flaggschies derzeit ganz vorne im
Vergleich (Bild 7). HardcoreNutzer knnen
gerne sogar den extremen Sparmodus einstel
len und so zwei Wochen ohne Stromquelle auf
Expediuon gehen, sofern sie dann auf Mulume
dia und Spiel verzichten knnen.
Wenn es dann endlich wirklich Zeit wird, eine
Steckdose aufzusuchen, gibt es auch hier Posiu
ves zu vermerken. Das neue One wird mit einem
1,5ALadegert ausgeliefert. Gute Kopfrechner
knnen es bereits erahnen: somit ist eine Vollla
dung in nur 1 3/4 Stunden mglich. Angeblich
wird es in Laufe des Jahres noch eine Verbesse
rung um 10 Minuten miuels eines 1,67 A
Netzteils geben. Ob dies noch Sinn macht, mge
jeder fr sich entscheiden, wenn es dann soweit
ist.
Bedienung
HTC Sense, so der Name des UI (User Interface)
des Herstellers, ist bei der Version 6.0 angelangt
und die wesentlichste Neuerung ist sicher
Launch Motion. Mit dieser entgegenkommen
den Verbesserung ist es nicht mehr notwendig,
den Hauptschalter zum Aufwecken des Telefons
aufzusuchen, auch wenn dieser gut greimar ist
und eine knackigen Druckpunkt aufweist. Stau
dessen nimmt man es in die Hand und uppt zum
Beispiel zwei Mal auf das Display um es Aufzu
wecken oder man wischt gleich einfach nach
oben um es zu Entsperren. Eventuell eingestell
te Sicherheitsabfragen (wie PIN, Passwort, Mus
ter oder Gesichtserkennung) bleiben natrlich
dennoch aufrecht und selbstverstndlich lassen
sich auf Wunsch diese Launch Mouon Gesten
auch deakuvieren.
Auch ein Kameraschnellstart wurde organisiert.
Einfach das Handy in querformaug (Landscape)
in die Hand nehmen und die Lautstrkentaste
drcken. Schon startet das One zur Kamera
durch und ist aufnahmebereit. Schneller geht es
derzeit nicht (Bild 8).
HTC verabschiedete sich jedoch von den unte
ren Hardwaretasten fr Home und Zurck. Jene
sind dann im Screen eingeblendet, dafr praku
scherweise zustzlich wieder mit der Taste Letzte
Apps. Diese nderung sorgte anfangs fr Emp
rung, ist aber in der Praxis kaum der Rede wert.
Am Homescreen sind die Tasten transparent
eingeblendet und stren nicht, lediglich bei der
Kamera muss man sie mit einen Tipp wieder
herholen und in den anderen Apps sind sie im
mer verfgbar. Mangels Sensortasten am unte
ren Rand ergibt sich sogar der Vorteil, dass man
nun das Phone halbwegs problemlos weiterrei
chen kann, ohne versehentlich die gewnschte
Anzeige zu verlassen.
Verbessert wurde das bereits bekannte Blink
feed, welches News und Social Network auf
einen Bildschirm zusammenzieht. Blinkfeed hat
mehr Anhnger als man glauben sollte, so wird
es sogar bald in Google Playstore verfgbar
sein.
Sonsges
Ansonsten ist alles an Bord was man braucht
(oder auch nicht): Bewegungssensor, Licht
sensor, Annherungssensor und sogar Barome
ter, ebenso AGPS inklusive GLONASS und Kom
pass. Schon seltener geworden und auch noch
vorhanden ist ein UKWRadio und in IRSender
(Infrarot). Letzteren spricht man ber HTC Sense
TV an. Das ist eine gelungen Kombinauon aus
EPG (Electronic Program Guide, also Elektronischer
Programmfhrer) und Fernbedienung. Sense TV
kennt nahezu alle Gerte, sogar die UPC Media
box und sollten alle Stricke reien ist sie lernf
hig und kann sogar als Fernauslser fr eine
Spiegelreexkamera dienen.
WLAN 802.11a/b/g/n/ac (2.4 & 5 GHz, Miracast,
DLNA), NFC und Bluetooth sind heutzutage
selbstverstndlich, genauso wie das nen und
Bearbeiten von OceDokumenten. Ungewhn
licher ist da eher Fitbit, eine Art Akuvittstra
cker mit dem das neue One nun auch kooperie
ren kann.
Fazit
Das One M8 ist vermutlich das wohlgeformteste
Stck Metall auf Erden mit dem man telefonie
ren kann und das noch dazu sehr lange und sehr
gut. Wenn man den schnellsten Bildschirm, die
schnellste Kamera, die beste Akkulaufzeit, den
besten Sound oder einfach das schnste Design
sucht, kommt man am neuen HTC One nicht
vorbei.
Bild 4: UFocus Bild 5: Verfremdungseekte
Bild 6 Bild 7
Bild 8




Juni 2014 PCNEWS139
29
C
L
U
B
C
O
M
P
U
T
E
R
.
A
T

Lena Doppel
Lena Doppel ist Digital Strategist bei catx exhibiuons
& media und Fonda Interacuve. Von 20062012 war
sie Univ.Ass. fr Medientechnologien an der Univer
sitt fr angewandte Kunst Wien. Sie spricht, bert,
coacht und schult in den Bereichen Webdesign,
OnlineMarkeung & Digitale Strategie und Social
Media Redakuonsarbeit.
Mag. Hubert A. Eisl, MBA
Technische Geschsfhrung der ELGA GmbH. GF
der ELGA GmbH, Mitglied des Vorstandes von IHE
Austria; davor bei Unternehmensberatung Accenture
(19982004) und ITSV GmbH (ab 2005) tug: Be
reichsleiter (20052007 ProgrammManagement
und Backoce, ab 2008 Kundenbeziehungs und
ProgrammManagement); in der ITSV GmbH u. a. fr
die Realisierung des zentralen Pauentenindex, einer
Kernkomponente der elektronischen Gesundheitsak
te, verantwortlich; Vortragstugkeit
Mag. Thomas Geldmacher
Kulturpoliuscher Referent im Grnen Parlaments
klub. Arbeitsbereiche: Kultur, Kunst; Ausschussbe
treuung: Kunstausschuss, Kulturausschuss, Volksan
waltschasausschuss; Kontakt bzw. Ansprechpart
ner fr Kultur und Kunstangelegenheiten
DI Roland Giersig
Geschsfhrer und Inhaber von SafeSec e.U. Pro
fessioneller iTpfelreiter und Besserwisser. Sicher
heitsexperte. OpenSourceEntwickler. Physiker. Jus
Student. Fan der direkten Demokraue.
Mag. Marna Grom (MVP)
Geschsfhrerin atwork Informauon Technology
GmbH. Maruna Grom wurde als erste Frau im
deutschsprachigen Raum Anfang 2011 von Microso
mit dem Most Valuable Professional Award (MVP)
fr ihre Experuse rund um Microso Online Services
ausgezeichnet und ist damit weltweit eine von weni
gen (anfangs acht) ausgezeichneten MVPs fr Oce
365!.
Chrisan Haberl
Chrisuan ist im Hauptberuf Geschfhrer der Firma
HUMANBRAND, die sich mit Markeung in Sozialen
Netzwerken beschigt. Er ist Spezialist bei Micro
so Technologien, fotograebegeistert und seit 2006
mit ClubComputer verbunden.
Ing. Werner Illsinger
Prsident ClubComputer. Werner ist in seinem
Hauptberuf als Global Business Manager fr den
Vertrieb von Microso Produkten an einen der gr
ten Kunden von Microso weltweit verantwortlich.
In diesem Panel bringt er die Sicht von ClubCompu
ter und den Diskussionen unter unseren Mitgliedern
ein. Wir sehen uns als Vertreter der Anwender von
digitalen Medien
Erwin Kaminek
Gelernter Radio und Fernsehtechniker, 30 Jahre
selbstndig in der Computerkabelkonfekuonierung,
18 Jahre Organisator einer Tourismusplamorm,
Buchautor und Herausgeber beim LexisNexis Verlag
"Handbuch zur Gstezimmervermietung". Auszeich
nungen: 1999 von Microso und der Zeitschri Ge
winn fr die Homepagegestaltung
www.apartment.at, 1998 Glserner Schuh in Wien,
1999 vom Wirtschasministerium Familien und
frauenfreundlichster Betrieb sterreichs. Hobby:
Pressereferent beim Wiener Blasmusikverband.
Mag. Andreas Krisch
Prsident EDRI, Obmann VIBE!AT, Obmann AKVorrat,
Geschsfhrer mksult GmbH. Andreas ist Wirt
schasinformauker und im Brotberuf Datenschtzer.
Seit mehr als zehn Jahren arbeitet er zu Fragen des
Datenschutzes in Zusammenhang mit RFID und dem
Internet der Dinge. In sterreich bearbeitet er im
Rahmen des Vereins fr InternetBenutzer ster
reichs (VIBE!AT) eine Reihe netzpoliuscher Themen
und setzt sich im Rahmen des AKVorrat sterreich
gegen die Vorratsdatenspeicherung ein. Auf europi
scher Ebene vertriu er European Digital Rights (EDRi)
unter anderem in der Expertengruppe der Europi
schen Kommission zum Internet der Dinge und koor
diniert dort die Arbeit der Gruppe zum Themenbe
reich Datenschutz.
Dipl.Ing. Andi Kunar
Jahrgang 1960, glcklich verheiratet, Informauk
Techie / Marketer / Manager der zum Stressaus
gleich seit 2004 als Hobby fotograert. Mit Hang zum
TechnikPerfekuonismus und ausgeprgtem Spiel
trieb (Spielsachen von Nikon, Visatec, Lastolite,...).
Miulerweile ist aus dem Hobby eine Berufung ge
worden und Andi ist Inhaber/Geschsfhrer einer
IT Firma sowie Berufsfotograf.
Dr. Joachim Losehand, M.A.W
Spezialist zum Thema Urheberrecht. Wiss. Projektlei
ter im Verband der Freien Radios sterreichs (VFR),
Wien 2013 Ansprechpartner im Kontaktbro ster
reich der Iniuauve Cultural Commons Collecung
Society (C3S), Wien 2013; Koordinator Urheberrecht
und Konsumentenschutz im Verein fr Internet
Benutzer sterreichs (VIBE), Wien 2012; Project lead
Science Commons bei creauve commons Austria,
Wien 2013.
Johannes Loeer
Herr Ler ist knapp 35 Jahre in einem internauona
len Musikverlag tug, davon 17 Jahre als Geschs
fhrer und zustndig fr sterreich, Tschechische
Republik, Slowakei, Ungarn, Polen und Russland.
Thomas Lohninger
Thomas Lohninger engagiert sich fr verschiedenste
Netzpoliusche Plamormen. Unter anderem bei AK
Vorrat, Netzkinder, Vibe. Besonders am Herzen
liegen ihm die Themen der Netzneutralitt sowie die
Wahrung der Privatsphre
Mag. Erich Moechel
Geboren 28. August 1957 in Linz. Mag. Phil in ameri
kanischer, deutscher und englischer Literatur 1987
[Uni Wien]. Seit 1983 Medienkriuker und Kulturjour
nalist fr den Falter, Radio OE1 sowie den Standard
[1989 1996]. Bis 1998 New Media Manager beim
Wirtschasblau, die journalisusche Tugkeit verlegte
sich in dieser Zeit auf Invesugauvia und vollstndig
ins Netz. Regelmige Arukel fr heise.de, quintes
senz etc. zu technopoliuschen Themen, von 1999
2006 Ressortleiter des ITNachrichtenkanals future
zone.ORF.at. Seit Ende 2006 Senior Reporter fr
ORF.at, neue Homebase seit 2010 auf fm4.ORF.at.
Regelmige Auriue als Experte in den Radio und
TVKanlen des ORF.
DI Herbert Paulis
FH Campus Wien. Fachbereiche Angewandte Elektro
nik, Tech. Mgmt, IT u. Telekommunikauon. Ewar
ber 23 Jahre bei der Firma Siemens in der Telekom
munikauon tug, davon 15 im Bereich der Telekom
munikauonsberwachung und bin jetzt hauptbe
ruich Lehrender an der FH Campus Wien
DI Erich Pekar
ClubComputer.at. Beruicher PCAnwender, Pensio
nist "in spe" aus der Telekommunikauonsbranche;
Johann Pngntzky
Technischer Direktor bei Panasonic 1986 bis 2007.
Pensioniert.
DI Chrisan Schndorfer
Chrisuan Schndorfer ist Lehrer fr Netzwerksicher
heit an der HTL Wien 3 Rennweg. Er ist Cisco
Academy Koordinator fr sterreich und CCAI fr
CCNP Rouung und Security.
Max Schrems
Max Schrems ist ein sterreichischer Jurist, In sei
nem Studium beschigte er sich vorwiegend mit IT
Recht und Datenschutz. Im Jahr 2011 verentlichte
er eine Monographie ber die rechtliche Lage der
Videoberwachung in sterreich. Im Zuge eines
Auslandssemesters an der Santa Clara University in
Kalifornien traf er auf Vertreter von Facebook, was
zur Grndung von europevfacebook.org fhrte.
Mag. Albert Steinhauser
Abgeordneter zum Nauonalrat, Jusuzsprecher, Die
Grnen. Jahrgang 1971 Studium der Rechtswissen
schaen Angestellter bei der Gewerkscha der
Privatangestellten (2000 2007) seit 2007 Abgeord
neter zum Nauonalrat und Jusuzsprecher der Gr
nen.
Thomas Sulak
Geboren 1972 in Niedersterreich, lebt in der Nhe
von Wien, ist verheiratet und Vater einer Tochter.
Hauptberuich ist er IT Unternehmer, Vortragsred
ner & Moderator, Wirtschastrainer & Mentalcoach
Nimmt als Kabaremst die technologischen & poliu
schen Entwicklungen aufs Korn, Musiker (Klavier,
Gitarre, Bass und Drums), Schauspieler (Bhne Weit
ra) sowie Privatpilot und Motorradrennfahrer.
hup://www.thomassulak.at
DI Georg Tsamis
Event Organisauon. Vorstandsdirektor ClubCom
puter.at
Dr. Ulrike Wessely
Allgemeinmedizinerin, Homopathie, Wahlrzun.
1979 promoviert, Studienaufenthalt in Mumbai, Seit
1987 in eigener Privatpraxis tug mit Schwerpunkt
Homopathie, Diagnosuk und Therapie nach Dr. F.X.
Mayr.
Lukas Wurz
Die Grnen / Arbeiterkammer Wien. Jahrgang 1964
ist Sozialreferent im Grnen Parlamentsklub, AUGE/
UG AKRat in Wien und Vertreter der AUGE/UG im
Hauptverband der Sozialversicherungstrger.
Paul Zasky
Dubblestandart ist eine DubBand aus Wien, die seit
1988 um den Bandleader Paul Zasky besteht. Die
Band ist fr ihre Live Sets, die sie als HiEnergy Dub
oder 21st Century Dub bezeichnen, bekannt. Seit
Miue der 1990er haben sie viele Konzerte in Europa,
Kanada und den Vereinigten Staaten gespielt. Neben
Ihrer Akuvitt als LiveBand oder BackingBand fr
Lee Scratch Perry, Ariup, Dillinger oder Lilien Allen
haben sie bisher elf Studioalben, eine Reihe von
12inch oder MaxiCDTontrgern sowie diverse
Remixe fr Waldeck oder ElodieO verentlicht. Ihr
bisher erfolgreichstes Album ist Return From Planet
Dub, welches im Jahr 2009 erschienen ist und mit
Lee Scratch Perry und Ariup produziert wurde.





PCNEWS139 Juni 2014
30
C
L
U
B
C
O
M
P
U
T
E
R
.
A
T

Gesellschaliche Auswirkungen
Ist die Festplaenabgabe
(Speichermedienabgabe) wirklich g'scheit?
Kaum ein Thema erregt die Gemter seit einiger
Zeit mehr als die Festplauenabgabe. Die Ver
wertungsgesellschaen sehen sie als einzige
Mglichkeit den Niedergang der Kreauven in
sterreich zu verhindern und einen Tropfen auf
den heien Stein um die Verluste der Leerkas
seuenvergtung weuzumachen. Die Anwender
sehen sie als Anschlag auf die Geldbrse die
willkrlich ein Medium "besteuert", das in kei
nem Zusammenhang mit tatschlichen Privatko
pien steht. Es diskuueren Knstler, Konsumen
ten, Verwertungsgesellschaen sowie Poliuker
ber das Thema und Auswege aus dem Dilem
ma.
Moderaon
Dr. Joachim Losehand, M.A.W
Diskussionsteilnehmer
Paul Zasky; Thomas Sulak; Dipl.Ing. Andi
Kunar; Johannes Loeer; Mag. Thomas
Geldmacher; Ing. Werner Illsinger
Social Media aer the Hype
Lena Doppel
Was VDS, NSA, Social Media und das Digitale
Biedermeier verndert haben.
Gibt es in Zukun noch Gesche?
Erwin Kaminek
Geschslokale brauchen einen Unternehmer,
aber Unternehmer brauchen immer weniger ein
Geschslokal. Die Handelswelt hat sich bereits
verndert UND sie wird sich noch weiter vern
dern. In Zukun wird es kaum noch Handelsge
sche in der derzeiugen Form geben. Der Onli
ne Handel hat mitunter Vorteile gegenber
Ladengeschen. Der Fachhandel wurde o
dazu verwendet sich Beratung zu holen ge
kau wurde dann online, oder beim Diskounter.
Geschschen sind nicht nur in gut frequen
uerten Lagen sehr teuer, ebenso haben die
Lohnnebenkosten ein Niveau erreicht, welche
sich nur mehr wenige Unternehmer leisten
knnen. Allerdings tragen die schlechten Lohn
bedingungen bei den Logisukern (Ausbeutungen
bei Paketdiensten lt. RTL Doku) wesentlich zum
Florieren des Onlinehandels bei. Die Produkuon
von Gerten ndet schon lang in Billiglohnln
dern stau. Die gesamte Computerbranche aber
auch andere Branchen produzieren nur noch in
China. Welche Lsungen gibt es?
DatenschutzRechtsdurchsetzung
Mag. Andreas Krisch
DatenschutzRechtsdurchsetzung. Was war, was
ist, was wird?
Civil Society Informaon Defense
Mag. Erich Moechel
Seit zwei Jahrzehnten wird die Kommunikauon
der Zivilgesellscha von Militrgeheimdiensten
systemausch angegrien. Wie man die eigene
Kommunikauon durch eine Kombinauon einfa
cher Methoden und Techniken gegen diese
Angriswelle hrtet und so das berwachungs
radar unteriegt.
Netzneutralitt und die SaveTheInternet
Kampagne
Thomas Lohninger
Netzneutralitt bezeichnet die wertneutrale
Datenbertragung im Internet. Netzneutrale
Internetdienstanbieter (englisch internet service
provider) senden alle Datenpakete unverndert
und in gleicher Qualitt von und an ihre Kun
den, unabhngig davon, woher diese stammen,
zu welchem Ziel sie transporuert werden sollen,
was Inhalt der Pakete ist und welche Anwen
dung die Pakete generiert hat hups://
unsernetz.at/netzneutralitaet/, hup://
www.savetheinternet.com/

Sicherheit & Datenschutz
Grundlagen der Kryptographie
(Verschlsselung)
DI Herbert Paulis
Verschlsselung funkuoniert im Grunde genom
men relauv einfach. Auf einen lesbaren Klartext
wird eine Rechenoperauon mit einem Schlssel
angewendet und der Klartext wird in einen ver
schlsselten Text (Cipher) umgewandelt. Diese
Cipher kann nur gelesen werden, wenn man im
Besitz des richugen Schlssels ist. Wie das ge
nau funkuoniert und was man dabei beachten
muss versucht dieser Vortrag zu klren.
Europe versus Facebook
Max Schrems
Wie ein sterreichischer Student auszog um
einen Riesen zur Einhaltung Europischer Da
tenschutzgesetze zu bringen.
EuGH Urteil zur Vorratsdatenspeicherung und
die Auswirkungen auf sterreich
Mag. Albert Steinhauser
Der Schweizer Nauonalrat Balthasar Gluli hat
einen Teil seiner Vorratsdaten aus 6 Monaten
zur Verfgung gestellt und aus diesen wurde die
folgende Visualisierung gebaut. Sie zeigt sehr
schn, was ein Staat ber einen Brger wei,
wenn die Vorratsdaten aufgezeichnet werden:
Der Europische Gerichtshof hat nun entschie
den, dass die Speicherung der Vorratsdaten
nicht Grundrechtskonform ist. Nun ist wieder
der sterreichische OGH am Zug der dies beim
EuGH prfen lie.
Panel: ELGA Die sterreichische
elektronische Gesundheitsakte Segen
oder Fluch?
Moderaon
DI Erich Pekar
Diskussionsteilnehmer
Mag. Hubert A. Eisl, MBA; DI Herbert
Paulis; Lukas Wurz; Dr. Ulrike Wessely
NFC Bequemes bezahlen, aber wo bleibt die
Sicherheit?
DI Roland Giersig
Near Field Communicauons (NFC) wurde zuerst
bei Kreditkarten, zuletzt bei den sterreichi
schen Bankomatkarten eingefhrt. Damit ist das
Bezahlen von Kleinbetrgen berhrungslos und
ohne Eingabe eines PIN mglich. In dieser Sessi
on mchten wir uns ansehen wie das funkuo
niert und warum Bequemlichkeit und Sicherheit
zwei entgegengesetzte Faktoren sind.

Technik
Oce 365
Mag. Marna Grom (MVP)
Warum Oce 365 sicherer sein kann, als ein
Server vor Ort... Cloud Services sind in aller
Munde. Sptestens seit Edward Snowden haben
auch viele davor Angst Cloud Dienste zu nutzen,
weil Sie unsicher sind. Maruna versucht in die
sem Vortrag darauf einzugehen, warum ein
Cloud Dienst wie Oce 365 sicherer sein kann
als eigene Server im eigenen Rechenzentrum
oder Serverraum.
Windows & Oce: Tipps & Tricks
Chrisan Haberl
Windows und Oce: Tipps & Tricks vom Pro
fr Pros
Digitalfotograe
DI Andi Kunar
Prakuscher Fotograeworkshop fr ambiuonier
te Hobbyfotografen. Jeder Teilnehmer muss
seine Kamera und die Bedienungsanleitung
dafr mitbringen. In der Kleingruppe wird dann
gemeinsam mit einem Berufsfotografen prak
usch gemeinsam etwas erarbeitet. Andi wird
einige Dinge vorbereiten. Die Gruppe entschei
det dann was genau gemacht wird.
Powergrid Smartmeter: Realitt und Fikon
DI Chrisan Schndorfer
Marc Elsberg skizziert in seinem Roman
Blackout Morgen ist es zu spt ein Angris
szenario auf die ITSicherheit von Smartmetern.
In diesem Vortrag wird der Frage nachgegan
gen, ob ein deraruges Szenario realittsnahe ist
und auch bei uns passieren knnte. Aus Sicht
der ITSicherheit, aber auch aus der Perspekuve
von Energiebetreibern soll das Thema beleuch
tet und diskuuert werden; ein kurzer berblick
ber einschlgige gesetzliche Normen rundet
das Thema ab.





Juni 2014 PCNEWS139
31
C
L
U
B
C
O
M
P
U
T
E
R
.
A
T

Akon fr Vortragende
DI Georg Tsamis
Event Organisauon. Vorstandsdi
rektor ClubComputer.at
Jeder Vortragende bekommt bei
Anmeldung zum Club auf Wunsch
12 Monate Mitgliedscha fr seine
Vortragstugkeit graus. Bei Inte
resse wenden Sie sich biue an
Georg Tsamis. Georg wird auch vor
Ort als Ansprechpartner fr unsere
Vortragenden zur Verfgung ste
hen.
Mitgliederwerbeakon
Jeder Teilnehmer der sich ent
schliet auf unserem ccCamp Mit
glied zu werden bekommt fr den
Mitgliedsbeitrag von 39 EUR die
Mitgliedscha bis Ende 2015. (1,5
Jahre Mitgliedscha zum Preis von
einem Jahr).
Domainakon
Am ccCamp bieten wir unseren
Mitgliedern exklusiv die Mglich
keit an .at Domains im ersten Jahr
graus zu registrieren. Wenn Sie
gleich fr 2 Jahre registrieren, dann
bieten wir 50% Rabau auf das
zweite Jahr (Die Kosten fr 2 Jahre
fr Clubmitglieder sind dann nur 9
EUR). Gegenber dem Normalpreis
der sterreichischen Registrie
rungsstelle NIC.at sparen Sie 81
EUR (siehe hup://www.nic.at/
preise).
Passend dazu gibt es den graus
Webspace fr Mitglieder der sich
z.B. auch ausgezeichnet fr den
Betrieb eines eigenen WordPress
Blog eignet.
Flohmarkt
Johann Pngntzky
Wir laden alle Teilnehmer des cc
Camp'14 ein, entweder:
Noch verwendbare elektronische
Gerte oder Soware dem Club zu
spenden und wir versuchen es am
ccCamp unter den Mann/Frau zu
bekommen. Was daraus eingenom
men wird, wird fr die Finanzierung
des ccCamp. Dabei sollte ein zu
erzielender Mindestbetrag festge
setzt werden. Wird das Teil nicht
verkau, dann geht es wieder an
den Besitzer zurck; wird es ver
kau, dann bekommt der Besitzer
des Teils den Mindestbetrag. Der
Club erhlt den Dierenzbetrag
zum tatschlich bezahlten Betrag.
Die Organisauon bernimmt dan
kenswerterweise Johann Pngntz
ky. Wenn Ihr Teile fr den Floh
markt spenden mchtet oder Teile
am Flohmarkt verkaufen mchtet,
setzt Euch biue mit Johann unter
Flohmarkt@ClubComputer.at
in Verbindung.
KABARETT, IRONIE, SATIRE SULAK!
Thomas Sulak
Mit seinem authenuschen Vor
tragssul, stets aktuellen und zeit
geisugen Beispielen aus der wun
dersamen Welt der IT und Tele
kommunikauon begeistert Thomas
Sulak sein Publikum. Weltweit er
geben sich Millionen Smartphone
Nutzer ihrem Schicksal nicht so
Thomas Sulak Er sieht sich als
empathischen bersetzer fr IT
Fachsprache in verstndliche Wor
te. Sogar komplizierte technische
Ablufe und Zusammenhnge der
Telekommunikauon stellt er ein
fach und verstndlich dar. Spiele
risch spannt er den Bogen zwi
schen Technik und Netzpoliuk
mit einer gehrigen Poruon Hu
mor. Ein unterhaltsamer Mix aus
Fakten, scharfem Blick hinter die
Kulissen, persnlichen Theorien
und Vorschau in unsere digitale
Zukun. Informauon, Unterhal
tung, Witz und Ironie sind Speziali
tten des NeoKabaremsten und
ITPros der ersten Stunde.
Mainstream und Hrigkeit sind im
gnzlich fremd. Das Auditorium
lernt, ohne belehrt zu werden. Es
staunt, stellt Verhaltensmuster
infrage und erlebt IT zum Angrei
fen. Analog von Mensch zu
Mensch.
Grillfest und Networking
Um das unter Tags gelernte noch diskuueren zu knnen, sich mit den
Teilnehmern auszutauschen und neue Leute kennen zu Lernen, freuen
wir uns, alle Teilnehmer zu einem Sommerfest herzlich einzuladen. Wir
freuen uns natrlich auch, wenn am Abend die Familie dazu stoen und
miueiern mchte.
Bei Schnweuer planen wir ein Grillfest bei Schlechtweuer wird es
Wienerschnitzel und eine vegetarische Alternauve geben. Dazu servie
ren wir Budweiser vom Fass sowie Wein und alkoholfreie Getrnke.





PCNEWS139 Juni 2014
32
C
L
U
B
C
O
M
P
U
T
E
R
.
A
T

cccamp Jahresveranstaltung
LIZ Raum 1 Raum 2 Zeit
Frhstck (Aula)
09:00
Begrung
Dr. Marn Weienbck (Direktor HTL Wien 3 Rennweg)
Werner Illsinger (Prsident ClubComputer)
09:15
Saalwechsel
09:45
Vorratsdatenspeiche
rung
Mag. Albert Steinhauser
Europe vs. Facebook
Max Schrems
Gibt es in Zukunft
noch Geschfte?
Erwin Kaminek
10:00
Kaffeepause (Aula)
11:15
Ist die Festplattenabga
be wirklich g'scheit?
Paneldiskussion
Grundlagen
der Kryptographie
DI Herbert Paulis
Windows & Office
Tips & Tricks
Christian Haberl
11:30
Mittagspause (Aula)
12:45
ELGA
Segen oder Fluch?
Paneldiskussion
Datenschutz
Rechtsdurchsetzung
Mag. Andreas Krisch
Office 365

Mag. Martina Grom
13:45
Kaffeepause (Aula)
15:00
Civil Society
Information Defense
Mag. Erich Moechel
Powergrid &
Smartmeter
DI Christian Schndorfer
Social Media
after the Hype
Lena Doppel
15:15
Kaffeepause (Aula)
16:30
NFC Sicherheit?
DI Roland Giersig
Netzneutralitt
Thomas Lohninger
Fotoworkshop
Andi Kunar
16:45
Saalwechsel
18:00
Wrap Up und Aperitiv (Aula)
18:15
Kabarett Ironie Satire SULAK (Aula)
18:45
Grillfest
20:00

Was?
IT und Gesellschaft
Sicherheit & Datenschutz
Technik
Wo?
HTL Wien 3R
Rennweg 89b
1030 Wien
Wann?
Samstag 14. Juni 2014
09:00 23:00
Wie anmelden?
http://cccamp.at
Bis 31.5. kostenlos,
danach 20
fr NichtMitglieder
Wer?




Juni 2014 PCNEWS139
33
C
L
U
B
D
E
V
.
N
E
T

#SpielerTauschTabelleErstellen
#Datenbank
$DatabaseName = "s:\Desktop\nationalmannschaft\sterreich.accdb"
$ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$DatabaseName;"
$Connection = New-Object System.Data.OleDb.OleDbConnection $ConnectionString
$Connection.Open()
#Tabelle Spiele
$SqlSpielQuery = "SELECT Spiel, Austausch FROM Spiele ORDER BY SPIEL"
$CommandSpiel = New-Object System.Data.OleDb.OleDbCommand $SqlSpielQuery,$Connection
$AdapterSpiel = New-Object System.Data.OleDb.OleDbDataAdapter $CommandSpiel
$DataTableSpiel = New-Object System.Data.DataTable
[void] $AdapterSpiel.Fill($DataTableSpiel)
$DataTableSpielLength = $DataTableSpiel.Rows.Count
#Tabelle Spieler-Spiel-Tausch
$SqlSpielerQuery = "SELECT * FROM Spieler_Spiel_Tausch"
$SqlSpielerInsert = "INSERT INTO Spieler_Spiel_Tausch
(Spiel, Tausch, Lfd, TauschMinute, SpielerEinF, SpielerEinV, SpielerEin_Verein, SpielerEin_Nummer, SpielerAusF, SpielerAusV)
VALUES (@Spiel, @Tausch, @Lfd, @TauschMinute, @SpielerEinF, @SpielerEinV, @SpielerEin_Verein, @SpielerEin_Nummer, @SpielerAusF, @SpielerAusV )";
$CommandSpieler = New-Object System.Data.OleDb.OleDbCommand $SqlSpielerQuery,$Connection
$AdapterSpieler = New-Object System.Data.OleDb.OleDbDataAdapter $CommandSpieler
$AdapterSpieler.ContinueUpdateOnError = $false
$CommandSpielerInsert = New-Object System.Data.OleDb.OleDbCommand $SqlSpielerInsert,$Connection
$AdapterSpieler.InsertCommand = $CommandSpielerInsert
$Parameter1 = New-Object System.Data.OleDb.OleDbParameter "@Spiel", Integer, 4, "Spiel"
$Parameter2 = New-Object System.Data.OleDb.OleDbParameter "@Tausch", Char, 2500, "Tausch"
$Parameter3 = New-Object System.Data.OleDb.OleDbParameter "@Lfd", Integer, 4, "Lfd"
$Parameter4 = New-Object System.Data.OleDb.OleDbParameter "@TauschMinute", Integer, 4, "TauschMinute"
$Parameter5 = New-Object System.Data.OleDb.OleDbParameter "@SpielerEinF", Char, 255, "SpielerEinF"
$Parameter6 = New-Object System.Data.OleDb.OleDbParameter "@SpielerEinV", Char, 255, "SpielerEinV"
$Parameter7 = New-Object System.Data.OleDb.OleDbParameter "@SpielerEin_Verein", Char, 255, "SpielerEin_Verein"
$Parameter8 = New-Object System.Data.OleDb.OleDbParameter "@SpielerEin_Nummer", Integer, 4, "SpielerEin_Nummer"
$Parameter9 = New-Object System.Data.OleDb.OleDbParameter "@SpielerAusF", Char, 255, "SpielerAusF"
$Parameter10 = New-Object System.Data.OleDb.OleDbParameter "@SpielerAusV", Char, 255, "SpielerAusV"
[void]$CommandSpielerInsert.Parameters.Add($Parameter1)
// wiederholen bis Parameter 10

$DTSpieler = New-Object System.Data.DataTable
[void] $AdapterSpieler.Fill($DTSpieler)

function GetFName {
if ($args[0].Contains(" ")) {
$Namensteile = $args[0].ToString().Split(' ')
if ($Namensteile[1].Length -le 2) { # Vorname nachgestellt
$Namensteile[0]
} else {
$Namensteile[1]
}
} else {
$args[0]
}
}
function GetVName {
if ($args[0].Contains(" ")) {
$Namensteile = $args[0].ToString().Split(' ')
if ($Namensteile[1].Length -le 2) { # Vorname nachgestellt
$Namensteile[1]
} else {
$Namensteile[0]
}
} else {
""
}
}
for ($i=0; $i -lt $DataTableSpielLength; $i++) {
$Spiel = $DataTableSpiel.Rows[$i]["Spiel"].ToString()
$TauschAlle = $DataTableSpiel.Rows[$i]["Austausch"]
if ($TauschAlle -eq $null) { $TauschAlle = "" }
if ($TauschAlle -ne "") {

"#"+$Spiel
$TauschAlleArray = $TauschAlle.ToString().Split(',')
for ($j=0; $j -lt $TauschAlleArray.Length; $j++)
{
$Tausch = $TauschAlleArray[$j]

$Minute = 0
$regexMinute = [regex] '\((\d+)\.\)'
$groups = $regexMinute.Match($Tausch).Groups
if ($groups.Count-eq 2) {
$Minute = [int]$groups[1].Value
$Tausch = $regexMinute.Replace($Tausch,"").Trim()
} else { $Minute=999 }
$SpielerEin = ""
$VereinEin = ""
$SpielerAus = ""
$SpielerNummer = 0
$regexNameVerein = "\((.*)\)" #verein kann auch leer sein
$regexNameSpieler = "(.+)"
if ($TauschAlle.Contains("/")) { # neuere Aufstellung mit Rckennummern
if ($Tausch.Contains("/")) { #Verein angegeben
$regexTausch = [regex]($regexNameSpieler+" *?\/ *?"+$regexNameSpieler+" *?(statt|fr) +?"+$regexNameSpieler)
$groups = $regexTausch.Match($Tausch).Groups
if ($groups.Count-eq 5) {
$SpielerEin = $groups[1].Value
$VereinEin = $groups[2].Value
$SpielerAus = $groups[4].Value
} else {
$SpielerEin="nicht gefunden"
}
} else {
$regexTausch = [regex]($regexNameSpieler+" +?(statt|fr) +?"+$regexNameSpieler)
$groups = $regexTausch.Match($Tausch).Groups
if ($groups.Count-eq 4) {
$SpielerEin = $groups[1].Value
$SpielerAus = $groups[3].Value
} else {
$SpielerEin="nicht gefunden"
}
}
if ($SpielerEin.Contains("(")) { # Rckennummer ist angegeben
$SpielerNummer = $SpielerEin.Substring(1,$SpielerEin.IndexOf(')')-1).Trim()
$SpielerEin = $SpielerEin.Substring($SpielerEin.IndexOf(')')+1).Trim()
}
} else { # alte Aufstellung
if ($Tausch.Contains("(")) { #Verein angegeben
$regexTausch = [regex]($regexNameSpieler+" +?"+$regexNameVerein+" *?fr +?"+$regexNameSpieler)
$groups = $regexTausch.Match($Tausch).Groups
if ($groups.Count-eq 4) {
$SpielerEin = $groups[1].Value
$VereinEin = $groups[2].Value
$SpielerAus = $groups[3].Value
} else {
$SpielerEin="nicht gefunden"
}
} else {
$regexTausch = [regex]($regexNameSpieler+" +?fr +?"+$regexNameSpieler)
$groups = $regexTausch.Match($Tausch).Groups
if ($groups.Count-eq 3) {
$SpielerEin = $groups[1].Value
$SpielerAus = $groups[2].Value
} else {
$SpielerEin="nicht gefunden"
}
}
}
$SpielerEin = $SpielerEin.Trim()
$SpielerEinF = GetFName($SpielerEin)
$SpielerEinV = GetVName($SpielerEin)

$SpielerAus = $SpielerAus.Trim()
$SpielerAusF = GetFName($SpielerAus)
$SpielerAusV = GetVName($SpielerAus)

$VereinEin = $VereinEin.Trim()

$DataRow = $DTSpieler.NewRow()
$DataRow["Spiel"] = $Spiel
$DataRow["Tausch"] = $Tausch
$DataRow["Lfd"] = [int]($j + 1)
$DataRow["TauschMinute"] = [int]($Minute)
$DataRow["SpielerEinF"] = $SpielerEinF
$DataRow["SpielerEinV"] = $SpielerEinV
$DataRow["SpielerEin_Nummer"] = $SpielerNummer
$DataRow["SpielerEin_Verein"] = $VereinEin
$DataRow["SpielerAusF"] = $SpielerAusF
$DataRow["SpielerAusV"] = $SpielerAusV

$DataRow["ID_SpielerAus"] = -1
$DataRow["ID_SpielerEin"] = -1
$DataRow["ID_Verein"] = -1

$DTSpieler.Rows.Add($DataRow)

[string]
$Minute+":"+$SpielerEinV+$SpielerEinF+"("+$SpielerNummer+")"+"/"+$VereinEin+"<-
>"+$SpielerAusV+$SpielerAusF
}
}
}
$AdapterSpieler.Update($DTSpieler)
$Connection.Close()




PCNEWS139 Juni 2014
34
C
L
U
B
D
E
V
.
N
E
T

#Datenbank
$DatabaseName = "s:\Desktop\nationalmannschaft\sterreich.accdb"
$ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$DatabaseName;"
$Connection = New-Object System.Data.OleDb.OleDbConnection $ConnectionString
$Connection.Open()

#Tabelle Spiel
$SqlSpielQuery = "SELECT Spiel, Tore FROM Spiele WHERE (((Tore)<>'')) ORDER BY SPIEL"
$CommandSpiel = New-Object System.Data.OleDb.OleDbCommand $SqlSpielQuery,$Connection
$AdapterSpiel = New-Object System.Data.OleDb.OleDbDataAdapter $CommandSpiel

$DataTableSpiel = New-Object System.Data.DataTable
[void] $AdapterSpiel.Fill($DataTableSpiel)
$DataTableSpielLength = $DataTableSpiel.Rows.Count

#Tabelle Tore
$SqlSpielerQuery = "SELECT * FROM Tore"
$SqlSpielerInsert = "INSERT INTO Tore
(Spiel, TorMinute, ID_Spieler, Spieler, Spielstand, Penalty, Freekick)
VALUES (@Spiel, @TorMinute, @ID_Spieler, @Spieler, @Spielstand, @Penalty, @Freekick )";
$CommandSpieler = New-Object System.Data.OleDb.OleDbCommand $SqlSpielerQuery,$Connection
$AdapterSpieler = New-Object System.Data.OleDb.OleDbDataAdapter $CommandSpieler
$AdapterSpieler.ContinueUpdateOnError = $false
$CommandSpielerInsert = New-Object System.Data.OleDb.OleDbCommand $SqlSpielerInsert,$Connection
$AdapterSpieler.InsertCommand = $CommandSpielerInsert
$Parameter1 = New-Object System.Data.OleDb.OleDbParameter "@Spiel", Integer, 4, "Spiel"
$Parameter2 = New-Object System.Data.OleDb.OleDbParameter "@TorMinute", Integer, 4, "TorMinute"
$Parameter3 = New-Object System.Data.OleDb.OleDbParameter "@ID_Spieler", Integer, 4, "ID_Spieler"
$Parameter4 = New-Object System.Data.OleDb.OleDbParameter "@Spieler", Char, 255, "Spieler"
$Parameter5 = New-Object System.Data.OleDb.OleDbParameter "@Spielstand", Char, 255, "Spielstand"
$Parameter6 = New-Object System.Data.OleDb.OleDbParameter "@Penalty", Boolean, 4, "Penalty"
$Parameter7 = New-Object System.Data.OleDb.OleDbParameter "@Freekick", Boolean, 4, "Freekick"
[void]$CommandSpielerInsert.Parameters.Add($Parameter1)
[void]$CommandSpielerInsert.Parameters.Add($Parameter2)
[void]$CommandSpielerInsert.Parameters.Add($Parameter3)
[void]$CommandSpielerInsert.Parameters.Add($Parameter4)
[void]$CommandSpielerInsert.Parameters.Add($Parameter5)
[void]$CommandSpielerInsert.Parameters.Add($Parameter6)
[void]$CommandSpielerInsert.Parameters.Add($Parameter7)

$DTSpieler = New-Object System.Data.DataTable
[void] $AdapterSpieler.Fill($DTSpieler)

function TorSpeichern ($a, $b, $c, $d, $e, $f) {
$DataRow = $DTSpieler.NewRow()

$DataRow["Spiel"] = $a
$DataRow["Spieler"] = $b.Trim()
$DataRow["TorMinute"] = $c
$DataRow["Spielstand"] = $d
$DataRow["Penalty"] = $e
$DataRow["Freekick"] = $f
$DataRow["ID_Spieler"] = 0

$DTSpieler.Rows.Add($DataRow)

Write-Host " "$c"-"$b"("$d")"
}
for ($i=0; $i -lt $DataTableSpielLength; $i++) {
$Spiel = [int]$DataTableSpiel.Rows[$i]["Spiel"].ToString()
$Tore = $DataTableSpiel.Rows[$i]["Tore"]

Write-Host "#"$Spiel":"$Tore

$ToreA = $Tore.Split(',')
for ($j=0; $j -lt $ToreA.Length; $j++) {
$TorSchuetze = $ToreA[$j].Trim()
if ($Tore.Contains(":")) { #Spielstand wurde mitangegeben
$Tore = $Tore.Replace(")","),").Trim(",")
$Tore = $Tore.Replace(",,",",")
$ToreA = $Tore.Split(',')
$regexTorSchuetze = [regex] "(\d\:\d) (.*?) \((.+?)\.\)"
$groups = $regexTorSchuetze.Match($TorSchuetze).Groups
if ($match.Success) {
$Minute = $groups[3].Value
$Elfer = $Minute.Contains("E")
$Freeekick= $Minute.Contains("F")
$Minute = $Minute.Replace("E","")
$Minute = $Minute.Replace("F","")
TorSpeichern $Spiel $groups[2].Value $Minute $groups[1].Value $Elfer $Freeekick
} else {
Write-Host " ERROR" -ForegroundColor Red -BackgroundColor White
}
} else { # ohne Spielstand, nur die Minute und der Name
if ($TorSchuetze.Contains("(")) { #enthlt Minute
$regexTorSchuetze = [regex] "(.*?) \((.+)\.\)"
$groups = $regexTorSchuetze.Match($TorSchuetze).Groups
if ($match.Success) {
$Torminuten = $groups[2].Value
$TorminutenA = $groups[2].Value.Split(' ')
for ($k=0; $k -lt $TorminutenA.Count; $k++) {
TorSpeichern $Spiel $groups[1].Value $TorminutenA[$k].Replace('.','') ""
$false $false
}
} else {
Write-Host " ERROR" -ForegroundColor Red -BackgroundColor White
}
} else { # nur Torschtzen
TorSpeichern $Spiel $ToreA[$j] 999 "" $false $false
}
}
}
Write-Host
}
$AdapterSpieler.Update($DTSpieler)
$Connection.Close()
ToreTabelleErstellen
Der Abschniu #Datenbank stellt die Verbindung
zur AccessDatenbank her, die Tabelle Spiel
wurde bereits angelegt und daraus werden die
Felder Spiel und Tore selekuert und ber den
Adapter $AdapterSpiel dem Programm zur Verf
gung gestellt. Das Feld Spiel muss auch in der
neuen Tabelle Tore enthalten sein, damit zwi
schen den Tabellen Spiele und Tore eine Relauon
hergestellt werden kann.
Die Tabelle Tore wird durch den Adapter $Adap-
terSpieler abgebildet (ja, ja, das kommt vom
Kopieren, denn hier sollte natrlich $AdapterTore
stehen aber durch die bernahme vom vorigen
ImportProgramm wurde dieser sinnstrende
Fehler in der Bezeichnung der Variablen berse
hen). Man sieht, dass die einzelnen Felder ver
schiedene Typen aufweisen.
Die Auswertung des Feldes Tore ist leider nicht
geradlinig, denn man muss zwischen Forma
ten unterscheiden, die bei den frhen Spielen
verwendet worden sind.
Zuerst wird die Zeile an den Beistrichen zerteilt
$ToreA = $Tore.Split(','). Wenn der Spielstand
einen Doppelpunkt enthlt, war der Spielstand
angegeben $Tore.Contains(":") (das sind die
jngeren Spiele).
Abgesehen von den Zeichenklaubereien, die
zeigen, wie man mit besummten wechselnden
Umstnden umgehen muss, ist wichug dass die
Zeilenauswertung entweder erfolgreich ist oder
nicht. Im Erfolgsfall wird in der Hilfsfunkuon
TorSpeichern die erfolgreiche Speicherung des
Tors ausgegeben. Im Fehlerfall wird aber eine
bunte Diagnosezeile ausgegeben.
An dieser Stelle sieht man, dass dieses Umwan
deln des Textes im ToreFeld mit sehr vielen
Schreibfehlern im Originaltext zu kmpfen hat,
die man alle erst durch Ediueren beseiugen
muss, bis schlielich alle ToreZeilen fehlerfrei
gelesen werden.
Aus diesen wiederholten Einleseversuchen re
suluert auch, dass viele Primrschlsselfelder
nicht beim Wert 1 beginnen, wie man eigentlich
vermuten wrde sondern bei sehr hohen Wer
ten, je nachdem, wie o die eingelesenen Daten
wieder gelscht worden sind. Die Primrschls
selfelder beginnen nmlich nur beim ersten
Versuch beim Wert 1. Wird ein Datensatz ge
lscht (oder eben mehrere), dann werden diese
Werte nicht wieder vergeben und die Zhlung
beginnt bei hheren IDWerten.
Mit dem Einlesen der Tore ist es aber leider
nicht getan. Jetzt wartet noch Arbeit in der
Datenbank, denn die Verfasser der Lnderspiel
Berichte haben die SpielerNamen in der Auf
stellung und in der Torschtzenliste nicht gleich
geschrieben. Stand also in der Aufstellung noch
Anton Polster, hat man das in der Torschtzen
liste auf Polster verkrzt. Mit der Konsequenz,
dass das Programm diesen Umstand in der Form
auswertet, dass es sich um zwei verschiedene
Spieler handelt.
Bei einem konkreten Tor wird der Schtze durch
den Spielernamen charakterisiert. Diesen Na
men muss man in AktualisierungsAbfragen
durch der richugen Wert der ID_Spieler erset
zen. Wie man am Beispiel Polster gesehen hat,
ist das o kein eindeuuger Vorgang. Glckli
cherweise wurden aber die Spieler der frheren
Jahre nur mit dem Familiennamen eingetragen,
sodass diese Fehler erst in den Spiele der letz
ten Jahre aureten.

Você também pode gostar

  • Pcnews 151
    Pcnews 151
    Documento36 páginas
    Pcnews 151
    Franz Fiala
    Ainda não há avaliações
  • PCNEWS 150a
    PCNEWS 150a
    Documento28 páginas
    PCNEWS 150a
    Franz Fiala
    Ainda não há avaliações
  • Pcnews 146
    Pcnews 146
    Documento32 páginas
    Pcnews 146
    Franz Fiala
    Ainda não há avaliações
  • Pcnews 143
    Pcnews 143
    Documento32 páginas
    Pcnews 143
    Franz Fiala
    Ainda não há avaliações
  • N 148
    N 148
    Documento32 páginas
    N 148
    Franz Fiala
    Ainda não há avaliações
  • Pcnews 142
    Pcnews 142
    Documento32 páginas
    Pcnews 142
    Franz Fiala
    Ainda não há avaliações
  • N 149
    N 149
    Documento36 páginas
    N 149
    Franz Fiala
    Ainda não há avaliações
  • Pcnews 150
    Pcnews 150
    Documento32 páginas
    Pcnews 150
    Franz Fiala
    Ainda não há avaliações
  • Pcnews 147
    Pcnews 147
    Documento33 páginas
    Pcnews 147
    Franz Fiala
    Ainda não há avaliações
  • Pcnews 147
    Pcnews 147
    Documento33 páginas
    Pcnews 147
    Franz Fiala
    Ainda não há avaliações
  • N 144
    N 144
    Documento4 páginas
    N 144
    Franz Fiala
    Ainda não há avaliações
  • Pcnews 145
    Pcnews 145
    Documento32 páginas
    Pcnews 145
    Franz Fiala
    Ainda não há avaliações
  • N 140
    N 140
    Documento4 páginas
    N 140
    Franz Fiala
    Ainda não há avaliações
  • Pcnews 141
    Pcnews 141
    Documento32 páginas
    Pcnews 141
    Franz Fiala
    Ainda não há avaliações
  • n136 PDF
    n136 PDF
    Documento32 páginas
    n136 PDF
    Franz Fiala
    100% (1)
  • n137 PDF
    n137 PDF
    Documento32 páginas
    n137 PDF
    Franz Fiala
    Ainda não há avaliações
  • Überwachung Urheberrecht Privatsphäre Netzneutralität Technologie
    Überwachung Urheberrecht Privatsphäre Netzneutralität Technologie
    Documento4 páginas
    Überwachung Urheberrecht Privatsphäre Netzneutralität Technologie
    Franz Fiala
    Ainda não há avaliações
  • N 138
    N 138
    Documento32 páginas
    N 138
    Franz Fiala
    Ainda não há avaliações
  • Obile: Igital OME
    Obile: Igital OME
    Documento30 páginas
    Obile: Igital OME
    Franz Fiala
    Ainda não há avaliações
  • 2013 Chronik
    2013 Chronik
    Documento10 páginas
    2013 Chronik
    Franz Fiala
    Ainda não há avaliações
  • 2012 Chronik PDF
    2012 Chronik PDF
    Documento14 páginas
    2012 Chronik PDF
    Franz Fiala
    Ainda não há avaliações
  • 2009 Chronik PDF
    2009 Chronik PDF
    Documento29 páginas
    2009 Chronik PDF
    Franz Fiala
    Ainda não há avaliações
  • 1965 Jahresbericht PDF
    1965 Jahresbericht PDF
    Documento40 páginas
    1965 Jahresbericht PDF
    Franz Fiala
    Ainda não há avaliações
  • 2010 Chronik PDF
    2010 Chronik PDF
    Documento13 páginas
    2010 Chronik PDF
    Franz Fiala
    Ainda não há avaliações
  • 2011 Chronik PDF
    2011 Chronik PDF
    Documento14 páginas
    2011 Chronik PDF
    Franz Fiala
    Ainda não há avaliações
  • 1967 Maturantenverzeichnis 1915-1967
    1967 Maturantenverzeichnis 1915-1967
    Documento44 páginas
    1967 Maturantenverzeichnis 1915-1967
    Franz Fiala
    Ainda não há avaliações
  • 2008 Chronik PDF
    2008 Chronik PDF
    Documento27 páginas
    2008 Chronik PDF
    Franz Fiala
    Ainda não há avaliações
  • 1964 Jahresbericht PDF
    1964 Jahresbericht PDF
    Documento46 páginas
    1964 Jahresbericht PDF
    Franz Fiala
    Ainda não há avaliações
  • 1963 Jahresbericht PDF
    1963 Jahresbericht PDF
    Documento43 páginas
    1963 Jahresbericht PDF
    Franz Fiala
    0% (1)