Neuigkeiten:

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

Mobiles Hauptmenü

Auswertung eines UF ohne DS

Begonnen von Domm, Dezember 13, 2017, 08:32:48

⏪ vorheriges - nächstes ⏩

Domm

Hallo alle miteinander!
Ich benötige Eure Hilfe um eine scheinbar leicht zu lösende Aufgabe:
In einem HF werden Daten verarbeitet, welche nach Aktualisierung als Übersicht in einem UF angezeigt werden. Die Auswertung von Fehleingaben durch Benutzer hat gezeigt, dass es wichtig ist, vor der Eingabe eine Meldung auszugeben, wenn sich Daten im UF befinden.
Am Einfachsten schien mir:
If Not me.UF!Textfeld IsNull Then
MsgBox
End If

Allerdings wurde grundsätzlich diese Meldung ausgelöst, auch wenn im UF kein DS vorhanden war.
Alle Versuche mit Nz, Count, Dcount haben zu Fehlermeldungen geführt.
Versuche, über ein Textfeld im HF das UF anzusprechen(=Wenn([UF]![Textfeld]Ist Null;0;1), ebenfalls.
Die Vorschläge in den Foren und Access-Tutorials haben entweder nicht genau das Thema getroffen oder waren für mich zu unverständlich und damit nicht übertragbar.
Hat einer der Götter die Zeit, sich des Themas zu widmen und mir verständlich zu machen, woran ich scheitere?
Ich möchte nochmal erinnern, dass es mit meinen VBA- Kenntnissen nicht zu Besten steht...
Liebe Grüße!
Gruß Domm

Lachtaube

#1
So ein Formular in einem Unterformularsteuerelement kann ja keinen, einen oder viele Datensätze enthalten. Die Position des Datensatzzeigers könnte nun auf einem dieser Datensätze oder auch auf einem neuen Datensatz, wenn das Hinzufügen von Daten erlaubt ist, stehen. Vielleicht solltest Du zunächst einmal die Zusammenhänge der Daten zwischen Haupt- und Unterformular und ggf. deren Verknüpfung klären und den kompletten Codeabschnitt im Kontext zeigen, denn wir kennen Deine Datenbank nicht.

Ganz allgemein:   If Me.UF.Form.Recordset.RecordCount > 0 Then
      'gibt es mindestens einen Datensatz im Unterformular
   End If

   If Me.UF.Form.NewRecord Then
      'steht der Datensatzzeiger auf 'dem neuen Datensatz'
   End If
Grüße von der (⌒▽⌒)

MzKlMu

Hallo,
"Is Null" ist SQL und nicht VBA. In VBA erfolgt die Prüfung auf Null über eine Funktion.
If Not IsNull(Me.UF!Textfeld) Then 

Aber vermutlich wäre es besser die Datensätze zu zählen.

Nachtrag:
Lauchtaube zählt ja schon.  ;D
Gruß Klaus

Lachtaube

@Klaus,

den syntaktischen Fehler hatte ich gar nicht bemerkt. ;)
Grüße von der (⌒▽⌒)

Domm

Hallo @Lachtaube, hallo @Klaus!
Danke für Euren Beitrag zum Problem. Ich bin jetzt dem Vorschlag von Klaus gefolgt und habe bei Auswahl einer Tabellenspalte folgende Prozedur hinterlegt:
Private Sub listePosition_Click()
    If Not IsNull(Me.UF2!AnzKandidat) And Me.listePosition = 1 Then
            If MsgBox("Die Spalte ist schon belegt. Weitere Eingabe?", vbOKCancel, "Achtung!") = vbOK Then  'wird abgefragt, ob trotzdem Eingabe
                    Me.bezListeKursUnion.Visible = True 'zeigt nachfolgende Auswahlliste und Bezeichner an
                    Me.listeKursUnion.Visible = True
                    Me.HinweisTabellen.Visible = True
                    Me.listeKursUnion.Enabled = True 'Schaltet die Liste Kurse frei, um DS wechseln zu können
            End If
    Else
        Me.bezListeKursUnion.Visible = True ' wenn die gewählte Spalte nicht belegt ist, fahre mit der Prozedur fort
        Me.listeKursUnion.Visible = True
        Me.HinweisTabellen.Visible = True
        Me.listeKursUnion.Enabled = True
    End If
End Sub

Das Ergebnis bleibt allerdings das Gleiche: Die Meldung wird grundsätzlich angezeigt (siehe Anhang).
Der erste Copde von Lachtaube hat dann sofort zum Erfolg geführt.
Damit wäre für mich die Untersuchung beendet.
Gibt es denn noch Diskussionsbedarf von Eurer Seite aus?
Wenn nicht- vielen Dank für Eure schnelle Hilfe!
Mir ist wie Weihnachten... ;D
Gruß Domm