Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Textzeilen EINER Spalte verbinden (Access)
Gehe zu Seite 1, 2  Weiter
zurück: 2. Tabelle mit Daten aus 1. Tabelle erstellen weiter: Problem bei Gesamtsummenabfrage Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
abohlen
Access-Bastler: Fortgeschrittener Anfänger


Verfasst am:
07. Sep 2010, 22:31
Rufname:
Wohnort: Hannover

Textzeilen EINER Spalte verbinden (Access) - Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

HILFE !!!!

Moin!

Ich hoffe, dass ich hier richtig bin Embarassed
Ich versuche schon seit geraumer Zeit bei meinen Access Programmierungen mehrere Text-Zeilen einer Spalte zu einer neuen Zeile zu verknüpfen. Und bin am verzweifeln! Wer kann mir weiterhelfen??
Die Daten von Access zu Exel und wieder zurück zu transferieren ist leider keine option!

--> z.B.:

lfdnr Kategorie Text
1 1 Hallo!
2 1 Diese
3 1 Zeilen
4 1 sollen
5 1 verbunden
6 1 werden!
7 2 Und
8 2 dies
9 2 ebenso!

Ergebnis in einer Neuen Abfrage sollte dann sein:
Kategorie Text
1 Hallo! Diese Zeilen sollen verbunden werden!
2 Und dies ebenso!

--> Und das ganze am besten noch mit x- Zeilen einer Spalte!
Ich möchte daraus soetwas wie Textbausteine machen. Und die Mengen kann ich nicht manuell zusammenfügen!!

Vielen Dank schon im vorraus!
Alex

_________________
!!! Lebe nicht um zu arbeiten, arbeite um zu Leben !!!
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
07. Sep 2010, 23:52
Rufname:
Wohnort: Hannover


AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hi,
füge diese Funktion in ein allgemeines Modul ein.
Code:
Public Function GetFields(Field As String, Domain As String _
                        , Optional WherePart As Variant _
                        , Optional OrderByPart As Variant _
                        , Optional Separator As String = vbCrLf _
                        , Optional ReplaceNull As Variant) As Variant
    Dim Result As String
    Dim SQL As String
    Dim rs As DAO.Recordset
   
    SQL = "SELECT [" & Field & "]" _
         & " FROM [" & Domain & "]"
    If Not IsMissing(WherePart) Then SQL = SQL & " WHERE " & WherePart
    If Not IsMissing(OrderByPart) Then SQL = SQL & " ORDER BY " & OrderByPart
    'Debug.Print SQL
    Set rs = CurrentDb.OpenRecordset(SQL)
    If Not rs.EOF Then
        Do While Not rs.EOF
            Result = Result & Nz(rs.Fields(0), ReplaceNull) & Separator
            rs.MoveNext
        Loop
        rs.Close
        GetFields = Left(Result, Len(Result) - Len(Separator))
    End If
End Function
Diese Funktion verkettet die Inhalte einer Spalte einer Tabelle miteinander wobei die Zeilen einem gewissen Kriterium genügen müssen. Also nicht nur eine Zeile aus einer Tabelle wie DLookup() sondern mehrere. Du könntest also in Deinem Beispiel eine neue Spalte in einer Abfrage einfügen:
Code:
Verkettet: GetFields("DeinTextFeld";"DeineTabelle";"Kategorie=" & [Kategorie])
Die Syntax ist wie gesagt DlookUp() sehr ähnlich.
Die Trennung zwischen den Einträgen erfolgt standardmäßig per Zeilenumbruch. Achte darauf, das Du im Abfrageergebnis die Zeilenhöhe aufziehst, sonst siehst Du nichts von den mehrzeiligen Ergebnissen.
Falls die Funktion Fehler produziert, weil zum Beispiel Deine Where Bedingung falsch formuliert ist, kannst Du den Kommentar vor dem Debug.Print entfernen und im Direktbereich kontrollieren, ob dort ein gültiges SQL Statement entstanden ist.

_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
abohlen
Access-Bastler: Fortgeschrittener Anfänger


Verfasst am:
09. Sep 2010, 23:37
Rufname:
Wohnort: Hannover

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Moin!

