Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Xoar am November 19, 2016, 15:28:02

Titel: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 19, 2016, 15:28:02
Hallo,

ich habe folgendes vor:
Zur besseren Vorstellung, stellt euch eine Liste vor, wo untereinander alle Mitarbeiter und nebeneinander alle Datumstage für ein Jahr stehen. Hier müssen in bestimmten Intervallen die Werte X1,X2,X3 eingetragen werden.
Es müssen alle 7 Tage(Invervalleingabe) ein X pro Mitarbeiter eingetragen werden, es fängt mit X1 an, das nächste (7 Tage später) X2, das dritte (7 Tage später) X3. Es kann aber auch vorkommen, dass das START X nicht 1, sondern, 2, oder 3 ist und dieses Problem bekomm ich noch nicht hin. Die Logik dahinter ist aber simpel. Wenn die X1 Treppe durchläuft, sieht man das ein Mitarbeiter 7 Schichten vor dem X1 wieder eine X eingetragen bekommen muss. Da es aber immer 1,2,3 durchlaufend eingetragen wird, muss dieser mit einem X2 starten.

Bsp:
M_ID Tag1  Tag2  Tag3  Tag4  Tag5  Tag6  Tag7  Tag8  Tag9  Tag10
1        x1                                                                x2
2                 x1                                                                  x2
3                           x1                                                                 x2
4                                   x1
5                                             x1
6                                                      x1
7                                                                x1
8         x3                                                             x1
9                 x3                                                              x1
10                      x3                                                                x1

Habe bis jetzt folgenden VBA Code geschrieben:
'////Hier wird eine Abfrage für jeden Mitarbeiter erstellt und dann alle 8(intervalleingabe) Schichten die passende X Schicht zugewiesen
Public Function XschichtenEintragen(StarttagWA As Date, XArt As Integer, intervall As Integer)
Dim qdf As QueryDef
Dim Starttag As Date
Dim rs As Recordset
Dim zaehler As Integer
Dim XSchichtArt As Integer
Dim Mitarbeiterschleife As Integer
Dim CounterDatum As Integer
On Error GoTo Fehlerbehandlung
CounterDatum = 1
Starttag = StarttagWA
For Mitarbeiterschleife = 1 To DMax("[Sortierung]", "tblMitarbeiter", "[Wachabteilung] = 1")
    Set qdf = CurrentDb.QueryDefs("qryXSchichtenVBA") 'Hier wird qdf eine Abfrage zugewiesen, der in VBA Parameter zugewieden werden können.
    qdf.Parameters("[WaEingabeX]") = 1
    qdf.Parameters("[MitarbeiterIDXTage]") = Mitarbeiterschleife 'hier wird die Abfrage auf den aktuellen Mitarbeiter der Schleife ausgeführt nach der Sortierreihenfolge
'Eine Abfrage enhält immer genau 1 Mitarbeiter und den Zeitraum 01.01. akt Jahr bis 31.12. akt. Jahr
   
   
    Set rs = qdf.OpenRecordset 'den Recordset auf die parameterisierte(gefilterte) Abfrage öffnen
        Do While Not rs.EOF
            If rs!Datumstag_F < Starttag Then
                rs.MoveNext
            Else
                For XSchichtArt = 37 To 39 'X 1 - 3
                   rs.Edit
                   rs!vonZeit = Null
                   rs!bisZeit = Null
                   rs!Position = XSchichtArt '37=X1, 38=X2, 39=X3
                   rs.Update
                       For zaehler = 1 To intervall
                           On Error Resume Next
                           If rs!Datumstag_F = Null Then GoTo Sprungmarke
                           If rs!Datumstag_F <= "31.12." & Year(Date) + 1 Then rs.MoveNext Else
                       Next
                Next
            End If
        Loop
Sprungmarke: If CounterDatum < intervall Then
    Starttag = DateAdd("d", 3, Starttag)
    CounterDatum = CounterDatum + 1
Else
    CounterDatum = 1
    Starttag = DateAdd("d", 3, StarttagWA)
