Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Dorian am Mai 28, 2010, 16:27:05

Titel: Unterformular anzeigen/nicht anzeigen
Beitrag von: Dorian am Mai 28, 2010, 16:27:05
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
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: MzKlMu am Mai 28, 2010, 17:15:21
Hallo,
der volle Bezug sollte hier verzichtbar sein.
Versuche es also mal so:

If Nz(Me!Rechnungsdatum,0) = 0 Then
.
.
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: Dorian am Mai 28, 2010, 17:23:43
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
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: MzKlMu am Mai 28, 2010, 17:31:47
Hallo,
aber nicht vorhanden kann doch gar nicht sein. Wie kommt es, dass das Feld nicht vohanden ist?
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: bahasu am Mai 28, 2010, 18:43:49
N'abend Dorian,

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

Harald
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: MzKlMu am Mai 28, 2010, 18:54:04
@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.
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: Dorian am Mai 28, 2010, 18:59:41
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...
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: MzKlMu am Mai 28, 2010, 19:10:40
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.
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: Dorian am Mai 28, 2010, 19:27:11
Hallo MzKlMu !

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

Dorian
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: MzKlMu am Mai 28, 2010, 19:37:32
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.
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: Dorian am Mai 28, 2010, 19:48:24
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
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: DF6GL am Mai 28, 2010, 19:51:51
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.
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: Dorian am Mai 28, 2010, 20:00:21
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
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: MzKlMu am Mai 28, 2010, 20:03:10
Hallo,
und wie lautet die Fehlermeldung ?
Die solltest Du wenn vorhanden immer zitieren.
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: Dorian am Mai 28, 2010, 20:06:14
Fehler beim kompilieren:

Syntaxfehler


Sorry hatte ich vergessen...

Dorian
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: MzKlMu am Mai 28, 2010, 20:23:00
Hallo,
huch, da hatte ich doch das Then vergessen.

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

Sorry
Titel: Re: Unterformular anzeigen/nicht anzeigen
Beitrag von: Dorian am Mai 28, 2010, 20:31:48
Hallo MzKlMu!

Jetzt zeigt er keinen Fehler mehr ... aber jetzt ist das Rechnungsformular und das UF Rechnungsdetails ausgeblendet???

halt!!!!

Ich habe wohl aus Versehen das ganze Formular gelöscht.... ;D

Habe es nochmal eingefügt und jetzt .... klappt es  :D


Vielen Dank für Deine Mühe!!!

Dorian