PDA

Vollständige Version anzeigen : Abfrage des Formularnamens (Code läuft nicht)


mazda
27.09.2005, 08:27
Guten Morgen!

Situation: ich rufe von einer von 3 Übersichten aus ein Formular auf, das einen ausgewählten Datensatz aus einer der 3 Übersichten bearbeitet.
Problem: beim Aufruf des Bearbeitungsformulares wird kein Datensatz aufgerufen. Ich gehe davon aus, dass es da ein Problem mit der Abfrage des Übersichtnamens (es gibt ja 3 Übersichten). Hier der Code, wo ich den Fehler vermute:


Function HoleÜbersichtName() As String

On Local Error Resume Next

Dim i As Integer
Dim formname As String

formname = "*"

'----------------------------------------------------------------------
' Ermitteln welche Übersichtsseite gerade aktiv ist
'----------------------------------------------------------------------

For i = 0 To Forms.Count - 1
formname = Forms(i).Name
If Left$(formname, 12) = "uebersicht1" Then
HoleÜbersichtName = formname
Exit For
End If

If Left$(formname, 12) = "uebersicht2" Then
HoleÜbersichtName = formname
Exit For
End If

If Left$(formname, 12) = "uebersicht3" Then
HoleÜbersichtName = formname
Exit For
End If

Next i


End Function


Hier wird die Funktion aufgerufen

Function SNÜbersichtBearbeiten()

'----------------------------------------------------------------------
' Aufruf des Formulares für die Detailansicht
'----------------------------------------------------------------------
On Local Error Resume Next


Dim formularname As String
Dim rc As Integer

formularname = HoleÜbersichtName() 'HIER DER AUFRUF
If formularname = "*" Then
rc = MsgBox("Formularname der aktuellen Übersicht kann nicht gelesen werden!")
Else
DoCmd.OpenForm "Formular1", , , "[Eintrag_Nr] = forms![" & formularname & "]![Feld36]"
End If

KHS
27.09.2005, 08:54
Lass' doch mal die "On Local Error Resume Next" weg.
Dann mußt du den Fehler wahrscheinlich nicht mehr 'vermuten'.

mazda
27.09.2005, 09:04
Das habe ich schon ausprobiert, aber es half nix. Kein Unterschied.

Morli
27.09.2005, 09:10
Der Fehler liegt IMHO in der DoCmd.Openform, ändere die mal wie folgt ab!

DoCmd.OpenForm "Formular1", , , "[Eintrag_Nr] = " & forms(formularname)![Feld36]

Außerdem frage ich mich was Du mit dem hier bezwecken willst:

If Left$(formname, 12) = "uebersicht1" Then
HoleÜbersichtName = formname
Exit For
End If

Du hast doch schließlich vorher schon die Variable formname fix belegt:


formname = Forms(i).Name

Da brauchst Du doch den ganzen Rest gar nicht!

Morli

mazda
27.09.2005, 09:28
sauber, danke. es war der funktionsaufruf.
wenn ich den restlichen code entferne bei der funktion holeübersichtname, dann klappt es allerding nicht mehr. kann es sein, dass es daran liegt, dass mehrere übersicht-formulare gleichzeitig auf sind? er sagt, dass das formular fehlt, auf das verwiesen wird.

Morli
27.09.2005, 09:38
Kommt darauf an, von wo Du die Funktion aufrufst. Wenn Du doch jeweils aus einem der Übersichtsformulare aufrufst, dann kannst Du doch mit Me.Name arbeiten.

Morli

mazda
27.09.2005, 10:08
kannst Du doch mit Me.Name arbeiten.
könntest du es anhand von DoCmd.OpenForm "Formular1", , , "[Eintrag_Nr] = " & forms(formularname)![Feld36]
anwenden?

p.s.: nochmals vielen dank!

Morli
27.09.2005, 10:13
Ist das jetzt eine Frage?

Wenn ja, dann

DoCmd.OpenForm "Formular1", , , "[Eintrag_Nr] = " & forms(Me.Name)![Feld36]

Morli