End If
Next
MsgBox "fertig"
Exit Function
Fehlerbehandlung:

End Function


habt ihr eine Idee, wie ich dies realisieren kann, oder insg. anders machen sollte?

Jetzt fängt er halt immer mit X1 an.
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: crystal am November 19, 2016, 18:08:46
Hallo xoar,

ZitatJetzt fängt er halt immer mit X1 an.

So ist es ja auch programmiert:
For XSchichtArt = 37 To 39 'X 1 - 3

Vielleicht müsstest du erst suchen, welche Schicht für den MA zuletzt definiert wurde.

Noch was:
Deine Codezeile

If rs!Datumstag_F <= "31.12." & Year(Date) + 1 Then rs.MoveNext Else

ist ja wohl fehlerhaft (else).


(Insgesamt: achte auf Ein- und Ausrückungen im Sourcecode, stelle Labels (sprungmarke) in einer Zeile allein usw., damit jeder If-Block oder Loop immer anhand der Einrückung identifiziert werden kann.)

Ansonsten würde ich das Intervall nach oben legen (also als erstes Statement beim Abarbeiten des Recordsets), etwa so:

icount =0
do while not rs.eof
  icount = icount +1
  if icount < intervall then
    goto MoveMyRS
  else
    icount=0
  endif
  (hier nun code für Intervall erreicht)
...
MoveMyRS:
  rs.movenext
loop

Zusammengefasst:
1. suche den letzten Tag (z.B. mit dlookup), an dem für den MA eine Schicht eingetragen wurde (kann allerdings auch im Vorjahr liegen, also suche z.B. vom 1.Dez.<Vorjahr> bis 31.Dez.<aktuelles Jahr>) und merke dir x1, x2 oder x3
2. da SQL kein STEP kennt (so wie in For i=1 to 100 step 10), selektiere nun die Datensätze von <letzter gefundener Eintrag> bis <31.12. aktuelles Jahr>
3. arbeite den RecordSet ab, überspringe dabei Records, die unterhalb des Intervalls liegen
4. wenn du einen Intervall-Tag gefunden hast, speicher den passenden X-Wert ab (in Abhängigkeit vom zuvor gefundenen X-Wert des letzten Tags)

Ich hoffe, diese Anregungen helfen dir weiter, wenn sie auch nicht "ausprogrammiert" sind.

lg
crystal
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 19, 2016, 18:28:09
ja danke, den Gedanken hatte ich auch schon in der Art, wusste nur noch nicht genau wie ich mir den Wert am besten hole.

Wenn ich den Wert dann gefunden habe, muss ich ihn ja als irgendwie einbinden.

Es gibt keine direkte Möglichkeit zu sagen, starte bei Wert 38 (x2) in der if Schleife, oder?
Ich muss dann wohl den Wert vor der Eintragung abfragen und mit if die Szenarien programmieren, wo der Start kein X1 ist.

sowas wie
if Abfragewert = 38 then
           rs.edit
           rs!Position = 39
           rs.update
           rs.movenext....
else if Abfragewert = 39 then
           ....
else
          ....
end if

Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: crystal am November 19, 2016, 18:53:12
Hallo xoar,

ZitatEs gibt keine direkte Möglichkeit zu sagen, starte bei Wert 38 (x2) in der if Schleife, oder?

Naja - du meinst ja For-Next-Schleife...
Prinzipiell kann du eine solche Schleife von einem "beliebigen" Punkt starten:
for i = <startpunkt> to <endpunkt> [step <stepsize>], also z.B.
for i = 120 to 140 step 4

Aber bei deiner Fragestellung würde ich den Vergleich mit "Intervall" vorziehen, da der Recordset ja schon sequenziell abgearbeitet wird.

Statt den Abfragewert mit if..elseif abzufragen könntest du auch

select case abfragewert
  case 38:
    ...
  case 39:
    ...
...
end select

schreiben.

