PDA

Vollständige Version anzeigen : Formel-Problem


nessie
25.09.2003, 10:22
Hallo zusammen!
Ich führe eine Terminkontrolle mit Fristen. Nun möchte ich, dass wenn die Frist innert 10 Tagen und weniger abläuft ein kleines Icon hinter der Frist auf dem Bericht sichtbar wird. Es muss ja wohl eine Prozedur sein, die das Icon sichtbar macht, wenn die Bedingung zutrifft. Aber eben, wie lautet die Formel für die Bedingung??
Ich danke ganz herzlich für eure Mithilfe

Gruss
nessie

Hideloop
25.09.2003, 10:28
Ich denke das mußt Du in die on Format property des Berichts packen,
code in etwa so :

If dateadd("d",-10,frist) <= date then
me.feldname.visible = true
End if


Vielleicht hilft das,

Loop

stpimi
25.09.2003, 10:29
If dateDiff("d",Tagesdatum;fristendedatum) < 10 then

einblenden


end if

elmar
25.09.2003, 10:57
Detailbereich des Berichtes, Ereignisprozedur Beim Formatieren:

Dim Fristdatum As Date
Dim resttage As Long

Fristdatum = Me.DeinFristdatum
resttage = DateDiff("d", Now, Fristdatum)

Select Case resttage
Case Is < 10
Me.deinIcon.Visible = True
Case Is > 10
Me.deinIcon.Visible = False
End Select

Die etwas ausführliche Version für Anfänger in VBA ;)

Arne Dieckmann
25.09.2003, 11:52
Oder so (ungetestet):

Dim Fristdatum As Date
Dim resttage As Long

Fristdatum = Me![DeinFristdatum]
resttage = Nz(DateDiff("d", Now, [Fristdatum]),0)

Me![DeinIcon].Visible = resttage <= 10

nessie
25.09.2003, 12:42
Jupi es funktioniert!!! Habe den Tipp von elmar ausprobiert. Danke euch allen für die schnelle Hilfe!
Gruss
nessie

nessie
26.09.2003, 14:16
Nun habe ich mich zu früh gefreut. Ich habe eine Parameter-Abfrage hinter dem Bericht angehängt. Wenn ich nun den Namen einer Abteilung eingebe, die keine offenen Geschäfte hat, also keine Daten vorhanden sind, kommt die Meldung "Laufzeitfehler 2427. Sie haben einen Ausdruck eingegeben, der keinen Wert hat". Mich persönlich stört die Meldungn nicht, aber für die Benutzenden möchte ich diese unterdrücken. Wie geht das genau?
Danke nochmals für eure Hilfe.
Gruss
nessie

CptChaos
26.09.2003, 14:28
Hallo Nessie,
wenn Du den Fehler abfangen willst, kannst Du das mit OnError.

BeispielCode:

Private Sub irgendwas_After_Update()
On Error GoTo Err_irgendwas_After_Update

' Deine Anweisungen

Exit_irgendwas_After_Update:
Exit Sub

Err_irgendwas_After_Update:
If Err.Number = 2427 Then
MsgBox "Keine Einträge gefunden!", vbCritical
Else
MsgBox Err.Description
End If
Resume Exit_irgendwas_After_Update

End Sub


Generell solltest Du aber versuchen, solche Fehler auszuschliesen.

nessie
26.09.2003, 16:04
Hallo CptChaos
Wahscheinlich bin ich etwas dumm... Bei einem Bericht gibt das Ereignis After update irgendwie nicht. Wo kommt der code dann hin? Und was genau sollte ich unter "irgendwas" einsetzen?
Danke und Gruss
nessie

Gast
26.09.2003, 16:09
hi,
vielleicht hilft, das ganze case... in eine
if fristtage<>"" then
case ...

end if

"klammer" zu setzen. ich vermute access würde gerne rechnen, kann aber nicht, da es keine frist gibt

grüsse

gernot

CptChaos
29.09.2003, 11:34
Sorry, hab dich falsch verstanden und konnte erst heute antworten.

Dann musst Du die OnError-Schleife bei der Paramterabfrage einbauen.
Wie das geht, kann ich Dir leider nicht beantworten.

Probiers mal in das OPEN-Ereignis von deinem Form/Bericht folgenden Code einzusetzen (ungetestet):


Private Sub DeinBericht_Open(Cancel As Integer)
On Error GoTo Err_DeinBericht_Open

Exit_DeinBericht_Open:
Exit Sub

Err_DeinBericht_Open:
If Err.Number = 2427 Then
MsgBox "Keine Einträge gefunden!", vbCritical
Else
MsgBox Err.Description
End If
Resume Exit_DeinBericht_Open

End Sub

nessie
29.09.2003, 12:39
Das Problem hab ich mit einem Makro gelöst (Abbrechen Ereignis). Ist wahrscheinlich nicht ganz sauber, aber it works!

Danke & Gruss
nessie

Arne Dieckmann
29.09.2003, 12:43
Es gibt auch das Berichts-Ereignis "Bei Ohne Daten". S. dazu FAQ 5.8 und dort die 2. Variante (Link in meiner Signatur).