Neuigkeiten:

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

Mobiles Hauptmenü

Übernahme mehrerer Werte aus Kombifeld (über Formular)

Begonnen von Ralf_17, Oktober 04, 2010, 13:57:49

⏪ vorheriges - nächstes ⏩

Ralf_17

Hallo.

bin Anfänger und auch keine VBA-Kenntnisse.

Frage:
wie kann ich mehrere Werte/Spalten über Formular (ggf. Ufo) auf einmal übernehmen?

Konkret: Es existiert eine Tabelle mit Liste von den möglichen Adressen (Name, Str, PLz....) und ich möchte dass je einer der Datensätze auswählbar und übernehmbar ist.

Weiter habe ich neben der Liste eine weitere Tabelle mit selber Grundstruktur wie die o.g. Liste, wo die ausgewählten Datensätze dann auch reinsollen.

Ein Wert konnte ich über Kombifeld immer übernehmen.
Er zeigt mir über das Kombifeld zwar die Datensätze an, aber ich kann keinen übernehmen.

Danke für eure Hilfe!

R.

Ralf_17

analog eines ähnlichen Problemes hier, hab ich folgenden Code rauskopiert + abgeändert:

Private Sub Kombinationsfeld12_AfterUpdate()
Dim IngAdressbest_ID as Long,
strKürzel as String,
strName as String,
strZusatz_comment as String,
strStraße as String,
strPLZ as String,
strLänderkennzeichen as String,
strOrt as String,

strKürzel = Me!DeinKombiFeld.Column(2)
strName = Me!DeinKombiFeld.Column(3)
strZusatz_comment = Me!DeinKombiFeld.Column(4)
str_Straße = Me!DeinKombiFeld.Column(5)
strPLZ = Me!DeinKombiFeld.Column(6)
strLänderkennzeichen = Me!DeinKombiFeld.Column(7)
strOrt = Me!DeinKombiFeld.Column(8)
IngAdressbest_ID = Me!DeinKombiFeld

strSQL = "INSERT INTO Tab_Einsender (Adressbest_ID, Kürzel, Name, Zusatz_comment, Straße, PLZ, Länderkennzeichen, Ort) VALUES ('" & strKürzel & "', '" & strName & "', '" & strZusatz_comment & "', '" & strStraße & "', '" & strPLZ & "', '" & strLänderkennzeichen & "', '" & strOrt & "')"
DoCmd.RunSQL strSQL

End Sub

aber Problem wie zuvor..

DF6GL

#2
Hallo,



wenn man von der Frage nach dem Sinn solcher Übernahmen mal absieht (Verletzung der Normalisierungsregeln und des Redundanzgedankens), dann müssen der Code und die Einstellungen des Kombis so aussehen:


Kombi "Kombinationsfeld12"  
.
Spaltenanzahl: 9
.


Private Sub Kombinationsfeld12_AfterUpdate()
Dim lngAdressbest_ID as Long, strKürzel as String, strName as String, strZusatz_comment as String, strStraße as String
Dim strPLZ as String, strLänderkennzeichen as String, strOrt as String

strKürzel = Me!Kombinationsfeld12.Column(2)
strName = Me!Kombinationsfeld12.Column(3)
strZusatz_comment = Me!Kombinationsfeld12.Column(4)
strStraße = Me!Kombinationsfeld12.Column(5)
strPLZ = Me!Kombinationsfeld12.Column(6)
strLänderkennzeichen = Me!Kombinationsfeld12.Column(7)
strOrt = Me!Kombinationsfeld12.Column(
lngAdressbest_ID = Me!Kombinationsfeld12

strSQL = "INSERT INTO Tab_Einsender (Kürzel, [Name], Zusatz_comment, Straße, PLZ, Länderkennzeichen, Ort) VALUES ('" & strKürzel & "', '" & strName & "', '" & strZusatz_comment & "', '" & strStraße & "', '" & strPLZ & "', '" & strLänderkennzeichen & "', '" & strOrt & "')"

DoCmd.RunSQL strSQL

End Sub




Das Ganze ginge auch geschickter (wenn wie jetzt angenommen, die Feldnamen in beiden Tabellen identisch sind):

Kombi "Kombinationsfeld12"  
Datensatzherkunft:  select Adressbest_ID , [Name] from tab_MöglicheAdressen order by [Name]
Spaltenanzahl: 2
Spaltenbreiten: 0 cm; 5 cm


Private Sub Kombinationsfeld12_AfterUpdate()
Dim strSQL as String

strSQL = "INSERT INTO Tab_Einsender  Select * from tab_MöglicheAdressen  where Adressbest_ID = " & Me!Kombinationsfeld12

DoCmd.RunSQL strSQL

End Sub

Auf reservierte Wörter wie "Name" dringend verzichten.

Ralf_17

Hi Franz,
danke!

Beim ersten Teil:
"Laufzeitfehler 94, unzulässige Verwendung von Null. "

inZeile : strOrt = Me!Kombinationsfeld10.Column(8)

Weißt Du?

DF6GL

Hallo,

ja, da steht halt kein Ort drin...

alle Zuweisungen auf NULL prüfen:

strOrt = nz(Me!Kombinationsfeld10.Column(8 ) , "")


lngAdressbest_ID = nz(Me!Kombinationsfeld12,0)     'hier 0 als Ersatzwert, wobei das eigentlich nicht vorkommen kann/sollte, wenn es der Primärschlüssel ist. Den brauchst Du aber auch nicht, wenn in der Zieltabelle dieses Feld als Autowert definiert ist.

Ralf_17

Hi,

jetzt "unterschlägt" er Tab. Kürzel. Nachfolgende Einträge in den Spalten sind analog dann verschoben.
Erste Spalte mit der ID fkt.

DF6GL

Hallo,

der Code hat doch mit der Anzeige in der Kombifeldliste nichts zu tun... ??


Setz halt mal einen Haltepunkt an den Codeanfang und prüfe im Einzelschrittdurchgang den Inhalt der Variablen...

Ralf_17

Hi,

lag dran, dass VBA ab 0 zählt, ich aber ab 1 anfing..   ;)

Danke u. VG an den Bodensee,

R.