Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Verketten von Feldinhalten - GetFields()
zurück: Ribbons ausblenden weiter: Slider / Scrollbars ohne ActiveX mit Access Bordmitteln Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
JMalberg
Es wird so langsam sinnig ...


Verfasst am:
01. März 2013, 13:08
Rufname:
Wohnort: Saarbrücken

Verketten von Feldinhalten - GetFields() - Verketten von Feldinhalten - GetFields()

Nach oben
       Version: (keine Angabe möglich)

Oftmals ist es nötig Feldinhalte als verketteten String darzustellen.

Bsp Email-Adressen
"a@cc.org; b@cc.org; c@cc.org; AA@cc.org; ba@cc.org; xb@cc.org; zz@cc.org"

Dazu habe ich die von User MAPWARE vorgestellte Funktion Getfield etwas erweitert:
- Distinct-Option: Keine Doppelten Datensätze
- Passt der letzte Feldinhalt nicht mehr in den Ausgabe-String wird er nicht mehr angefügt
Code:
Option Compare Database
Option Explicit

Public Function GetFields(Fields As String, Domain As String _
               , Optional WherePart As Variant _
               , Optional OrderByPart As Variant _
               , Optional Distinct As Boolean = False _
               , Optional Separator As String = vbCrLf _
               , Optional ReplaceNull As Variant) As Variant
If IsMDE = True Then On Error GoTo GetFields_Error
    Const maxStringLength = 65536 'oder 255     2^16=65536
    Dim Result As String
    Dim SQL As String
    Dim rs As DAO.Recordset
    Dim lCount As Long
    Dim vFields As Variant
    Dim MultipleFields As Boolean
   
    'Begin ProcedureBody
    If InStr(1, Fields, ",") > 0 Then
        MultipleFields = True
        vFields = Split(Fields, ",")
    End If
    SQL = "SELECT [" & Replace(Fields, ",", "],[") & "]" _
         & " FROM [" & Domain & "]"
    SQL = Replace(SQL, "[[", "[")
    SQL = Replace(SQL, "]]", "]")
    If Not IsMissing(Distinct) Then
        If Distinct Then SQL = Replace(SQL, "SELECT ", "SELECT DISTINCT ")
    End If
    If Not IsMissing(WherePart) Then SQL = SQL & " WHERE " & WherePart
    If Not IsMissing(OrderByPart) Then SQL = SQL & " ORDER BY " & OrderByPart
    'Debug.Print SQL
    Set rs = CurrentDBC.OpenRecordset(SQL)
    If MultipleFields Then
        If Not rs.EOF Then
            Do While Not rs.EOF
                For lCount = LBound(vFields) To UBound(vFields)
                    If (Len(Result) + Len(Nz(rs.Fields(lCount), ReplaceNull)) _
                      + Len(Separator)) > maxStringLength Then
                        'string zu lang > 2^16=65536
                        Exit For
                      Else
                        Result = Result & Nz(rs.Fields(lCount), ReplaceNull) _
                               & Separator
                    End If
                Next lCount
                rs.MoveNext
            Loop
            rs.Close
            GetFields = Left(Result, Len(Result) - Len(Separator))
        End If
      Else
        If Not rs.EOF Then
            Do While Not rs.EOF
                If (Len(Result) + Len(Nz(rs.Fields(lCount), ReplaceNull)) _
                  + Len(Separator)) > maxStringLength Then
                    'string zu lang > 2^16=65536
                    Exit Do
                  Else
                    Result = Result & Nz(rs.Fields(0), ReplaceNull) _
                           & Separator
                End If
                rs.MoveNext
            Loop
        End If
        rs.Close
        GetFields = Left(Result, Len(Result) - Len(Separator))
    End If
    'End ProcedureBody
GetFields_Exit:
    On Error GoTo 0
    Exit Function
GetFields_Error:
    Select Case Err.Number
      Case Else
        GetFields = "Fehler in Funktion"
    End Select
    Resume GetFields_Exit
End Function

Public Property Get CurrentDBC(Optional Force As Boolean) As DAO.Database
'http://www.access-entwicklerbuch.de/2007/index.php?page=buch&bookpage=Kap_09/05.html
    Static mCurrentDB As DAO.Database
    If mCurrentDB Is Nothing Or Force Then Set mCurrentDB = CurrentDb
    Set CurrentDBC = mCurrentDB