Habe folgendes Erfolglos in div. Varrianten versucht:
Code:
Ausdruck: GetFields([SuSNachname];[SuSTab];[Geschlecht])
Fehlermeldung: Parameterwerte eingeben für "SuSTab"
Bei keiner eingabe: Ausdruck falsch oder zu komplex ...
Bei Eingabe einer "1": Laufzeitfehler 3078: Jet-Datenbankmodul findet die Eingangstabelle oder Abfrage `1´ nicht. ...

WAS mache ich falsch???
Bin für jede Hilfe dankbar!!!

_________________
!!! Lebe nicht um zu arbeiten, arbeite um zu Leben !!!
Marmeladenglas
komme zurecht


Verfasst am:
10. Sep 2010, 06:48
Rufname:

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hi,
wie wärs, wenn du die Parameter wie angegeben als String übergibst ? Wink
Mit anderen Worten die Übergabeparameter müssen in Gänsefüßchen stehen. In deiner Variante werden Feldinhalte der Abfrage übergeben bzw. ein Feld SusTab gesucht, was ja offensichtlich der Tabellenname ist. Desweiteren sollte das WHERE-Kriterium richtig formuliert sein, so wie es das Beispiel auch vorgibt.
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
10. Sep 2010, 14:18
Rufname:
Wohnort: Hannover


AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hi,
vielleicht eher so
Code:
Verkettet: GetFields("SuSNachname";"SuSTab";"Geschlecht=" & [Geschlecht])
Und wie gesagt, mach aus der Zeile
Code:
    'Debug.Print SQL
' ein
    Debug.Print SQL
um sie zu aktivieren. der SQL Select, der dann im Direktbereich auftaucht muss auch als Abfrage funktionieren.
Und wie gesagt, die Syntax ist für diese drei Parameter gleich der DLookup() Funktion. Dafür gibt es hier im Forum tausende von Beispielabfragen.

_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
Gast



Verfasst am:
10. Sep 2010, 14:27
Rufname:

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hi Mapware,

kann man deinen Code auch bei diesem Problem 1:n Beziehung darstellen in einer Liste anwenden oder vielleicht dafür irgendwie anpassen?

Gruß
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
10. Sep 2010, 15:14
Rufname:
Wohnort: Hannover

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hi
@Gast
ich habe Dir ein Deinem anderen Post geanwortet.

_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
abohlen
Access-Bastler: Fortgeschrittener Anfänger


Verfasst am:
12. Sep 2010, 17:19
Rufname:
Wohnort: Hannover

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hello again!

Habe es noch einmal so versucht, wie du es mir gepostet hast. Der effekt war, dass mir, da die Tabelle aus 500 Einträgen besteht, mir 500 ergebnisse geliefert wurden. Ein Teil der kombinierten weiblichen und ein anderer Teil eine Kombination der männlichen Namen. Allerdings immer nur die ersten 4 Buchstaben!!
Irgendwas stimmt da noch nicht. Ich poste hier mmal meine Abfrage der Tabelle als SQL:
Code:
SELECT   GetFields("SuSNachname","SuSTab","Geschlecht=" & [Geschlecht]) AS Verkettet
FROM     SuSTab
ORDER BY GetFields("SuSNachname","SuSTab","Geschlecht=" & [Geschlecht]);
Was mach ich falsch?
Bin um jede Antwort Dankbar, die mir weiterhilft!

Und noch etwas: Wenn ich eine Abfrage erstelle, die zuerst die Tabelle abfragt und Nachname und Vorname kombiniert (Ergebnis: Nachname, Vorname) und diese Abfrage dann mit o.g. Funktion abfrage, erhalte ich (in meinem Fall:) 250 mal den ersten Kombinierten Namen (weiblichen) komplett, und 250 mal den zweiten Namen (die männlichen) komplett.
Hat jemand ne Idee!? Shock

OK! Soviel hab ich inzwischen herausgefunden:
Die Namen werden verkettent, zumindest in einem "Bericht". Allerdings werden sie immernoch untereinander dargestellt, und nicht wie ich es gerne hätte NEBENEINANDER!
Die Darstellung untereinander hilft mir nicht!!!!!!!

_________________
!!! Lebe nicht um zu arbeiten, arbeite um zu Leben !!!
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
13. Sep 2010, 14:26
Rufname:
Wohnort: Hannover

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hi,
wahrscheinlich willst Du einfach nur die weiblichen Namen alle nacheinander und alle männlichen Namen nacheinander. Dein Datenbeispiel mit den Kategorien war irreführend. Da die Anzahl der Geschlechter unter den Menschen nicht nur sehr abzählbar, sondern auch recht konstant ist, kannst Du ja im Bericht auch ein TextFeld einfügen und dort im Steuerlelementinhalt schreiben.
Code:
=GetFields("SuSNachname";"SuSTab";"Geschlecht=0")

Da ich leider nicht weiss, wie Du Dein Geschlecht in der Datenbank ablegst, kann ich Dir nicht konkret sagen, wie das aussehen muss.Eventuell auch so, falls Geschlecht ein Textfeld ist.
Code:
=GetFields("SuSNachname";"SuSTab";"Geschlecht='m'")

_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
Martin S
Im Profil kannst Du frei den Rang ändern


Verfasst am:
13. Sep 2010, 17:04
Rufname:

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hallo,

evt. eine etwas einfachere Funktion mit deinem Ausgangsbeispiel:
Code:
Public Function SZZ(Feld As String) As String
    Dim strSQL As String
    Dim rs As DAO.Recordset

    strSQL = "SELECT Text FROM Deine Tabelle WHERE Kategorie =" & Feld
    Set rs = DBEngine(0)(0).OpenRecordset(strSQL)
    Do While rs.EOF = False
        SZZ = SZZ & " " & rs!Text
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
End Function
Und dann in Abfrage:
Code:
SELECT   Kategorie, SZZ([Kategorie]) AS Ausgabe
FROM     DeineTabelle
GROUP BY Kategorie

Gruß Martin
abohlen
Access-Bastler: Fortgeschrittener Anfänger


Verfasst am:
16. Sep 2010, 15:10
Rufname:
Wohnort: Hannover

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hallo!

Also, dass mit den "SZZ" befehl funzt garnicht.
Der "GetFields" Befehl hingegen tut es ja scheinbar, nur dass erst in einem Bericht alle Einträge der gewählten Spalte sichtbar werden - leider noch untereinander und nicht nebeneinander.
Die Kategorie muss auch nicht "Geschecht" sein. Das war nur nen Beispiel. In dieser Spalte sind nummerische Werte (Zahlen) abgelegt. Bei jedem Eintrag, bei dem dieser Wert gleich ist, sollen halt die Text-Zellen zu einer Zelle verknüpft werden. Das können mal nur zwei Zellen dieser Spalte sein, und mal fünfzig.

Kann mir jemand helfen!? Oder ist es alles so Missverständlich, was ich erreichen will???

Gruß, Alex

_________________
!!! Lebe nicht um zu arbeiten, arbeite um zu Leben !!!
Martin S
Im Profil kannst Du frei den Rang ändern


Verfasst am:
16. Sep 2010, 15:31
Rufname:

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hallo,

und warum soll die Funktion nicht funktionieren; schau das Beispiel

Gruß Martin



test.zip
 Beschreibung:

Download
 Dateiname:  test.zip
 Dateigröße:  18.37 KB
 Heruntergeladen:  251 mal

MAPWARE
Access Profi(l)neurotiker


Verfasst am:
16. Sep 2010, 16:54
Rufname:
Wohnort: Hannover

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hi,
achso, die GetFields() Funktion benutzt im Standard Zeilenumbrüche, für eine andere Trennung ist der Parameter "Separator" zuständig
Code:
SELECT   GetFields("SuSNachname","SuSTab","Geschlecht=" & [Geschlecht],,",") AS Verkettet
FROM     SuSTab
ORDER BY GetFields("SuSNachname","SuSTab","Geschlecht=" & [Geschlecht],,",");
falls dir das mit den Kommas zu verwirrend wird, kannst Du auch die StandardTrennung im Funktionskopf anders definieren, ich habe hier mal das Leerzeichen genommen.
Code:
Public Function GetFields(Field As String, Domain As String _
                        , Optional WherePart As Variant _
                        , Optional OrderByPart As Variant _
                        , Optional Separator As String = " " _
                        , Optional ReplaceNull As Variant) As Variant

_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
abohlen
Access-Bastler: Fortgeschrittener Anfänger


Verfasst am:
16. Sep 2010, 23:49
Rufname:
Wohnort: Hannover

AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

JAAAAAAAA!!!!!!
DANKE Marcus! DAS ISSES!

"Du bist der Gott in meinen Augen!" Rolling Eyes Razz Laughing Laughing

Es funzt! Ich Puzzle schon so lange an so einer Verbindung rum!

Danke auch dir, Martin - aber irgendwie will dieser Befehl bei mir nicht. In der Test.db zum Download funktioniert er, aber wenn ich ihn bei mir Einbaue, sagt mir Access: Unbekannte Funktion "SZZ"!?
Hab ich irgendwas beim Modul vergessen? Muss man die irgendwie aktivieren? Bei den anderen musste ich auch immer nen bissle hier und da klicken und irgendwann taten sie es!???

Ein kleies Problem hab ich noch: Im Bericht und in der Abfrage wird nur ein Teil der Daten angezeigt. Im Bericht (Din A4) sind es ca. 2,5 Zeilen, Laut Abfrage (Mit Befehl "Länge()") sind es immer 255 Zeichen. Ein Teil wird also abgeschnitten. Wie und wo kann ich das korrigieren, so dass der gesammte Inhalt (zumindest im Bericht) Angezeigt wird?

Gruß, Alex

_________________
!!! Lebe nicht um zu arbeiten, arbeite um zu Leben !!!
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
17. Sep 2010, 16:06
Rufname:
Wohnort: Hannover


AW: Textzeilen EINER Spalte verbinden (Access) - AW: Textzeilen EINER Spalte verbinden (Access)

Nach oben
       Version: Office 2003

Hi,
wahrscheinlich hast Du in der Abfrage für den Bericht grupppiert und dabei auch das Feld mit der GetField Funktion miteinbezogen (was GANZ sicher nicht nötig ist). Access schneidet dabei die Zeichen über 255 einfach ab. (kleines Relikt aus der 8bit Ära, danke Microsoft Confused für die Erinnerung an 2^8-1). Ändere die Funktion-Zeile dieser Abfrage von "Gruppierung" in "Ausdruck".

_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: eine spalte - verschiedene Dezimalstellen 7 Gast 807 06. Apr 2006, 15:00
SGast eine spalte - verschiedene Dezimalstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Spalte mit Berechnung hinzufügen 1 Enigma 893 25. März 2006, 22:58
Nouba Spalte mit Berechnung hinzufügen
Keine neuen Beiträge Access Tabellen & Abfragen: Aktuelle Summe der Werte einer Spalte 14 simsy 3001 15. März 2006, 16:56
simsy Aktuelle Summe der Werte einer Spalte
Keine neuen Beiträge Access Tabellen & Abfragen: Wertliste mit Gültigkeitsregel verbinden 2 dirtymad 1194 13. Feb 2006, 21:35
dirtymad Wertliste mit Gültigkeitsregel verbinden
Keine neuen Beiträge Access Tabellen & Abfragen: 2 Abfragen verbinden 2 halo 781 31. Jan 2006, 23:24
halo 2 Abfragen verbinden
Keine neuen Beiträge Access Tabellen & Abfragen: Daten aus einer Spalte in eine Zeile kopieren????!!! 1 kingjim_ 773 08. Jan 2006, 00:37
accessmichel Daten aus einer Spalte in eine Zeile kopieren????!!!
Keine neuen Beiträge Access Tabellen & Abfragen: BESTIMMTE Daten einer Zeile in Spalte umwandeln 7 Gast 2403 30. Dez 2005, 13:56
KirstenS BESTIMMTE Daten einer Zeile in Spalte umwandeln
Keine neuen Beiträge Access Tabellen & Abfragen: Eine Spalte leeren 8 Marius_W 4524 07. Dez 2005, 16:34
Marius_W Eine Spalte leeren
Keine neuen Beiträge Access Tabellen & Abfragen: mehrere Zahlen in einer Spalte??? 11 FirefighterBM 701 05. Dez 2005, 16:58
Willi Wipp mehrere Zahlen in einer Spalte???
Keine neuen Beiträge Access Tabellen & Abfragen: Kombofeld/Abfrage mit Kombo/Abfrage verbinden 1 FCKW 581 25. Nov 2005, 12:44
KirstenS Kombofeld/Abfrage mit Kombo/Abfrage verbinden
Keine neuen Beiträge Access Tabellen & Abfragen: Duplikate innerhalb einer Spalte 1 Gast 1099 14. Okt 2005, 17:23
lupos Duplikate innerhalb einer Spalte
Keine neuen Beiträge Access Tabellen & Abfragen: In einer bestehenden Tabelle eine Spalte füllen 2 Thorsten111 2716 05. Aug 2005, 11:27
Thorsten111 In einer bestehenden Tabelle eine Spalte füllen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: CSS Forum