Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Ralf_17 am Oktober 04, 2010, 13:57:49

Titel: Übernahme mehrerer Werte aus Kombifeld (über Formular)
Beitrag von: Ralf_17 am Oktober 04, 2010, 13:57:49
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.
Titel: Re: Übernahme mehrerer Werte aus Kombifeld (über Formular)
Beitrag von: Ralf_17 am Oktober 04, 2010, 15:02: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..
Titel: Re: Übernahme mehrerer Werte aus Kombifeld (über Formular)
Beitrag von: DF6GL am Oktober 04, 2010, 16:48:17
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.
Titel: Re: Übernahme mehrerer Werte aus Kombifeld (über Formular)
Beitrag von: Ralf_17 am Oktober 04, 2010, 17:37:34
Hi Franz,
danke!

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

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

Weißt Du?
Titel: Re: Übernahme mehrerer Werte aus Kombifeld (über Formular)
Beitrag von: DF6GL am Oktober 04, 2010, 17:41:51
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.
Titel: Re: Übernahme mehrerer Werte aus Kombifeld (über Formular)
Beitrag von: Ralf_17 am Oktober 04, 2010, 17:55:50
Hi,

jetzt "unterschlägt" er Tab. Kürzel. Nachfolgende Einträge in den Spalten sind analog dann verschoben.
Erste Spalte mit der ID fkt.
Titel: Re: Übernahme mehrerer Werte aus Kombifeld (über Formular)
Beitrag von: DF6GL am Oktober 04, 2010, 20:47:10
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...
Titel: Re: Übernahme mehrerer Werte aus Kombifeld (über Formular)
Beitrag von: Ralf_17 am Oktober 05, 2010, 13:42:31
Hi,

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

Danke u. VG an den Bodensee,

R.