Ganz verstanden habe ich nicht, wann aus x1 x2, aus x2 x3 und aus x3 wieder x1 wird (und was geschieht, wenn der MA Urlaub hat). Aber das kannst du ja programmieren, wenn du ertsmal die Intervall-Tage gefunden hast.

lg
crystal
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: MzKlMu am November 19, 2016, 19:30:39
Hallo,
Zitatwo untereinander alle Mitarbeiter und nebeneinander alle Datumstage für ein Jahr stehen.
prinzipiell ist eine solcher Matrixaufbau für eine Datenbank ungeeignet. Abgesehen davon, lässt sich ein Jahr mit allen Tagen nicht so darstellen, da eine Accesstabelle nur max. 255 Spalten haben kann.
Die Tabelle sollte nur 3 Spalten haben (MAID, Schichtart, Datum) und die Daten vertikal führen. Also für ein Mitarbeiter je Schichttag ein Datensatz, also nur ein Datum eintragen wenn er an diesem Tag auch Schicht hat.. Ob es sinnvoll ist diese Tabelle im voraus anzulegen weiß ich jetzt auch.
In Deinen Beispieldaten würde MA1 an Tag1 und Tag8 arbeiten und dazwischen ?
Warum glaubst Du die Tabelle im voraus füllen zu müssen ?
Kannst Du mal einfach die Schichtfolge beschreiben (ich verstehe das Beispiel nicht ganz), ohne jetzt mal eine Tabelle im Hinterkopf zu haben?
Um wie viele Mitarbeiter geht es denn da ?
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 19, 2016, 20:17:29
@crystal
Ich dachte Step ist dafür da, dass die Schleife z.B. 4 steps weiter geht. also 1 to 100 step 4 = 1,5,9,13....
Wann aus X1, X2, oder X3 hängt aus der Kombination zweier Sichtweisen ab.
a.
  1. Mitarbeiter Tag 1 = X1
                      Tag 2 = wert
                      Tag 3 = wert
                      Tag 4 = wert
                      Tag 5 = wert
                      Tag 6 = wert
                      Tag 7 = wert
                      Tag 8 = x2
                       ...
und einmal aus der Sichtweise des Tages
MitarbeiterID     Tag                          Tag
1                       01.01.2017     X1     02.01.2017
2                       01.01.2017              02.01.2017   x1
3                       01.01.2017              02.01.2017
4                       01.01.2017              02.01.2017
5                       01.01.2017              02.01.2017
6                       01.01.2017              02.01.2017
7                       01.01.2017              02.01.2017
8                       01.01.2017     X3     02.01.2017 -> 08.01.2017 X1
9                       01.01.2017              02.01.2017    x3 -> 09.01.2017 X1

Das hängt damit zusammen, dass der Mitarbeiter 8, sieben Tage nach dem 01.01.2017 sein X1 hat. Man geht die Treppe der X Tage einfach weiter, wie im Erstposting zu sehen ist.
PS: Da gabs noch ein Fehler die roten X2er, müssen natürlich X3er sein, weil danach ja X1 kommt.

Hoffe ist nun verständlich

@MzKIMu
soeine Matrix habe ich ja auch nicht, sie war nur zur Vorstellung gedacht.
Ich habe eine Tabelle wo alle Tage für jeden Mitarbeiter als DS untereinander stehen, also Anzahl_Jahrestage*AnzahlMitarbeiter an DS
Dazu dann ein Feld wo diese X1,2,3 rein müssen.

Die Vorausfüllung ist eine Arbeitserleichterung, da diese am Jahresanfang fest steht und somit nicht mehr eingetragen werden muss, sobald Tag X auftaucht steht bei Mitarbeiter Y schon der Wert drin.
Da diese Vorplanung einer Logik folgt, sollte das ja möglich sein.

Diese X1,2,3 bedeuten eigentlich "frei" mit Rangfolge (wegen Rufbereitschaft)

