PDA

Vollständige Version anzeigen : Wie lange arbeite ich eigentlich schon an dieser MDB ??? Zeitzähler ???


AWSW
05.05.2001, 22:37
Hallo Leute,
kann man unter Access 2000 eine Funktion generieren, die die aktive Bearbeitungszeit / Erstellungszeit ermittelt, die für das Entwerfen einer MDB benötigt wird und einem dann als TAGE/STUNDEN/MINUTEN/SEKUNDEN angezeigt wird. Ich möchte das für mich realisieren, da ich eine mittlerweile sehr große Anwendung habe, die bisher etwa so um die 800 Stunden verschlungen hat. Ich beginne demnächst eine neue ähnlich aufwendige MDB und möchte das dann genauer wissen, über eine Art Zeitzähler....

Dieser Zähler soll aber nur dann laufen, wenn es sich bei der Datei um eine MDB handelt und nicht mehr, wenn es eine MDE ist...
Diese Unterscheidung habe ich auch schon realisiert:

Beim Öffnen des unter START festgelegten Formulars steht dann folgendes
------------------------------------------------------
Me!Text4 = Dir(CurrentDb.Name)
If Text4 = "AW-Tool2000.mdb" Then
docmd.openform "ZEITZÄHLER", acNormal

‚??? Hier müsste der Zähler rein ???

Else
‘Einfach weiter…
End If

------------------------------------------------------
Das ZeitZähler - Formular hat keine Schließen-Möglichkeit mehr, so das es nicht mehr versehentlich geschloßen wird, bis die MDB geschloßen wird...


Ich habe mich schon ein wenig mit der TIMER Funktion befasst – komme aber jetzt nicht mehr weiter... :(

Wäre toll wenn Ihr mir da helfen könntet :D

Sascha Trowitzsch
06.05.2001, 13:02
Das ist ja mal eine witzige Idee...

(Ich habe für dieses Problem einen Notizblock neben dem Rechner, in dem ich die Arbeitszeiten protokolliere ... auf echtem Papier und mit Kugelschreiber ;-)

- Definiere eine globale Variable im Zeitformular: DIM Zeit as Date
- Schreibe ins OnLoad-Ereignis: Zeit = Now()
- Schreibe ins OnClose-Ereignis:
Zeit = Now() - Zeit
Msgbox "Ich habe so lange gearbeitet: " & Zeit

Außerdem würde ich das Zeitformular mit .OpenForm "Zeitformular", acHidden öffnen, damit es nicht stört.

Ciao, Sascha

AWSW
06.05.2001, 13:05
Danke Dir schon mal - werde ich gleich mal einbauen und melde mich dann noch mal mit dem Ergebnis...

AWSW
06.05.2001, 13:40
Hi noch mal...
also ich habe das nun wie folgt eingebaut...
Noch ohne die Unterscheidung MDB/MDE...

--------------------------------------------
Option Compare Database
Private Sub Form_Close()
Zeit = Now() - Zeit
MsgBox "ZEit= " & Zeit
End Sub

Private Sub Form_Load()
Dim Zeit As Date
Zeit = Now()
Me.Text0 = Zeit
End Sub
--------------------------------------------

Ich erhalte dann aber nicht den errechneten Unterschied als Zahl der benötigten Zeit, sondern das:Zeit0.gif

Kann man das noch so umbauen,das er den eigentlichen Zeitunterschied berechnet und und das ganze als Gesamtprojektsumme adiert, über eine Tabelle oder so ???

Ich hoffe Ihr könnt mir da noch etwas helfen :D

AWSW
06.05.2001, 13:55
Hey hey... :D

einen Step bin ich schon weiter.... :)

------------------------------------
Option Compare Database
Private Sub Form_Close()
Dim Zeit As Date
Zeit = Now() - Me.Text0
MsgBox "ZEit= " & Zeit
End Sub

Private Sub Form_Load()
Dim Zeit As Date
Zeit = Now()
Me.Text0 = Zeit
End Sub
------------------------------------

Hier ein Bild dazu: Zeit1.gif