End Property
Die Funktion ist gerade mit CurrentDBC() recht flott und liefert auch bis zu 65536 Zeichen zurück.

Leider ist mWn SQL nur in der Lage 255 Zeichen darzustellen, weshalb GetFields() für >255 Zeichen nur direkt in einer Textbox im Form/Report benutzt werden kann.

@Mod: Sollte es dazu schon ein Thema geben, bitte dranhängen. Danke

_________________
Gruß
Jürgen

Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie!
Willi Wipp
Moderator


Verfasst am:
02. März 2013, 16:20
Rufname:
Wohnort: Raum Wiesbaden


Re: Verketten von Feldinhalten - GetFields() - Re: Verketten von Feldinhalten - GetFields()

Nach oben
       Version: (keine Angabe möglich)

Hi JMalberg,

eine aehnliche Funktion gibt es bereits in Werte Spalten in Zeile schreiben von lothi.
Und dann gibt es noch den Ansatz mit der Funktion FnstrGetFields aus dem Beitrag
Re: In Endlosformular DS mit 1:n Unterdatensätzen (III).
Aber als eigenes Thema war es bis jetzt in Access Tipps & Tricks noch nicht vorhanden.
Daher und da es ja auch einen erweiterten Ansatz zeigt, denke ich das es hier gut her passt.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
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 Formulare: String per Button in Formularfeld verketten bzw. angfügen 4 neomagic 89 25. Nov 2013, 19:43
Marmeladenglas String per Button in Formularfeld verketten bzw. angfügen
Keine neuen Beiträge Access Programmierung / VBA: SQL-Befehl Verketten von zwei Tabellen 4 Djawed 187 14. Dez 2012, 09:32
Marsupilami72 SQL-Befehl Verketten von zwei Tabellen
Keine neuen Beiträge Access Tabellen & Abfragen: Inhalt in 2 Spalten gleich, 3. Spalte Text verketten 3 maik79 617 03. Aug 2011, 10:39
KlausMz Inhalt in 2 Spalten gleich, 3. Spalte Text verketten
Keine neuen Beiträge Access Tabellen & Abfragen: Access Funktion Gruppieren verketten 2 Frost73221 832 11. Jul 2011, 14:34
Gast Access Funktion Gruppieren verketten
Keine neuen Beiträge Access Tabellen & Abfragen: Felder in Abfrage verketten, ein Feld ist Kombinationsfeld 4 AndreasKassel 714 21. März 2011, 13:56
AndreasKassel Felder in Abfrage verketten, ein Feld ist Kombinationsfeld
Keine neuen Beiträge Access Berichte: Textfeld aus Detailbereich verketten 1 Grabo 699 29. Jan 2011, 18:41
Nouba Textfeld aus Detailbereich verketten
Keine neuen Beiträge Access Tabellen & Abfragen: Verketten von Zellen für eine Schlüsselnummer 5 Gast aus ERZ 517 15. Dez 2010, 09:49
Gast aus Erz Verketten von Zellen für eine Schlüsselnummer
Keine neuen Beiträge Access Tabellen & Abfragen: Access Verketten / Zusammenfassen meherer Datensätze 9 specialist1981 7461 22. Mai 2010, 20:20
Gast Access Verketten / Zusammenfassen meherer Datensätze
Keine neuen Beiträge Access Hilfe: Über VBA Tabellenzeilen zu einem Text verketten. 10 DonMiguel 1297 12. Mai 2010, 13:47
DonMiguel Über VBA Tabellenzeilen zu einem Text verketten.
Keine neuen Beiträge Access Formulare: Übernahme von Feldinhalten aus Ufo ins Hfo klappt nicht 3 ohneGlück 297 03. Sep 2009, 10:44
ohneGlück Übernahme von Feldinhalten aus Ufo ins Hfo klappt nicht
Keine neuen Beiträge Access Tabellen & Abfragen: "Berechnete" Felder verketten (in Abfrage) 3 Leeloo Minai 3246 02. Apr 2008, 22:31
MiLie "Berechnete" Felder verketten (in Abfrage)
Keine neuen Beiträge Access Tabellen & Abfragen: Verketten von Datensätzen 8 satrock 599 21. Feb 2008, 14:29
Gast Verketten von Datensätzen
 

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