Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Mehrere Felder in einem Memofeld konkatinieren

Begonnen von AccessMakesMeInsane, Juli 11, 2012, 21:52:55

⏪ vorheriges - nächstes ⏩

AccessMakesMeInsane

Hallo zusammen,
ich habe bisher nix dazu gefunden, deswegen meine Frage hier:
Ist es möglich den Inhalt mehrer Felder aus einer Tabelle zusammen in einem Formular (Memofeld) auszugeben?
Das Ganze wäre bei Adressen äußerst schick.

Ich nutze zur Zeit Access 2003.

Ich freue mich auf eure Ideen.

DF6GL

Hallo,

"Das Ganze wäre bei Adressen äußerst schick."


Für wen? Für die DB bestimmt nicht....Eine "schicke" (normgerechte)  Adresse brauchst Du nur z. B. in einem Adressfeld in einem Brief. Für diesen Fall kannst Du die Adresse entspr. den Anfordernissen einfach als String zusammenbauen.


Das kann auch in einem Formular gemacht werden, indem im Steuerelementinhalt eines Textfeldes etwa dieses zu stehen kommt:

= [Anrede] & " " & [Vorname] & " " & [Nachname] & chr(13) & chr(10)  & [Strasse] & chr(13) & chr(10)  & [Landkz] & " " & [PLZ] & " " & [Ort]


oder als VBA-Code im Form_Current-Ereignis:

Sub Form_Current()
Me!Adressfeld= Me![Anrede] & " " & Me![Vorname] & " " & Me![Nachname] & vbCrLf  & Me![Strasse] & vbCrLf    & Me![Landkz] & " " & Me![PLZ] & " " & Me![Ort]
End Sub






AccessMakesMeInsane

Hey,
schick wäre es aber für die User, respektive meine Benutzer.Die wünschen sich das schon länger.
Und das es für n Brief schick wäre brauchst du mir nun definitiv nicht erklären....

Was den produktiven Teil deines Posts angeht: Besten Dank dafür!!!
Ich werds gleich mal ausprobieren und dann Feedback geben oder Fragen stellen

Beaker s.a.

Hallo AccessMakesMeInsane,
Und damit's dann auch wirklich schick wird, bastelst Du
den String von Franz so zusammen:

= ([Anrede] + " ") & ([Vorname] + " ") & [Nachname] & chr(13) & chr(10)  & [Strasse] & chr(13) & chr(10)  & ([Landkz] + " ") & ([PLZ] + " ") & [Ort]

Und wenn die Hausnummer, wie's richtig wäre, in einem eigenen Feld steht:

... & ([Strasse] + " ") & [HausNr] & chr(13) & chr(10)  & ...