AWSW
06.05.2001, 15:42
Fast OK :cool:
aber ich bekomme die Summe im letzen Feld noch nicht hin :( Diese sollte dann in ein Tabellenfeld geschrieben werden, um beim nächsten Mal ab da weiter zu rechnen...
Das Feld ist schon an eine Tabelle namens "Zeitzahl" gebunden... Der Wert bleibt beim Klick auf den Button (Entspricht später dem schließen des Formulares) immer auf 00:00:00 stehen... :(

Die Summe der gesammten Bearbeitungszeit fehlt mir noch...

Hier der jetzige Aufbau: Zeit2.gif

und das Script - mit dem Fehler irgendwo...

---------------------------------------------
Option Compare Database
Private Sub Befehl8_Click()
Dim Zeit As Date
Dim Ergebnis As Double

Me.EndeMDB = Now()
Zeit = Now() - Me.StartMDB
Me.UnterschiedMDB = Zeit
Ergebnis = Me.SummeMDB + Zeit
Me.SummeMDB = Ergebnis

End Sub

Private Sub Form_Load()
Dim Zeit As Date
Zeit = Now()
Me.StartMDB = Zeit
End Sub
---------------------------------------------

Ich hoffe Ihr könnt mir so kurz vorm Ziel noch helfen :D

Sascha Trowitzsch
06.05.2001, 16:19
Spannend, dein Projekt so chronologisch mitzuverfolgen!

Ich hatte oben hingeschrieben, dass 'Zeit' eine *globale* Variable sein muss! Wenn du sie in einer Sub definierst, ist sie nicht global und speichert deshalb auch nicht den Anfangszeitwert ab. Das 'Dim Zeit as Date' muss direkt nach Option Compare stehen!

Das Ergebnis kannst du statt in Msgbox natürlich in ein Textfeld schreiben und wenn alles protokolliert werden soll die Eigenschaft 'Daten eingeben' des Formulars auf 'Ja' stellen. Dann wird bei jedem Öffnen des Formulars ein neuer Datensatz angelegt und du kannst den Wert des Zeittextfeldes mit einer zugrundeliegenden Tabelle verknüpfen.

Ciao, Sascha

AWSW
06.05.2001, 17:48
Hi noch mal...

Sorry, wenn ich noch mal stören muß, aber das tut´s bei mir einfach nicht, obwohl es ja nicht so schwierig ist :(

Ich habe Dir mal die DB hinterlegt, schau doch bitte mal rein :D

Zeit.zip

Danke Schön :)

A.S.
06.05.2001, 19:16
Hi Axel,

mea culpa, vielleicht stehe ich ja auf dem Schlauch ;) Aber wenn es Dir nur darum geht zu sehen wie lange Du welche MDB genutzt bzw. bearbeitet hast, warum benutzt Du nicht das Journal von Outlook. Meine mal gelesen zu haben das Du dieses hast.....

Das zeichnet die entsprechenden Daten automatisch auf, sofern Du die Optionen entsprechend eingestellt hast....

cu

Arno

AWSW
06.05.2001, 19:36
Hmmm.... :D

Danke Arno wäre auch eine Möglichkeit...

Was in diesem Formular halt nur als einzigstes nicht funkt, ist die Erstellung der Summe in dem letzten Feld. Ich habe grade noch was experimentiert, un wenn ich in das SummeMDB Feld als Startwert eine 1 schreibe und dann den Wert durch Klick auf den Button neu ermittle, dann erhalte ich ein Datum von 1899 ??????????????

Kannst Du mir zu dem Form helfen, ich möchte halt gerne die Zählung innerhalb der DB machen, da ich auf mehreren festen PCs und 2 Laptops zeitweise daran arbeiten will und dann ist glaube ich eine intere Verarbeitung besser für die Übersicht...

Ich habe die MDB grade nochmal neu hochgeladen, da Sie anscheinend einen Laufzeitfehler hatte... Zeit.zip


Danke Schön :)

WalterS
06.05.2001, 20:10
Ein Denkanszoß
Tabelle Datum, Beginn, Ende
Im Startformular
bei Open

1. Datensatzanhängen
2. Beginn schreiben

bei Close

1. Datensatz suchen
2. Ende schreiben
3. msgbox dsum("Ende","Zeittabelle") - dsum("Beginn","Zeittabelle")


Aber Achtung

für Access ist 1 ein voller Tag, eine Stunde somit 1/24 ~~~~~ 0.04 und soweiter

Das besipiel geht davon aus, dass du nie über Mitternacht hinaus arbeitest

Deshalb besser:
Tabelle um Feld Dauer erweitern

Dauer= (ende-beginn)*24 ' ergibt Stunden mit Kommazahlen für Minuten (können später umgerechnet werden)

wenn dauer < 0 then dauer = dauer + 1

und dann nurmehr die DSUM auf Dauer für die Msgbox

