Neuigkeiten:

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

Mobiles Hauptmenü

VBA felder verketten als string

Begonnen von Bademeister, September 08, 2011, 08:15:24

⏪ vorheriges - nächstes ⏩

Bademeister

Hallo zusammen!

Ich bin Access Neuling und habe folgendes Problem:

Ich habe eine Tabelle mit jeder Menge Datensätzen. In einem Formular habe ich mir diejenigen Datensätze anzeigen lassen, welche für mich relevant sind. Diese Datensätze können natürlich ganz normal gefiltert werden. Das Formular sieht vereinfacht so aus:

Motor Getriebe Fahrzeug
M1     G1         F1
M2     G2         F2
M3     G3         F3

Ich möchte jetzt mit klick auf einen Button, dass alle sichtbaren (gefilterten) Fahrzeuge als String und durch ";" getrennt in den Zwischenspeicher geladen werden.
Das Ergebnis im Zwischenspeicher sollte also so aussehen:
F1;F2;F3
Hab schon sämtliche Foren usw durchgeschaut und komme nicht weiter. Könnt ihr mir bitte helfen?!
Danke!!

database

Hallo,

ich habe mit der Ausdrucksweise 'Filter' und 'gefiltert' immer ein wenig Probleme.

Wie hast du es denn rein technisch gesehen angestellt ....  --->   habe ich mir diejenigen Datensätze anzeigen lassen, welche für mich relevant sind

Wenn es nach meinem Verständnis RICHTIG gemacht wurde, dann hat dein Formular eine Datenherkunft die auf dem Ergebnis einer Abfrage aufsetzt.
Ist dem so?

Bademeister

Hallo,

ich meinte damit, dass ich mir in meinem Formular nicht alle Datensätze anzeigen lasse, welche in der zugehörigen Tabelle verfügbar sind.
Mit filtern meine ich einfach den Standartfilter --> also rechtsklick auf ein feld --> auswahlbasierter filter

Man kann ja einen datensatz kopieren mit:

Me!Fahrzeug.SetFocus

DoCmd.RunCommand acCmdCopy

Kann man das jetzt nicht irgendwie in eine schleife packen, welche das sichtbare formular durchgeht und nach jedem fahrzeug ein ";" einfügt?

DF6GL

#3
Hallo,

wenn angenommen wird, dass der "Zwischenspeicher" ein ungebundenes Textfeld  ("FZListe") im Formular ist, dann könnte das so aussehen:


Sub Form_Current()
Dim rs as Dao.Recordset, strFZ as String
Set rs=Me.RecordsetClone
If rs.Recordcount > 0 then
rs.Movefirst
Do Until rs.EOF
strFZ = strFZ & ";" & rs!Fahrzeug    '<<edit>>
rs.Movenext
Loop

Me!FZListe = Mid(strFZ,2)
End If
End Sub

Bademeister

Hallo DF6GL,

vielen Dank für deine Antwort!
Dein Code funktioniert FAST. Das Ergebnis im Textfeld ist jetzt:
F1;F1;F1

Das heisst es funktioniert nicht, dass er in die nächste Zeile springt.
Das Ergebnis sollte sein:
F1;F2;F3
Hast du hierzu noch eine Lösung?

database

Hallo,

Zitatich meinte damit, dass ich mir in meinem Formular nicht alle Datensätze anzeigen lasse, welche in der zugehörigen Tabelle verfügbar sind
das war mir schon klar - so weit kann ich schon schwimmen...  ;)

Meine Frage war eher danach ob das Formular auf einer Abfrage beruht, welche NUR relevante Daten liefert.

ZitatHast du hierzu noch eine Lösung?
Versuch mal...


Sub Form_Current()
Dim rs as Dao.Recordset, strFZ as String
Set rs=Me.RecordsetClone
If rs.Recordcount > 0 then
rs.Movefirst
Do Until rs.EOF
strFZ = strFZ & ";" & rs!Fahrzeug
rs.Movenext
Loop

Me!FZListe = Mid(strFZ,2)
End If
End Sub


Bademeister

Sorry ich kenne mich wirklich nicht gut aus mit Access :(
Mein Formular beruht aber denke ich nicht auf einer Abfrage. Ich habe mir einfach in der Entwurfsansicht des Formulars die entsprechenden Felder angeordnet.

Wenn ich den Code auf

rs!Fahrzeug

änder dann kommt beim Ausführen die Fehlermeldung:
Element in dieser Auflistung nicht gefunden.


database

....dann ersetze bitte

rs!Fahrzeug   durch rs!NameDeinesTabellenfeldesMitFemFahrzeug

Bademeister

ES GEHT! :)

Vielen dank euch beiden! Ihr habt mir wirklich sehr geholfen!!