Die Arbeitsfolge ist eigentlich alle drei Tage, zum Verständnis habe ich es auf Tag auf Tag vereinfacht.
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: MzKlMu am November 19, 2016, 22:56:12
Hallo,
also trotz mehrmaligen lesen habe ich das nicht verstanden. Oder ich stehe auf der Leitung, was ich ja nicht ausschließen will.

Was hat es mit diesen X auf sich ?
Was ist denn der Unterschied zwischen X1, X2 und X3 ?
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 09:15:09
X bedeutet erstmal frei. Jetzt können drei Leute an einem Tag frei haben. X1,2,3.
Wenn jetzt wer krank wird, wird erst X3 angerufen, bei zwei Kranken auch X2....

Diese Freitage sind alle 7 Tage vordefiniert. Damit die Priorität nicht immer gleich ist, wechselt diese immer.
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: MzKlMu am November 20, 2016, 09:21:22
Hallo,
scheinbar bin ich wirklich etwas schwer von Begriff.
Kannst Du mal eine Exceltabelle hier hochladen, wie die fertige Accesstabelle aussehen soll ?
Mit so vielen Zeilen (Datensätzen) dass man die Regel erkennen kann.
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 10:39:12
So habe sie als Xer.xls angehangen.

Wie gesagt da der erste Mitarbeiter mit X1 anfängt und die Treppe nach rechts unten weiter geht, muss irgendwann am ersten Tag ein Mitarbeiter mit X2 und einer mit X3 anfangen.

Hoffe ist ersichtlich.

PS: wie die Accesstabelle aussieht, kann ich garnicht abbilden, das wäre viel zu viele DS.
Jeder Tag ist ja 20x vorhanden (jeder Mitarbeiter 1x) und dann gehts los..

01.01 Mitarbeiter 1       X1
....
01.01 Mitarbeiter 8       X3
....
01.01 Mitarbeiter 15     X2
....
01.01 Mitarbeiter 20
02.01 Mitarbeiter 1
02.01 Mitarbeiter 2       x1
....
02.01 Mitarbeiter 9      x3
02.01 Mitarbeiter 16    x2
....


Grüße
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: MzKlMu am November 20, 2016, 10:41:22
Hallo,
sorry, aber das wollte ich nicht. Ich wollte sehen, wie die Accesstabelle aussehen soll.
Zitat von: MzKlMuKannst Du mal eine Exceltabelle hier hochladen, wie die fertige Accesstabelle aussehen soll ?
Die Antwort auf eine frühere Frage steht auch noch aus.
Zitat von: MzKlMuUm wie viele Mitarbeiter geht es denn da ?
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 10:50:32
Insg. um ca. 70, aber diese sind geteilt in 3 Schichten., da ich mich ja immer auf eine Abfrage berufe sind es also ca. 24.

Hier ändert sich im Prinzip nur der erste Starttag und dann geht das gleiche Procedere los.
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: MzKlMu am November 20, 2016, 10:53:28
Hallo,
und wo ist jetzt die andere Exceltabelle ?
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 10:56:24
ich baue sie noch
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 11:01:23
SO....

jetzt wo ich mir das so in dieser Variante anschaue, sieht das eigentlich garnicht mehr so schwer aus, man muss nur immer bei jedem folgenden Datumstag MitarbeiterID +1  machen..... so spontan

Hier ist natürlich nun drauf zu achten, dass wenn die X1,2,3 soweit nach unten gewandert sind, diese wieder bei Mitarbeiter 1 anfangen.

heißt Mitarbeiter 20 hat nen X3 am 10.01. dann am 11.01 hat wieder Mitarbeiter 1 das X3.

(bei einer Annahme von genau 20 Mitarbeiter)
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: MzKlMu am November 20, 2016, 11:59:11
Hallo,
ich versuche mal eine Regel zu definieren.

1.Spalte
Datum für jeden Mitarbeiter wiederholend. Beginnen am 1.1.

2.Spalte Mitarbeiter (als ID)

3.Spalte
Die X beginnend am 1.1. mit X1 dann X3 dann X2 immer 7 Tage dazwischen.

