Home / LinuxUser / 2008 / 03 / Zeit ist Geld

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Zeit ist Geld

Zeiterfassung mit OOBase

01.03.2008 Die OpenOffice-Komponenten Base und Basic fristen ein Schattendasein – zu Unrecht, wie unser Workshop beweist.

OpenOffice.org Basic genießt nicht gerade den Ruf eines professionellen Werkzeugs und hält tatsächlich dem Vergleich mit Programmiersprachen wie C++, Java oder Python kaum stand. Das heißt aber nicht, dass man mit OOoBasic keine mächtigen und flexiblen Lösungen programmieren könnte. Seit die Skriptsprache in der Lage ist, die Anwendungen aus OpenOffice miteinander zu verbinden, taugt sie sogar perfekt zum Selbstbau individueller Werkzeuge. Wir beweisen Ihnen das an einem Tool für professionelle, nach Stundensätzen bezahlte Schreiber. Für die ist es wichtig zu wissen, wieviel Zeit sie für einzelne Dokumente benötigen, damit sie diese ihren Auftraggebern in Rechnung stellen können.

Man könnte eine Calc-Tabelle für solche Berechnungen verwenden, in die man Dokumentenname, Datum, benötigte Zeit und weitere Informationen von Hand einträgt. Besonders effizient erscheint das in Zeiten automatischer Datenverarbeitung aber nicht. Stattdessen kann man mit OpenOffice.org Basic ein Werkzeug anfertigen, das die Zeit, , die man für ein Writer-Dokument braucht, selbständig im Auge behält. Die trägt es Tool dann automatisch in eine Base-Datenbank ein, die nachher für die Rechnungsstellung alle benötigten Informationen liefert.

Ein Anwender ohne Programmierkenntnisse mag sich von einer solchen Aufgabenstellung einschüchtern lassen – um dieses nützliche Helferlein anzufertigen, benötigt man jedoch nichts weiter als ein Makro und eine einfache Base-Datenbank.

Datenbank in Base anlegen

Bevor Sie sich um das Makro kümmern, legen Sie in Base eine einfache Datenbank an, in der das Makro anschließend die wichtigsten Daten über das Erstellen der Dokumente ablegt. Starten Sie OpenOffice.org, klicken Sie auf Neues Dokument | Datenbank und danach auf Öffnen: Damit starten Sie den Datenbank-Assistenten. Übernehmen Sie die Option Neue Datenbank erstellen und klicken Sie auf Fertig stellen. Vergeben Sie einen Namen, zum Beispiel Zeiterfassung. Mit OK legen Sie die Datenbank an.

Nun klicken Sie im Arbeitsfenster von Base auf Tabellen und danach auf Tabelle in der Entwurfsansicht erstellen. Es öffnet sich ein neues Fenster, in dem Sie die Felder Ihrer Zeiterfassung definieren. Welche das sein sollen, hängt davon ab, was Sie dort später sehen möchten. Mindestens sollten Sie aber vier Felder für Datenbankschlüssel, Dokument, Datum und Zeit dort eintragen (Tabelle "Feldnamen" und Abbildung 1).

Feldnamen

Feldname

Feldtyp

Beschreibung

ID Integer [INTEGER] Primärschlüssel (für jeden Datensatz einzigartig und eindeutig)
Dateiname Text [VARCHAR] Name des erfassten Office-Dokuments
Zeit Integer [INTEGER] Dauer für das Erstellen des aktuellen Dokuments
Datum Datum [DATE] Tag, an dem Sie den Datensatz hinzugefügt haben

Abbildung 1: Als Basis Ihrer Zeiterfassung erstellen Sie in Base eine einfache Tabelle.

Klicken Sie mit der rechten Maustaste auf das kleine Feld links neben dem Feldnamen ID und wählen Sie aus dem Kontextmenü Primärschlüssel. Base fügt dem Feld ein kleines Schlüsselsymbol hinzu. Stellen Sie in den Feldeigenschaften bei Auto-Wert Ja ein, damit Base diesen Wert später automatisch hochzählt. Haben Sie alle Felder erstellt, speichern Sie die Tabelle zum Beispiel unter dem Namen time und schließen die Entwurfsansicht. Klicken Sie auch im Datenbankfenster von Base auf Datei | Speichern, um die gesamte Datenbank bis hierher zu sichern.

