Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Daten aus Listenfeld in ein Text feld übernehmen





Frage

Hallo, Ich habe ein Problem und wollte mich damit mal an euch wenden. In der Hoffnung das mir jemand weiterhelfen kann. Ich wollte Personen die in einem Listenfeld aufgelistet sind per Doppelklick in ein Textfeld übernehmen. Diese Personen die ich auswähle und in das Textfeld übernehme, sollen durch ein komma getrennt sein. Die Personen dienen mir als Mitwirkende an verschiedenen Projekten. Weiß jemand einen Rat wie ich dies anstellen kann? --- verwende Access 97 ----- Danke schon mal. Tschüss

Antwort 1 von vbadi

Hallo Bulette,

im Doppelklick Ereignis Deines Listenfeldes kannst Du den selektierten Namen an Dein Textfeld übergeben. Mit einer For-Schleife suchst Du den oder die selektierten Eintraege aus dem Listenfeld und dabei baust Du den gewünschten String mit Namen zusammen.

[CODE]
Private Sub NameDeinListenfeld_DblClick(Cancel As Integer)
Dim varItem As Variant
Dim strName As String

If IsNull(Me.NameDeinTextfeld.Value) Then
strName = ""
Else
strName = Me.NameDeinTextfeld.Value & ", "
End If
For Each varItem In Me.NameDeinListenfeld.ItemsSelected
strName = strName & Me.NameDeinListenfeld.column(1, varItem) & ", "
Next varItem
strName = Left(strName, Len(strName) - 2)
Me.NameDeinTextfeld.Value = strName
End Sub
[/CODE]

In der Access Hilfe gibt es ebenfalls genuegent Infos zum Listenfeld/Listbox.

Gruß vbadi.

Antwort 2 von mouse

Hallo vbadi ,
Superidee!!
Funktioniert sowas auch aus einem "aufgepoppten" Formular mit der Übergabe?
Gruß mouse

Antwort 3 von mouse

hat keiner ne idee?
gruß mouse

Antwort 4 von trekking

funktioniert auch mit einem "Aufgepoppten Formular. Du musst nur die folgende Zeile ändern:

Me.NameDeinTextfeld.Value = strName
und zwar ind Forms!NAme deines Formulars!Name deines Textfeldes=strName

Gruß trekking

Antwort 5 von mouse

Hallo trekking,
erstmal Danke für den Tipp, habe jetzt folgendes:

Private Sub Auftextvor_DblClick(Cancel As Integer)

Dim varItem As Variant
Dim strName As String

If IsNull(Forms!tblAuftragNeuUnterformular!Me.Auftragstext.Value) Then
strName = ""
Else
strName = Forms!tblAuftragNeuUnterformular!Me.Auftragstext.Value & ", "
End If
For Each varItem In Me.Auftextvor.ItemsSelected
strName = strName & Me.Auftextvor.Column(1, varItem) & ", "
Next varItem
strName = Left(strName, Len(strName) - 2)
Forms!tblAuftragNeuUnterformular!Me.Auftragstext.Value = strName
End Sub

Ich bekomme aber den Fehler markiert bei:
.ItemsSelected
Methode oder Datenobjekt nicht gefunden.
Weißt du da was?
Gruß mouse

Antwort 6 von trekking

Denke dass du zuerst noch ein Objekt definieren musst:

dim ctl os object

set ctl=Me!Auftextvor

dann in der Zeile
For Each varItem In Me.Auftextvor.ItemsSelected
Me.Auftextvor. durch ctl ersetzen

Denke dass dann der Fehler weg ist

Gruß trekking

Antwort 7 von mouse

Hallo trekking,
habe den Code geändert, bekomme folgende Fehlermeldung:
Laufzeitfehler 2450, kann tblAuftragNeuUnterformular nicht finden.


Private Sub Auftextvor_DblClick(cancel As Integer)

Dim varItem As Variant
Dim strName As String
Dim ctl As Object

Set ctl = Me!Auftextvor

If IsNull(Forms!tblAuftragNeuUnterformular!Me.Auftragstext.Value) Then
strName = ""
Else
strName = Forms!tblAuftragNeuUnterformular!Me.Auftragstext.Value & ", "
End If
For Each varItem In ctl.ItemsSelected
strName = strName & ctl.Column(1, varItem) & ", "
Next varItem
strName = Left(strName, Len(strName) - 2)
Forms!tblAuftragNeuUnterformular!Me.Auftragstext.Value = strName
End Sub

Hast du noch eine Idee?
Gruß mouse

Antwort 8 von mouse

Hallo trekking,
das Unterformular wird nicht erkannt und die ID des Hauptformulars wird beim Schließen erneut abgefragt. Evtl. nützt dir der Hinweis. Gibt es eigentlich irgendwo eine Demo DB für dein Beispiel? Vielleicht kapiert man das dann besser.
Gruß mouse

