Thomas Darimont
Erfahrenes Mitglied
Hi Leute,
ich hab da ein kleines Problem und ich hoffe ihr könnt mir da weiterhelfen.
Habe in Access ein Formular auf dem ein weiteres "Dummy"_Formular (Unterformular)[ufrm_Dummy] aufgebracht ist. Dieses Dummy Formular ändert je nachdem was der Benutzer aus einem Kombinationsfeld ausgewählt hat seinen "SourceObject"-Zeiger auf ein konkretes Unterformular mit mehreren Textfeldern. Jetzt hab ich auf dem Hauptformular eine Schaltfläche "Übernehmen", der auf klick eine Prozedur hinterlegt ist,die die datenbank abhänig von den jeweils auf den einzelnen
Unterformularen vorkommenden TextFeldern die Daten Bank in den Entsprechenden Feldern Updated...
meine das so...
in der Datenbanktabelle KFZ gibt es die Spalten
KFZID
KFZHERSTELLER
KFZNETTO_PREIS
.
.
.
die Unterformulare haben dann die Textfelder
cng_KFZID
cng_KFZHERSTELLER
.
.
.
----
Wenn ich jetzt in der KomboBox einen Link angeklickt habe und ein konkretes Unterformular erscheint würde ich gerne haben, das durch
klick des Übernehmen-Buttons eine Prozedur gestartet wird, welche automatisch ermittelt, welche Textfelder auf den einzelnen U-Forms zu sehen sind, die Spalten in der Datenbanktabelle entsprechen also
cng_KFZID --> KFZID
usw... (Alle Textfelder mit cng_vorne dran entsprechen einer DB-Tabspalte)
und diese dann Updated mit dem Wert der Jeweiligen Textfelder...
Code:
'strKfzID enthält die auswahl der KOmboBox...
dim rs as adodb.recordset
set rs = new adodb.recordset
With rs
.ActiveConnection = CurrentProject.Connection
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open "SELECT * FROM tblKfz WHERE KfzID=" & strKFZID
End With
'alle Textfelder bekomme ich ja mit
dim ctl as control
for ctl in me.ufrm_Dummy.controls
'hier kann ich alle Controls durchlaufen und mit
if InStr(1,ctl.name,"cng_") then
'kann ich testen, ob das textfeld einer Tab-Spalte entspricht
'ETN = Entsprechender Tabellen Name ist Textfeldname ohne "cng_"!
'wie mach´ich das???
'ctl.name => String "cng_textfeldname"
rs.Update !ETN = ctl.value
end if
next
rs.close
set rs = nothing
mein Problem ist jetzt konkret, das ETN ein Literal ist und nicht mit !ETN als Bezeichner verwendet werden kann... hat jemand ne Idee wie ich das lösen könnte???
gibt es auch eine andere Möglichkeit ausser bei allen Textfeldern cng_vorne dran wegzulassen?(Ist Kriterium bei der Überprüfung, ob Textfeld mit DatenbankSpalte korespondiert..) naja ...a
mal sehen
Thx im vorraus Gruss Tom
ich hab da ein kleines Problem und ich hoffe ihr könnt mir da weiterhelfen.
Habe in Access ein Formular auf dem ein weiteres "Dummy"_Formular (Unterformular)[ufrm_Dummy] aufgebracht ist. Dieses Dummy Formular ändert je nachdem was der Benutzer aus einem Kombinationsfeld ausgewählt hat seinen "SourceObject"-Zeiger auf ein konkretes Unterformular mit mehreren Textfeldern. Jetzt hab ich auf dem Hauptformular eine Schaltfläche "Übernehmen", der auf klick eine Prozedur hinterlegt ist,die die datenbank abhänig von den jeweils auf den einzelnen
Unterformularen vorkommenden TextFeldern die Daten Bank in den Entsprechenden Feldern Updated...
meine das so...
in der Datenbanktabelle KFZ gibt es die Spalten
KFZID
KFZHERSTELLER
KFZNETTO_PREIS
.
.
.
die Unterformulare haben dann die Textfelder
cng_KFZID
cng_KFZHERSTELLER
.
.
.
----
Wenn ich jetzt in der KomboBox einen Link angeklickt habe und ein konkretes Unterformular erscheint würde ich gerne haben, das durch
klick des Übernehmen-Buttons eine Prozedur gestartet wird, welche automatisch ermittelt, welche Textfelder auf den einzelnen U-Forms zu sehen sind, die Spalten in der Datenbanktabelle entsprechen also
cng_KFZID --> KFZID
usw... (Alle Textfelder mit cng_vorne dran entsprechen einer DB-Tabspalte)
und diese dann Updated mit dem Wert der Jeweiligen Textfelder...
Code:
'strKfzID enthält die auswahl der KOmboBox...
dim rs as adodb.recordset
set rs = new adodb.recordset
With rs
.ActiveConnection = CurrentProject.Connection
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open "SELECT * FROM tblKfz WHERE KfzID=" & strKFZID
End With
'alle Textfelder bekomme ich ja mit
dim ctl as control
for ctl in me.ufrm_Dummy.controls
'hier kann ich alle Controls durchlaufen und mit
if InStr(1,ctl.name,"cng_") then
'kann ich testen, ob das textfeld einer Tab-Spalte entspricht
'ETN = Entsprechender Tabellen Name ist Textfeldname ohne "cng_"!
'wie mach´ich das???
'ctl.name => String "cng_textfeldname"
rs.Update !ETN = ctl.value
end if
next
rs.close
set rs = nothing
mein Problem ist jetzt konkret, das ETN ein Literal ist und nicht mit !ETN als Bezeichner verwendet werden kann... hat jemand ne Idee wie ich das lösen könnte???
gibt es auch eine andere Möglichkeit ausser bei allen Textfeldern cng_vorne dran wegzulassen?(Ist Kriterium bei der Überprüfung, ob Textfeld mit DatenbankSpalte korespondiert..) naja ...a
mal sehen
Thx im vorraus Gruss Tom