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.
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..
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.
Hi Franz,
danke!
Beim ersten Teil:
"Laufzeitfehler 94, unzulässige Verwendung von Null. "
inZeile : strOrt = Me!Kombinationsfeld10.Column(8)
Weißt Du?
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.
Hi,
jetzt "unterschlägt" er Tab. Kürzel. Nachfolgende Einträge in den Spalten sind analog dann verschoben.
Erste Spalte mit der ID fkt.
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...
Hi,
lag dran, dass VBA ab 0 zählt, ich aber ab 1 anfing.. ;)
Danke u. VG an den Bodensee,
R.