PS: Eshilft auch, wenn jemend nicht glauben will, dass soviele Stunden angefallen sind, wenn man Datum und Zeit derart mitprotokollier ( Ich habe immer noch ein Feld wo ich festhalte, was an der DB weitergegangen ist.


So und nun Ende

Alexander Jan Peters
06.05.2001, 22:25
<font color="#000000" size="2" face="Tahoma">Hallo,

jetzt will ich aber auch noch meinen Senf dazugeben. Was noch gar nicht erwähnt wurde, ist eine benutzerdefinierte Property für die Datenbank. Die FAQ <a href="http://www.donkarl.com/FAQ/FAQ1Grundlagen.htm#1.8">1.8 VERHINDERN DER SHIFT-TASTE BEIM START</a> zeigt, wie man so etwas implementiert. Ist gut dafür geeignet, um Einzelwerte (wie z.B. die Bearbeitungszeit) zu speichern und dann könntest Du es Dir sparen dafür extra Tabellen anzulegen.

Gruß

A.J. Peters

P.S. Die Idee von Arno ist aber wohl die Beste, damit könntest Du dann gleich mehrere Projekte erfassen.</font>

Falscher Hase
07.05.2001, 07:13
Hallo Axel,

meine Frage bezieht sich nicht direkt auf des Thema. Ich habe mir Deine Beispiel gif's angeschaut. Mit welchem Tool wurden die denn erstellt. Ich suche nämlich so etwas wie einen snapshot viewer.

Danke

AWSW
07.05.2001, 18:06
Hallo Falscher Hase <<< ???,

also erstellt sind die per MS Windows 2000.
Wenn Du auf die Taste DRUCK auf Deiner Tastatur drückst, dann speicherts Du den aktuellen Bildschirminhalt (oder bei mir die Inhalte) in die Zwischenablage. Danach nimmst Du nur noch das Windows Programm namens Paint und fügst den Inhalt der Zwischenablage ein... Danach kann man den gewünschten Bildausschnitt noch ausschneiden >>> dann wird das Bild kleiner. Danach speicherst Du die Bilder meinetwegen als BMP ab. Du kannst Si auch direkt als JPG speichern. Dafür brauchst Du eigentlich keine Zusatzprogramme, als die die bei Windows dabei sind.
Wenn ich allerdings ein GIF speichern will, nehme ich persönlich das kleine Tool ACDSEE, das auf jeder ZeitungsCD oder auch im Internet zu finden ist und das man für ein paar Mark freischalten kann... Das ist meiner Meinung nach das beste und auch schnellste Bildbetrachtungsprogramm...

Ich hoffe das hilft etwas :D

AWSW
07.05.2001, 18:30
Uff,
Danke an alle erst mal. So schnell kann ich gar nicht reagieren, so viele gute Ideen kommen hier - aber ist ja auch das beste Forum :D

PS: Walter die Idee mit dem "Bautage/Entwicklungstagebuch" ist genial... Dann muß ich nicht wie bisher separate Tabelle mit eigenen Infos über den Stand füllen und könnte doch dann durch eine InputBox eine Abfrage beim Beenden tätigen ???

Also noch mal Danke erst mal... :)

Ich habe das eigentlich "fast" gelöst, bin aber irgendwie doch zu blöd, um 2 Zahlen zusammen zu rechnen ???

Mir fehlt nur noch, die bisherige Summe + die grade neu ermittelte Summe zusammen zu rechnen und dann wieder als Gesammtsumme in das Feld / die Tabelle zu schreiben. Ich habe schon überlegt mich für ein bis zwei Tage im 1. Schuljahr anzumelden... Mit anderen Worten ich weis nicht wie es geht...

Das letzte Feld im Bild bleibt immer auf 00:00:00 :(

Das ist alles was mir noch fehlt und diesen Wert dann wieder in die Tabelle für das nächste mal zu speichern. Eigentlich kann das doch nicht soooooooooooooooooooo schwer sein. Ich habe das heute einem Kollegen gezeigt, der den ganzen Tag nichts anderes macht als unter VB so was zu schreiben und er überlegt jetzt auch an einem Schulbesuch... Vielleicht könnt Ihr mir noch etwas helfen, dann haben wir schnell eine ganze Klasse zusammen :D

[Zeit.zip


Hier das eigentlich simple Script:
---------------------------------------------
Option Compare Database
Private Sub Befehl8_Click()
Dim Zeit As Date
Me.EndeMDB = Now()
Zeit = Now() - Me.StartMDB
Me.UnterschiedMDB = Zeit
ERGMDB = Me.SummeMDB + Zeit
Me.SummeMDB = ERGMDB
End Sub

Private Sub Form_Open(Cancel As Integer)
Dim Zeit As Date
Zeit = Now()
Me.StartMDB = Zeit
End Sub
---------------------------------------------
Hier noch ein Bild dazu: Zeit3.jpg

Falscher Hase
08.05.2001, 07:07
Guten Morgen Axel,

wollte Dir nur für die schnelle Antwort danken, ist ja doch recht easy. Aber da muß man auch erst mal drauf kommen.

Danke und bis bald

Judith
08.05.2001, 07:54
Hallo AWSA,

Ich habe mir deine DB angeschaut und ein bisschen herumprobiert.

Ich hab eine Lösung, wenn du möchtest Mail ich Sie dir.

Judith
08.05.2001, 08:16
Hallo Axel,

Du hast POST! :)

AWSW
08.05.2001, 13:05
Es ist vollbracht :D

Vielen Dank an alle, die hier mitgewirkt haben und vor allem Dank an Judith Csapo für die absolut tolle Unterstützung und doch so einigen Schwierigkeiten bei der Umsetzung :D

Ihr erhaltet diese Beispieldatei per Mail.

Also noch mal Danke an alle :)