Fragen:
Sind das immer durchgängig 7 Tage  ?
Die Reihenfolge ist durchgängig immer X1 - X3 - X2 ?
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 12:07:12
7 Tage sind fix.
Reihenfolge ist bedingt fix.
Stell dir vor Du hast diese X1,2,3 die immer ein Mitarbeiter pro Tag nach unten wandern, irgendwann fällt ja das X unten raus und taucht oben wieder auf. 

Mann könnte sagen:

4. Wenn TagY Mitarbeiter20 (letzteID) X3 hat, muss TagY+1 wieder Mitarbeiter1 das X3 haben.

Für die X1 und X2 natürlich das gleiche Prinzip
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: MzKlMu am November 20, 2016, 12:12:48
Hallo,
sorry, aber ich kapiere es einfach nicht. Für Dich mag das ja einfach sein, aber ich habe ja 0 Ahnung über Eure Abläufe. Und wenn man etwas automatisiert machen will braucht es ein klare und eindeutige Regel.

Es ist auch verwirrend, weil Du mal von X spricht und dann wieder von X1, X2, X3.
Zitatirgendwann fällt ja das X unten raus und taucht oben wieder auf
Welches (von den 3en) fällt dann raus und wie geht es dann oben weiter. Und was heist oben, wo oben, wieder beim 1.1.
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 12:40:40
Ok, ich danke dir für die Mühe, aber ich breche es hier ab. Scheint wohl für Außenstehende echt schwer zu verstehen sein.

Mein nächstes Problem, wird hoffentlich nicht so kompliziert. ;)

Meinetwegen kannst Du den Thread löschen.

Danke
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: crystal am November 20, 2016, 12:56:40
Hallo,
nicht so schnell die Flinte ins Korn werfen.
Ich glaube, deine Frage verstanden zu haben und hatte schon begonnen, eine Lösung zu schreiben, als sich plötzlich mei Browser verabschiedet hat.

Ich schreib's jetzt neu und lade es dann hier hoch - bitte um etwas Geduld.

lg
crystal
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 13:38:28
Ok, merci
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: crystal am November 20, 2016, 13:59:58
Hallo xoar,

hier nun meine Lösung.
Aber zunächst zu dem, was ich mir anhand deiner Beschreibungen vorstelle.
1. du hast eine Tabelle, in der für jeden MA ein Jahreskalender gespeichert ist.
2. gemäß deiner Darstellung in deiner ursprünglichen Frage willst du nun in der sich gedanklich ergebenden Matrix, beginnend am 1.Jan für Ma1 alle 8 Tage ein Kennzeichen speichern, das von x1 bis x3 läuft und dann wieder bei x1 beginnt.
3. für Ma2 beginnt der Zyklus einen Tag später, also am 2.Jan.
4. usw. bis Ma8. Hier fällt das x1 auf den 8.Jan. Das ist größer als das Intervall und deshalb muss hier für den 1.Jan. ein weiteres xn eingefügt werden. Um die Reihenfolge der xn's einzuhalten UND weil der 8.1. ein x1 bekommt, muss also am 1.1. ein x3 stehen.

Wenn das ganze ein 2-dimensionales Array in VBA wäre, könnte man mit For-Next-Loops die Matrix abarbeiten.

Das geht aber nicht in Access, weil deine Tabelle ja eigentlich so aussieht:
MA Tag  Wert
1  1.1. x1
1  2.1. -
1  3.1. -
...
1  7.1. -
1  8.1. x2
...
1  31.12. -
2  1.1. -
2  2.1. x1
...

Diese Tabelle kannst du natürlich nur sequenziell abarbeiten, also Zeile für Zeile.

Ich gehe jetzt vom einfachen Fall aus (das erste x1 in der gedachten Matrix fällt auf den 1.Jan. bei MA1). Die Lösung sieht dann grob so aus (für MA1):

<Hilfsvariable initialisieren:
intervall = 7
oldma = 1
weiter = true

