Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Unterformular anzeigen/nicht anzeigen

Begonnen von Dorian, Mai 28, 2010, 16:27:05

⏪ vorheriges - nächstes ⏩

Dorian

Hallo Ihr lieben Helfer!

Ich habe ein Formular Rechnungen und ein Unterformular Rechnungsdetails.
Mit einem Code beim öffnen möchte ich festlegen ob das UF angezeigt wird oder nicht:

Private Sub Form_Open(Cancel As Integer)
If Forms!Auftraege!Rechnung1!Rechnungsdatum = 0 Then
        Forms!Auftraege!Rechnung1!Rechnungsdetails.Visible = False
    Else
        Forms!Auftraege!Rechnung1!Rechnungsdetails.Visible = True
    End If
End Sub


Das klappt aber nicht, weil das FormFeld Rechnungsdatum entweder ein Datum enthält oder - wenn das Feld noch kein Datum bekommen hat, keinen Inhalt hat.
Wir muss ich den Code ändern? "O" oder > < O habe ich vergeblich versucht.

Dorian

MzKlMu

Hallo,
der volle Bezug sollte hier verzichtbar sein.
Versuche es also mal so:

If Nz(Me!Rechnungsdatum,0) = 0 Then
.
.
Gruß Klaus

Dorian

Hallo MzKlMu !

Das gleiche Ergebnis wie bei mir.

Das Feld "Rechnungsdatum" ist nicht vorhanden oder es steht ein Datum drin.

Das UF ist bei meinem und deinem Code immer sichtbar.
Das Problem ist die "0" Prüfung.
Wie prüfe ich ob ein Feld 1. einen Wert hat oder 2.nicht vorhanden ist?

Dorian

MzKlMu

Hallo,
aber nicht vorhanden kann doch gar nicht sein. Wie kommt es, dass das Feld nicht vohanden ist?
Gruß Klaus

bahasu

N'abend Dorian,

was passiert, wenn Du if isnull(DeinFeld) then ...
verwendest?

Harald
Servus

MzKlMu

@Harald
IsNull wird mit Nz() auch abgefangen.
Mit meinem obigen Beispiel wird Null zu 0 auf das man dann prüft.
Aber das funktioniert ja nicht.
Gruß Klaus

Dorian

Hallo Zusammen!

Ich habe das Formular "Rechnungen" in einem Register.
Wenn ich die Rechnung noch nicht angefangen habe zu schreiben, also kein Datum und keine Rechnungsnummer vorhanden ist, dann ist zu dem passendem Datensatz ( Hauptformular ist "Auftraege" ) zwar ein DS für Auftraege aber nicht für Rechnungen vorhanden. Wenn ich dann das UF Rechnungsdetails einblende und anfange Daten einzugeben, können die später nicht wiedergefunden werden, weil die Zuordnung (Verknüpfung) zum Rechungsformular fehlt. Erst wenn ein passender Datensatz zu Rechnungen angelegt ist, werden die im UF "Rechnungsdetails" eingegebenen Daten richtig zugeordnet.
Darum möchte ich das UF "Rechnungsdetails" ausblenden wenn das Formular Rechnungen noch keine Daten hat.
Nur ich weiß keine Lösung für die Prüfung:
Rechnungsdatum vorhanden oder kein Datensatz vorhanden...

Dorian

@ bahasu:

Auch Dein Code bringt nicht das gewünschte Ergebnis. Das UF wird jetzt immer angezeigt bei einer "0" Prüfung...

MzKlMu

Hallo,
Zitatoder kein Datensatz vorhanden...
Das ist der entscheidende Hinweis.
Zähle mit DCount() die Datensätze. Etwa so:
If DCount("*","Rechnungstablle","AuftragID = " & Me!FeldMitAuftragID) = 0
.
.

Wobei ich jetzt annehme, dass die Rechnung ein Fremdschlüsselfeld (AuftragID) zum Auftrag enthält.
Dieses Feld muss auch im Ufo für die Rechnung enthalten sein.
Gruß Klaus

Dorian

Hallo MzKlMu !

Also:
Auftraege:              PK_AuftragsID
Rechnungen:          FK_AuftragsID
                               PK_RechnungsID
Rechnungsdetails:  FK_RechnungsID

Dorian

MzKlMu

Hallo,
und hast Du die DCount() Funktion mal benutzt?
If DCount("*","Rechnungstablle","FK_AuftragsID = " & Me!FeldMitFK_AuftragsID) = 0
Auf dem Rechnungsufo muss das Feld mit FK_AuftragsID vorhanden sein (unsichtbar). Dieses Feld ist auch gefüllt (über die Ufo Verknüpfung) wenn noch kein Rechnungsdatensatz angelegt ist.
Gebundene Formulare vorrausgesetzt.
Gruß Klaus

Dorian

Habe diesen Code versucht:

Private Sub Form_Open(Cancel As Integer)
If DCount("*","Rechnungen","FK_AuftragsID = " & Me!FK_AuftragsID) = 0
        Forms!Auftraege!Rechnung1!Rechnungsdetails.Visible = False
    Else
        Forms!Auftraege!Rechnung1!Rechnungsdetails.Visible = True
    End If
End Sub


Jetzt ist das UF immer ausgeblendet?

Was habe ich falsch gemacht?

Dorian

DF6GL

Hallo,


1) im Form_Open-Ereignis kann Me!FK_AuftragsID evtl. noch gar keinen Wert enthalten, wenn doch, welchen dann?

2) Benutz das Form_Current-Ereignis, um je nach akt. Wert von Me!FK_AuftragsID das UFO ein-/aus zu blenden.

Dorian

Hallo!

Private Sub Form_Current()
If DCount("*","Rechnungen","FK_AuftragsID = " & Me!FK_AuftragsID) = 0
       Forms!Auftraege!Rechnung1!Rechnungsdetails.Visible = False
   Else
       Forms!Auftraege!Rechnung1!Rechnungsdetails.Visible = True
   End If
End Sub


Jetzt bekomme ich eine Fehlermeldung:

Diese Zeile ist markiert.

If DCount("*","Rechnungen","FK_AuftragsID = " & Me!FK_AuftragsID) = 0

Es gibt in der Tabelle "Rechnungen" das Feld "FK_AuftragsID" und im Formular das Feld ""FK_AuftragsID"

Dorian

MzKlMu

Hallo,
und wie lautet die Fehlermeldung ?
Die solltest Du wenn vorhanden immer zitieren.
Gruß Klaus

Dorian

Fehler beim kompilieren:

Syntaxfehler


Sorry hatte ich vergessen...

Dorian