Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: AccessMakesMeInsane am Juli 11, 2012, 21:52:55

Titel: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: AccessMakesMeInsane am Juli 11, 2012, 21:52:55
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.
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: DF6GL am Juli 11, 2012, 22:18:05
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





Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: AccessMakesMeInsane am Juli 11, 2012, 22:23:19
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
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: Beaker s.a. am Juli 11, 2012, 23:03:23
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 (http://www.donkarl.com?FAQ2.12))
gruss ekkehard
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: bahasu am Juli 12, 2012, 05:33:35
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
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: AccessMakesMeInsane am Juli 12, 2012, 12:01:31
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 (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] + " ") ....
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: bahasu am Juli 12, 2012, 12:08:57
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
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: AccessMakesMeInsane am Juli 12, 2012, 13:25:04
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.
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: DF6GL am Juli 12, 2012, 13:52:43
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
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: bahasu am Juli 12, 2012, 14:24:00
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

Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: AccessMakesMeInsane am Juli 12, 2012, 15:11:04
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


Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: MzKlMu am Juli 12, 2012, 19:31:06
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.
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: AccessMakesMeInsane am Juli 12, 2012, 19:46:30
Kam mir schon so komisch vor.Hatte aber auch keine Lust, die gesamten Uni-Unterlagen durchzugehen.  ::)
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: MzKlMu am Juli 12, 2012, 19:49:35
Hallo,
ZitatHatte aber auch keine Lust, die gesamten Uni-Unterlagen durchzugehen
Google fragen, 5sec.  ;D
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: AccessMakesMeInsane am Juli 12, 2012, 20:03:50
Shame on me :-D

Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: MzKlMu am Juli 12, 2012, 20:09:50
Hallo,
ZitatShame on me :-D
Na ja, wir wollen ja nicht gleich übertreiben. 
Aber jetzt reichts, sonst kommt noch die Forumsaufsicht. ;D
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: Beaker s.a. am Juli 12, 2012, 21:16:21
Hallo Harald,
Zitathabe hier noch ein paar iif + nz-Befehle verteilt, damit bei fehlenden Daten keine unnötigen Leerzeichen die Anzeige "unschick" machen.
Das kannst Du dir mit dem, von mir zitiertem, Coding von Don Karl sparen, - der macht genau das.
Schau Dir den Link in der FAQ mal an.
gruss ekkehard
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: bahasu am Juli 12, 2012, 21:44:39
Hi Ekkehard,

danke, wieder etwas dazu gelernt.

Harald
Titel: Re: Mehrere Felder in einem Memofeld konkatinieren
Beitrag von: AccessMakesMeInsane am Juli 12, 2012, 21:48:23
So lernen auch die Cracks noch was dazu.
Ich liebe das Internet. :-D

Danke euch allen!