Problem bei ID übergeben

09/01/2008 - 10:21 von paul.aeschlimann | Report spam
Hallo zusammen

Ich habe ein Problem, das mich ein wenig zur Verzweiflung bringt.
Folgendes:

Ich habe in einem Formular ein Unterformular in der Listendarstellung.
Nichts besonderes, in Ordnung. Jeder Spalte in dieser Liste habe ich
ein Event zum Doppelklicken hinzugefügt. Mit DoCmd.OpenForm
"fObjekte", acNormal, , "od_ID=" & [od_ID], , acWindowNormal öffne ich
dann das Formular fObjekte und möchte darin den Datensatz mit der ID
anzeigen, auf den ich in der Liste im Unterformular doppelgeklickt
habe. Nun zeigt es mir aber nicht den angeklickten Datensatz an,
sondern immer den ersten. Beim Debuggen habe ich die OpenForm-
Anweisung überprüft, er übergibt die richtige ID. Ich poste einfach
direkt mal meinen Code der beim Laden ausgeführt wird.

Im Load-Ereignis des Formulars fObjekte, habe ich unter anderem
folgenden Code:

Set db = CurrentDb
Set rs = db.OpenRecordset("tObjektdaten", DB_OPEN_TABLE)

For i = 0 To Me.Controls.Count - 1
Set ctl = Me.Controls(i)
If (TypeOf ctl Is TextBox) Then
ctl.Locked = True ' schreibgeschützt
End If
Next

anzeigen

In der Prozedur anzeigen folgender Code:

txtObjektnummer.Value = auslesen("od_Objektnummer")
cmbSparte.Value = auslesen("od_Sparte")
cmbObjektart.Value = auslesen("od_Objektart")
txtParzellennummer.Value = auslesen("od_Parzellennummer")
txtObjektdaten_Strasse.Value = auslesen("od_Strasse")
txtObjektdaten_Hausnummer.Value = auslesen("od_Hausnummer")
txtObjektdaten_PLZ.Value = auslesen("od_PLZ")
txtObjektdaten_Ort.Value = auslesen("od_Ort")
cmbObjektdaten_Kanton.Value = auslesen("od_Kanton")
cmbObjektdaten_Land.Value = auslesen("od_Land")
txtBemerkungen.Value = auslesen("od_Bemerkungen")

In der Prozedur auslesen folgender Code:

Function auslesen(feldname As String) As Variant

Dim v As Variant

MsgBox txtObjektdaten_Strasse

v = rs.Fields("[" & feldname & "]")
If (VarType(v) = vbNull) Or (VarType(v) = vbEmpty) Then auslesen "": Exit Function
If (VarType(v) = vbCurrency) Then auslesen = Format$(v, "#0.00"):
Exit Function
If (VarType(v) = vbBoolean) Then
If v Then auslesen = 1 Else auslesen = 0
Exit Function
End If
auslesen = CStr(v)
Exit Function

Das Problem ist jetzt sogar, dass wenn ich auf dem Unterformular auf
eine Zeile doppelklicke und das Formular fObjekte geöffnet wird, wird
der erste Datensatz angezeigt und zudem noch der angeklickte Datensatz
umgeàndert, so dass er gleich ist wie der erste. Jetzt sind alle meine
Datensàtze in der Tabelle gleich, alle gleich wie der Erste.

Ich hoffe ich konnte mein Problem ausführlich genung schildern und
hoffe auf eure Hilfe.

Gruss Paul
 

Lesen sie die antworten

#1 Stefan Hoffmann
09/01/2008 - 10:43 | Warnen spam
hallo Paul,

schrieb:
Mit DoCmd.OpenForm
"fObjekte", acNormal, , "od_ID=" & [od_ID], , acWindowNormal öffne ich
dann das Formular fObjekte [..]


Du mußt die ID im OpenArgs Paramter übergeben.

Im Load-Ereignis des Formulars fObjekte, habe ich unter anderem
folgenden Code:

Set db = CurrentDb
Set rs = db.OpenRecordset("tObjektdaten", DB_OPEN_TABLE)


Du mußt hier natürlich deiner ID filtern:

Set rs = db.OpenRecordset("SELECT * FROM tObjektdaten " & _
"WHERE " & OpenArgs)

In der Prozedur auslesen folgender Code:
Function auslesen(feldname As String) As Variant

Dim v As Variant

MsgBox txtObjektdaten_Strasse

v = rs.Fields("[" & feldname & "]")
If (VarType(v) = vbNull) Or (VarType(v) = vbEmpty) Then auslesen > "": Exit Function
If (VarType(v) = vbCurrency) Then auslesen = Format$(v, "#0.00"):
Exit Function
If (VarType(v) = vbBoolean) Then
If v Then auslesen = 1 Else auslesen = 0
Exit Function
End If
auslesen = CStr(v)
Exit Function


Nimm hier ein

Dim Result As Variant
Dim Value As Variant

Value = rs.Fields("[" & feldname & "]")
Select Case VarType(Value)
Case Is vbNull, vbEmpty
Result = ""
Case Is vbCurrency
Result = Format(Value)
Case Else
Result = CStr(Value)
End Select

Auslesen = Result


btw, warum nimmst du kein gebundenes Formular?

mfG

Access-FAQ http://www.donkarl.com/
KnowHow.mdb http://www.freeaccess.de
Newbie-Info http://www.doerbandt.de/Access/Newbie.htm

Ähnliche fragen