Im nächsten Schritt registrieren Sie Ihre Datenbank als Datenquelle, auf die Sie mit anderen OpenOffice-Anwendungen zugreifen wollen. Dafür wählen Sie aus dem Menü Extras die Optionen und im Bereich OpenOffice.org Base die Datenbanken (Abbildung 2). Taucht die Datenbank in der Liste der registrierten Datenbanken nicht auf, klicken Sie auf Neu sowie Durchsuchen, wählen die Zeiterfassung per Doppelklick und OK aus und schließen das Menü.

Abbildung 2: Registrieren Sie Ihre Datenbank in Base, so dass Sie von anderen OpenOffice-Anwendungen darauf zugreifen können.

OpenOffice-Makro erstellen

Alle Einzelprogramme des freien Büropakets arbeiten mit OpenOffice.org Basic zusammen. Das bedeutet: Mit welcher Applikation Sie auf den Basic-Editor zugreifen, spielt keine Rolle. Sie erreichen den Editor immer über Extras | Makros | Makros verwalten | OpenOffice.org Basic. Markieren Sie das Makro Main und klicken Sie auf Bearbeiten. Anschließend präsentiert sich der Bildschirm etwa so, wie in Abbildung 3 zu sehen. Um den unten beschriebenen Code einzufügen, scrollen Sie einfach ans Ende des Skripts.

Abbildung 3: Der Basic-Editor von OpenOffice. Hier fügen Sie den Code der Zeiterfassung ein.

Das OOoBasic-Makro, das Sie für Ihre Zeiterfassung benötigen, besteht aus zwei Teilen: Der erste startet und stoppt einen Timer und berechnet die dazwischen vergangenen Minuten, der zweite zeichnet für gleich drei Dinge zuständig: Er verschafft sich Namen und Entstehungsdatum des aktuellen Dokuments, baut eine Verbindung zur Datenbank auf und schreibt die erhobenen Daten in einen neuen Datensatz.

Starten Sie mit dem Timer, der wiederum aus zwei Subroutinen besteht: Die erste sorgt für den Beginn der Zeiterfassung, die zweite stoppt sie und misst die verbrauchte Zeit. Dazu definieren Sie in OOoBasic zunächst zwei globale Variablen: GlobalElapsedTime und GlobalStartTime (Listing 1, Zeilen 2 und 3). Sie brauchen diese Variablen, um die Werte für Start- und verbrauchte Zeit zwischen den Subroutinen für StartTime und EndTime auszutauschen. Die Subroutine für StartTiming() fällt ziemlich einfach aus (Listing 1, Zeile 6 ff.).

Listing 1
rem — Globale Variablen
Global ElapsedTime as Long
Global StartTime
rem — Timer starten
Sub StartTiming()
  If ElapsedTime <> 0 then
    Message="Es laeuft bereits eine Zeitmessung!" & Chr(13) & "Moechten Sie eine neue Messung starten?"
  Else
    Message="Moechten Sie eine Zeitmessung starten?"
  EndIf
  Answer=MsgBox(Message,4,"Zeitmessung starten?")
  If Answer=7 then End
  StartTime=Time
  ElapsedTime=Timer
End Sub

Als erstes prüft sie anhand der Variablen ElapsedTime, ob bereits eine Zeitmessung läuft. Ist der Wert der Variable Null, fordert die Subroutine den Anwender auf, eine neue Session zu starten. Um die verbrauchte Zeit zu berechnen, wenn der Anwender die Messung stoppt, verwendet die Routine die beiden Variablen StartTime und ElapsedTime. StartTime erhält ihren Wert von der Variablen Time, die wiederum die aktuelle Uhrzeit von der Systemzeit des Rechners bezieht. ElapsedTime fungiert als Timer und holt sich ihren Wert aus der gleichnamigen Funktion.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

2427 Hits
Wertung: 164 Punkte (18 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...