(Quelle: http://www.donkarl.com?FAQ2.12)
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

bahasu

Moin,

habe hier noch ein paar iif + nz-Befehle verteilt, damit bei fehlenden Daten keine unnötigen Leerzeichen die Anzeige "unschick" machen.

iif(nz([Anrede],"")  > "", [Anrede] & " ", "")  & _
iif(nz([Vorname], "")  > "", [Vorname] &  " ", "") & _
nz([Nachname],"")  & chr(13) & chr(10)  & _
[Strasse] & chr(13) & chr(10)  & _
iif(nz([Landkz],"") > "", [Landkz] & " ", "") & _
iif(nz([PLZ],"") > "", [PLZ] & " ", "") & _
nz([Ort],"")

Harald
Servus

AccessMakesMeInsane

Moin Moin,
ich seh grad, dass ich mich etwas zu knapp ausgedrückt hab.
Die Feldinhalte sind in den einem Formular und sollen dann in einem neuen, sich öffnenden Formular in einem Textfeld konkatiniert werden.

Das mit dem neuen, sich öffnenden Feld klappt dank Beakers Tipp hier http://www.ms-office-forum.net/forum/archive/index.php?t-285496.html sehr gut, allerdings bekomme ich es nicht hin, dass im Textfeld die Daten aus dem anderen Formular gezogen werden.

Ich habe es jetzt wie folgt probiert:
Steuerelementinhalt im sich öffnenden Feld:
txt_adressausgabe = [frm_behörde]!([txt_behördename + " ") & [frm_behörde]!([txt_behördeabteilung] + " ") ....

bahasu

Zitat von: AccessMakesMeInsane am Juli 12, 2012, 12:01:31
Die Feldinhalte sind in den einem Formular und sollen dann in einem neuen, sich öffnenden Formular in einem Textfeld konkatiniert werden.

In einem FORMULAR hieße ja, dass sie ungebunden sind.
Daher hätte ich eher erwartet, dass die Inhalte in einer TABELLE sind. Wenn dem so ist, können sie doch daraus oder aus einer Abfrage aufbereitet und angezeigt werden.

Harald
Servus

AccessMakesMeInsane

Ja, die Daten sind natürlich in einer Tabelle.

Aber die Auswahl des Datensatzes, dessen Adresse in besagtem neuen Formular mit Textfeld angezeigt werden soll, erfolgt in einem Formular, in dem der Datensatz über eine Kombibox ausgewählt wird.

Ich würd auch lieber die Adresse direkt in Word übertragen, aber meine Kollegen wollen das zur Zeit noch nicht.

DF6GL

#8
Hallo,

dann binde das "neue" Form an die Tabelle und öffne es mit einer passenden Where-Kondition (ID_Feld aus der Kombi-Auswahl). Im "neuen" Form wird die Adresse analog vorstehender Vorschläge zusammengesetzt.


Es ist letzendlich auch möglich, beim Öffnen des 2. Forms den Inhalt des Adressfeldes durch den Openargs-Parameter zu übergeben:


Docmd.Openform "frmForm2",,,,,,Me!Adressfeld




und im 2. Form:

Sub Form_Load()
If not isnull(Me.Openargs) Then Me!Adressfeld= Me.Openargs
End Sub

bahasu

Zitat von: AccessMakesMeInsane am Juli 11, 2012, 21:52:55
Ich freue mich auf eure Ideen.

Hi,
es ist auch möglich, ohne den Formular-Verweis auszukommen, wenn Du den dlookup-Befehl verwendest.

In der Art:
Mein_gesuchtes_Feld = nz(dlookup("HierStehtDerNameVomFeldAusDerTabelle", "TabellenName_oder_Name_der_Abfrage", "ID_Adresse = " & Deine_ausgesuchte_Adress_ID),"")

Bitte die Namen/Bezeichnungen anpassen an die von Dir genutzten.
Diesen Befehl gilt es dann für alle Felder zu machen, um für das zweite Formular die Daten aus der Tabelle zu holen.
Und danach dann die weiter oben beschriebene Konkatinierung.

Harald

Servus

AccessMakesMeInsane

Hallo zusammen,

erstmal vielen Dank für euren Input!
Ich habe das Ganze nun wie folgt gelöst:

Hier der Code im Hauptformular um das Ausgabefenster zu öffnen:


Private Sub cmd_open_adressausgabe_Click()
On Error GoTo Err_cmd_open_adressausgabe_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    stForm = "frm_adressausgabe"
    DoCmd.OpenForm "frm_adressausgabe", , , , acFormAdd

Exit_cmd_open_adressausgabe_Click:
    Exit Sub

Err_cmd_open_adressausgabe_Click:
    MsgBox Err.Description
    Resume Exit_cmd_open_adressausgabe_Click
   
End Sub



Und hier ist der Code, um die jeweiligen Felder im Ausgabefenster zu konkatinieren:


Private Sub Form_Open(Cancel As Integer)
Me![txt_adressausgabe] = Forms![frm_behoerde_read]![txt_behoerdename] & Chr(13) & Chr(10) & Forms![frm_behoerde_read]![txt_behoerdeabteilung] & Chr(13) & Chr(10) & Forms![frm_behoerde_read]![txt_behoerdestraße] ...
End Sub



MzKlMu

Hallo,
OT
@AccessMakesMeInsane
wenn schon ein Fremdwort, dann aber richtig: konkatenieren.  ;D

Mit VBA spricht man hier eher vom Verketten, da weis jeder gleich was gemeint ist.
Gruß Klaus

AccessMakesMeInsane

Kam mir schon so komisch vor.Hatte aber auch keine Lust, die gesamten Uni-Unterlagen durchzugehen.  ::)

MzKlMu

Hallo,
ZitatHatte aber auch keine Lust, die gesamten Uni-Unterlagen durchzugehen
Google fragen, 5sec.  ;D
Gruß Klaus

AccessMakesMeInsane