PDA

Vollständige Version anzeigen : komme nicht in die If-Schleife rein, was ist los


Muli
09.08.2001, 07:28
Hallo nettes Forum.

Hab folgenden Code

If Me.KW >= 1 And Me.KW <= 53 Then
If Me.KW >= DatePart("ww", Date) Then
'Wenn der Termin noch dieses Jahr ist
Me.TERMIN.Value = Fkt_KWMon(Me.KW)
Else
' Wenn der Termin im nächsten Jahr ist
Me.TERMIN.Value = Fkt_KWMon(Me.KW, DatePart("yyyy", Date) + 1)
End If
End If

martiniz
09.08.2001, 07:36
hallo,

also ich verstehe nicht ganz, was du meinst mit "ich komme nicht in die if-schleife rein", aber versuch es mal so:

If Me.KW >= 1 And Me.KW <= 53 Then
Me.TERMIN.Value = Fkt_KWMon(Me.KW)
elseif Me.KW >= DatePart("ww", Date) Then
Me.TERMIN.Value = Fkt_KWMon(Me.KW, DatePart("yyyy", Date) + 1)
end if

Sonne im Herz
09.08.2001, 08:12
ich komme nicht in den 2. teil rein, der mit der elseif, damit mein termin +1 Jahr gemacht wird.

martiniz
09.08.2001, 08:21
also ich würde sagen du hast einen denkfehler drin, weil jedes jahr hat ja die kw 1 bis 52 und du hast das jahr nicht in deinem code mitberücksichtigt. du mußt noch in deinen code das miteinbauen; dann klappt's auch. momentan ist für ihn die erste if- bedingung immer = true deshalb kommst du auch nicht in die 2te.

versuchs nochmal und poste dann ob's gefunzt hat oder nicht.

Birgit Dannenberg
09.08.2001, 08:26
Dann mußt Du mal mehr ins Detail gehen:
was steht denn in Me.KW?

So ganz verstehe ich Deine Logik nicht: die Kalenderwoche kann nur 1-52 (53?) sein. Wenn sie > als die laufende Woche ist, muß sie nicht zwangsläufig im nächsten Jahr liegen.

Hilf mir auf die Sprünge, dann sehen wir weiter.

Birgit

WAG
09.08.2001, 08:34
Ersetze mal Me.KW durch CInt(Me!kw) und es werden Wunder geschehen.

Dieter

Sonne im Herz
10.08.2001, 04:33
Also Me.KW ist ein Kombifeld, welches die Daten aus einer TB holt, Index-Wert 1 - 53 entspricht KW 1...53 danach habe ich sowas wie Heute, EILT SEHR, sofort, nächste Woche, in 14 Tagen,...

KW 53 ist ok, weil 366 Tage (Schaltjahr) geteilt durch 7 Tage je Woche, ergibt 52,28 (53) Wochen.

Wenn die KW < aktuelle KW dann KW = KW nächstes Jahr.
Weil, das mein Liefertermin ist, und ich kann nicht auf die KW 30 liefern, wenn der Kunde in KW 33 bestellt. Auserdem kann ich das Datum auch manuel einsetzen.

Wie stelle ich das an, das das Programm selbständig merkt, das KW < akt. KW die KW für nächstes Jahr sein soll ???

Gruß

mit dem Kopf schüttelnd
Sonne im Herz


Ach ja Dieter, das mit Cint(Me!KW) in der If-Schleife will auch nicht funzen.

MarioR
10.08.2001, 05:47
Hallo,

versuch's mal mit der Date-Funktion, also ersetz mal alle date durch date().

Sonne im Herz
10.08.2001, 05:55
Mit Date () will auch nicht

ganz einfach.

If wert < datepart("WW",date) then
'Anweisung
end if

datepart von dieser Woche ist 32

wenn der Wert kleiner ist als 32 soll ....

Aber will nicht.

Sch...

Sonne im Herz
10.08.2001, 07:18
Juhu habs geschaft

Ganz einfach, wenn mans weis.

Dim kawe as string
kawe = Me.KW
If kawe < datepart ("ww", date) then
'Anwendung
End If

:cool: Cool :cool: gell

eure sich freuende Sonne

WAG
10.08.2001, 07:52
Hi Sonne,
da wirst Du nicht lange jubeln können. DatePart liefert einen Integerwert. Teste doch mal Kalenderwoche 8.

Dieter

Stema
10.08.2001, 10:33
Hallo zusammen,

ich vermute mal, daß das Textfeld(?) Me.KW nicht formatiert ist. Somit wird ein String zurückgegeben.
Versuch's mal mit:
If Val(Me.KW) >= 1 And Val(Me.KW) <= 53 Then
If Val(Me.KW) >= DatePart("ww", Date) Then
'Wenn der Termin noch dieses Jahr ist
Me.TERMIN.Value = Fkt_KWMon(Me.KW)
Else
' Wenn der Termin im nächsten Jahr ist
Me.TERMIN.Value = Fkt_KWMon(Me.KW, DatePart("yyyy", Date) + 1)
End If
End If

Evtl. auch Date durch Now() ersetzen.

Sonne im Herz
10.08.2001, 11:46
@ Stema

hatte am anfang Now statt Date, ist kein Unterschied, außer das Now auch noch die Uhrzeit mitliefert, brauch ich hier aber nicht.
Troftdem, das mit Val(me.KW) funzt auch ganz super.


@ Dieter

Sorry, Dim KaWe as Singel, nicht as String.
Wahr gedankenlos von mir.


Danke an euch alle.

Sonne

ACHTUNG:
Für Nachahmer.
Die KW soll < KW aktuell sein, da ich ein Liefertermin habe, und wenn der Kunde mit einer KW als liefertermin bestellt, die schon verstrichen ist (heute = KW 32) z.B. KW = 30, dann soll es im nächsten Jahr sein, aber Achtung, der Termin sollte auch manuell änderbar sein.

Stema
10.08.2001, 13:00
Hallo Sonne,

noch ein kleiner Kommentar.

Sorry, Dim KaWe as Singel, nicht as String.
Wahr gedankenlos von mir.

Die KW kann nur zwischen 1 und 52 (oder 53) liegen.
Byte 1 byte 0 to 255
Integer 2 bytes -32,768 to 32,767
Long
(long integer) 4 bytes -2,147,483,648 to 2,147,483,647
Single
(single-precision floating-point) 4 bytes -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values
Double
(double-precision floating-point) 8 bytes -1.79769313486232E308 to
-4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
Wenn Variablen und vor allem Datenbankfelder zu großzügig dimensioniert werden, dann kann das ganz gewaltig die Performance und die Größe der DB beeinflussen (bei entsprechenden Datenmengen natürlich). Du solltest Dir also vorher genau überlegen, wie Du Variablen/Felder dimensionierst.

In Deinem Falle solltest Du also Dim kawe as Byte verwenden. Nur als Denkanstoß für andere Bereiche, in denen mehr Daten "fließen" als in diesem Falle.