Antwort 9 von trekking

Der Begriff
Forms!tblAuftragNeuUnterformular! _Me.Auftragstext.Value = strName
Ist in der Schreibweise nicht richtig. Denke, dass das eher
forms!ME!AuftragNeuUnterformular!Auftragstext=strName
heißen muss.

Wenn die ID nochmal abgefragt wird, dann fehlt immer irgendwo ein WErt. Wo genau ist ohne alles zu kennen nicht nachzuvollziehen.

Es gibt ein super gutes Buch für VBA. Das heißt Access in 21 Tagen. Im Markt und Technik Verlag. Nach dem Buch weißt du schon ziemlich viel. (Hat mir auch gehilft)

Gruß trekking

Antwort 10 von mouse

Hallo trekking,
wo ist denn eigentlich der Unterschied zwischen
Me. xxxx und
Me! xxx ?
Ich habe ja die Hinweise von vbadi übernommen und versucht, deine Hinweise zu berücksichtigen.
Das mit der Lektüre ist ja man gut, ich habe aber gedacht, daß für solche Fragen dieses Forum gut sein soll, oder liege ich da komplett falsch?

Gruß
mouse

Antwort 11 von trekking

Den Punkt benutzt du normalerweise nur um feste Access funktionen einzubinden.

z.B. forms!Dein Formular.refresh
(Funktion zur Bildschirmaktualisierung deines Formulars)
Wenn du dein Formular aus deinem Formular ansprichst, dann kannst du natürlich
Me.refresh schreiben.
Wenn du ein Steuerelement ansprichst, benutzt ich immer das ! z.B
Me!Feld1= "schön"
Du kannst hier auch den Punkt nutzten und Acces wird es genauso durchführen. Sobald du aber mit Objekten zu tun hast verlierst du die übersicht.

Ups, habe einen Fehler bei meinem vorhergehenden Komentar entdeckt. Muß natürlich heißen:
forms!DeinHauptformular!AuftragNeuUnterformular!Auftragstext=strName

Das mit dem Buch ist folgendermaßen gemeint:
Das Forum ist sehr gut für sehr spezielle Fragen. Habe hier selbst schon viel Hilfe erfahren. Das beste war aber, dass ich dieses Buch gelesen habe und seitdem sehr viel Zeit gespart habe. Da es leicht verständlich ist.
Gruß Trekking

Antwort 12 von mouse

Hallo trekking,
irgendwie geht das alles nicht.Bevor ich verzweifel,
kann man das evtl. so machen?:

### Kopie des gewählten Datensatzes ( funktioniert und ist in der Zwischenablage):

Private Sub Befehl4_Click()
On Error GoTo Err_Befehl4_Click
Me!Auftextvor.SetFocus
DoCmd.RunCommand acCmdCopy
Exit_Befehl4_Click:
Exit Sub
Err_Befehl4_Click:
MsgBox Err.Description
Resume Exit_Befehl4_Click
End Sub


Welchen Code muß ich in einem anderen Formular einsetzen, um mit einem Button den Text aus der Zwischenablage einzufügen?
Mit STRG+V funktioniert es.
Gruß mouse

Antwort 13 von trekking

Hallo mouse,

so mach ich das nie. Habe deinen Beoitrag 7 nochmal gelesen. Hast du meinen Vorschlag 11 da noch ausprobiert?! (Ja da wo ups steht)
Denke, dass dann das ganze läuft.

Gruß trekking

PS: In der OnlineHilfe findest du auch Beispiele dafür. Oder schau mal unter www.donkarl.com nach. Die Seite hilft dir auch oft weiter.

Antwort 14 von mouse

Hallo trekking, habe alles probiert und es klappt alles nicht. Weiß der Geier was ich da gebastelt habe.
Ne Beispiel MDB habe ich auch nirgends gefunden.
Wie schon beschrieben hilft mir folgendes aber auch weiter:

### Kopie des gewählten Feldes ( funktioniert und ist in der Zwischenablage):

Private Sub Befehl4_Click()
Me!Auftextvor.SetFocus
DoCmd.RunCommand acCmdCopy
End Sub

### Kopie aus Zwischenablage in ein anderes Formular einfügen klappt auch.

Private Sub rein_Click()
Me!Auftragstext.SetFocus
DoCmd.RunCommand acCmdPaste
End Sub

Wie hänge ich evtl. die Daten aus der Zwischenablage an einen vorhandenen Text im Feld an?
gruß mouse

Antwort 15 von mouse

Hallo trekking,
bin immer noch nicht weiter.
Hatte vergessen zu schreiben, daß das

AuftragNeuUnterformular!Auftragstext in einem Registersteuerelement drin ist. Kann es sein, daß ich deshalb nicht weiterkomme?
Gruß mouse