<recordset öffnen (sortierung MA und Datum>
do while not rs.eof
   
   do while weiter
      for x = 37 to 39
         for i = 1 to intervall
            if i=1 then
               rs!wert = xwert
               rs.update
            endif
            rs.movenext
            if rs.ma <> rs.oldma then
               weiter = false
               goto loopexit
            endif
         next
      next
   loop
loop

loopexit:


Mir schwirrt etwas der Kopf, vielleicht kann das mal jemand prüfen...

Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: crystal am November 20, 2016, 14:11:04
Noch einfacher:

icounter = 0
xwert=37
intervall =7
oldma =1
macount=0

do while not rs.eof
  if rs!ma <> oldma then
    macount = macount +1
    for i = 1 to macount
      rs.movenext
    next
    icounter =0
    exit loop
  endif
  icounter = icounter +1
  if icounter mod intervall = 0 then
    rs!wert = xwert
    rs.update
    xwert = xwert +1
    if xwert > 39 then xwert = 37
  endif
  rs.movenext
loop


Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 14:17:46
Jap Du hast es erkannt.

Ich hab nur noch nicht erkannt, wo in der Schleife der Fall eintritt, dass er mit einem X3 beginnt.
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: crystal am November 20, 2016, 14:32:51
OK - daran arbeite ich noch.
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 14:35:53
Ok, soweit bin ich ja auch schon gekommen. Jetzt fängt das eigentliche Problem an... ich bin gespannt ;)
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: crystal am November 20, 2016, 15:58:35
Hallo xoar,
Zwischenbericht:
Ich habe eine Tabelle "xtab" angelegt, die folgende Felder hat:
xid = autowert, Primärschlüssel
ma = zahl
dt = datum
xw = text

und mit 3 MAs und jeweils dem Datum 1.1. bis 31.12.2016 gefüllt.

Dazu noch eine Abfrage "xtaba", die einfach nur die Werte aus xtab holt und (zur Sicherheit) nach ma und dt sortiert.

Mit diesem Code

Private Sub Befehl0_Click()
Dim icounter As Integer
Dim xwert As Integer
Dim intervall As Integer
Dim oldma As Integer
Dim macount As Integer
Dim i As Integer

Dim rs As ADODB.Recordset
Dim sq As String
       
sq = "select * from xtaba"
Set rs = New ADODB.Recordset
rs.ActiveConnection = CurrentProject.Connection
rs.Open sq, , adOpenDynamic, adLockOptimistic

icounter = 0
xwert = 37
intervall = 8
oldma = 1
macount = 0

Do While Not rs.EOF
    If rs!ma <> oldma Then                  'MA wechselt, d.h. wir sind wieder beim 1.Januar
        oldma = rs!ma                       'neuen Ma merken
        macount = macount + 1               'MA-Zähler erhöhen und ...
        For i = 1 To macount                '... entspr. viele Tage überspringen
            rs.MoveNext
        Next
        xwert = 37
        icounter = 0                        'ab hier starten wir (fast) ...
    End If
    icounter = icounter + 1                 '... denn erst jetzt ist der Startzähler gesetzt
    If icounter Mod intervall = 0 Or _
        icounter = 1 Then                   'wenn das Intervall erreicht ist oder wir gerade gestartet haben ...
        rs!xw = xwert                       '... schreiben wir den xwert in die Tabelle und ...
        rs.Update
        xwert = xwert + 1                   '... erhöhen ihn ...
        If xwert > 39 Then xwert = 37       '... innerhalb der vorgegebenen Grenzen
    End If
    rs.MoveNext                             'weiter zum nächsten Record
Loop

rs.Close

End Sub


habe ich jetzt schon mal alle x-Werte richtig eingetragen.
An diesem Code muss jetzt weiter gebastelt werden - lass mir etwas Zeit.

lg
crystal
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: crystal am November 20, 2016, 20:02:55
Lieber xoar,
hat etwas gedauert, aber ich habe eine Lösung gebaut und getestet, allerdings erstmal nur für 3 Mitarbeiter.

Zur Bedienung:
0. stelle im VBA-Fenster unter Extras einen Verweis auf Active-X-Dataobjects Vers.xx (letzte ist beste) her
1. öffne xtab. Du findest dort einen einzelnen x-wert (38), eingetragen am 27.12.2015 (ja 2015) für MA1.
2. öffne Formular1 und klicke auf "Befehl0".
3. wechsle zurück zu xtab und du siehst die Zahlen 38, 39, 37 usw. im Abstand von je 8 Tagen eingetragen. Wenn du runterscrollst, wird dir auffallen, dass für MA2 (MA3) und Dez. 2015 keine Werte eingetragen wurden.
4. zurück in Formular1 kannst du dann zum Testen alle x-Werte wieder löschen (Button reset). Dann musst du aber manuell einen neuen Wert in xtab eintragen (z.B. 37 am 26.12.2015) und kannst dann Befehl0 wieder anklicken.

Ich hoffe, diese erste Lösung entspricht deinen Vorstellungen und übersteht deine Tests. ;-)
Was jetzt noch zu tun ist, ist die spezielle Situation zu berücksichtigen, wenn man einen 8., 16. oder 24. MA bearbeitet...

Viel Erfolg beim Testen. Meine db ist unter acc2016 gebaut. Ich hoffe, das passt. Aber ich habe auch eine mdb eingepackt (acc2002 ff.).

Und sorry - ich habe kein Error-Handling eingebaut, musst du dann selber machen.

lg
crystal

PS: Erweiterungen mache ich dann in den folgenden Tagen...



Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 20, 2016, 21:33:54
Ja cool danke.
Ich arbeite mit der 2010er. Kann sie selber erst am  Dienstag testen, da ich erst dann wieder auf der Arbeit bin.

Werd dir aufjedenfall eine Rückmeldung geben!
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: crystal am November 21, 2016, 17:35:03
Hallo xoar,
so, es ist nun fertig. In der alten Version waren noch Fehler, bitte löschen.

Nicht vergessen: Verweis auf ADODB.

Ich hab die Tabelle auf 12 MA aufgepumpt und noch ein Formular2 gebastelt, zur Visualisierung des Ergebnisses (mit fest eingestelltem Jahr 2016, Rollbalken funktionieren nicht).
Zum Testen öffne Formular1, Formular2 und xtab. Wechsel dann zurück zu Formular1 und klick auf "x eintragen". Das Ergebnis siehst du dann "sofort" in xtab und Formular2.
Neuer Versuch? Einfach "reset" klicken, einen Startwert im Dez. 2015 eintragen und "x eintragen" klicken.

Viel Spaß beim Testen.

lg
crystal

PS: ich hab noch eine Excel-Tabelle zum Füllen von xtab beigefügt. Wenn du den Dez. 2015 rauslöschst und die MA-Spalte um je 12 erhöhst, hast du 12 weitere Test-MA für xtab (einfach importieren und an xtab anfügen).
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 21, 2016, 18:19:56
Super vielen dank! Ich werd mir morgen alles genau anschauen und berichten.

:D
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: Xoar am November 22, 2016, 16:06:51
@crystal

Perfekt, klappt super, dank deiner Dokumentation ist auch alles gut nachvollziehbar.
Bist mein persönlicher Tagesheld.

*Daumen hoch*

Grüße
Titel: Re: Automatisierte Werteeingabe alle X Tage
Beitrag von: crystal am November 22, 2016, 16:21:40
Hallo xoar,

na - das freut mich aber.

Es gibt noch einen kleinen Logik-Fehler: das letzte x-Datum im Dezember muss innerhalb der Intervalls liegen, d.h. es muss nach dem 23.12. eingetragen sein (31-8). Aber das ist in der Praxis dann sicherlich der Fall und kommt ja erst 2017 zum Tragen.

Viel Erfolg bei der Umsetzung in deine Anwendung und Danke für den "Tagesheld" - ich fühle mich geschmeichelt...

lg
crystal