Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: mohab am September 17, 2015, 16:37:24

Titel: Anzahl der Zeichen in einem Tabellenfeld (Feldlänge)
Beitrag von: mohab am September 17, 2015, 16:37:24
Hallo zusammen,

ich habe eine Funktion, die Auftragsnummern aus verschiedenen Datensätzen in einem Feld aneinander reiht, und durch ";" trennt.
Nun trat das Problem auf, dass jemand so viele Aufträge kombiniert hat, dass mehr als 255 Zeichen notwendig wären um dies richtig darzustellen.
Leider kenne ich mich nicht genug aus, um die Funktion entsprechend abzuändern, dass mehr Zeichen möglich wären.
Wenn nun einer von euch so nett wäre und mir mit der Anpassung dieses Codes helfen könnte, wäre ich sehr dankbar!

Public Function SQLListe(ByVal SQL As String, Optional ByVal SepR As String = ";", Optional ByVal SepF As String = ";", Optional ByVal NoNullFields As Boolean = True) As String
Dim db As DAO.Database, rs As DAO.Recordset, I As Long, Res As String, Tmp As String
  On Error Resume Next
  Set db = CurrentDb()
  Set rs = db.OpenRecordset(SQL, dbOpenSnapshot)
  If Err.Number <> 0 Then
    Res = "#Fehler"
    Err.Clear
  Else
    On Error GoTo 0
    Res = ""
    Do While Not rs.EOF
      Tmp = ""
      For I = 0 To rs.Fields.Count - 1
        If Not (NoNullFields And IsNull(rs(I))) Then Tmp = Tmp & SepF & rs(I)
      Next
      If Tmp <> "" Then Res = Res & SepR & Mid(Tmp, Len(SepF) + 1)
      rs.MoveNext
    Loop
    rs.Close
    If Res <> "" Then Res = Mid(Res, Len(SepR) + 1)
  End If
  SQLListe = Res
End Function


Tausend Dank!!
Grüße,
mohab
Titel: Re: Anzahl der Zeichen in einem Tabellenfeld (Feldlänge)
Beitrag von: MzKlMu am September 17, 2015, 16:53:56
Hallo,
der Funktion ist die Anzahl der Zeichen egal.
Willst Du die Liste in einem Tabellenfeld speichern ?
Wenn ja, musst Du dieses Tabellenfeld auf "Memo" umstellen.
Wenn nein, wo wird das Ergebnis dargestellt ?
Titel: Re: Anzahl der Zeichen in einem Tabellenfeld (Feldlänge)
Beitrag von: mohab am September 18, 2015, 08:31:04
Danke für deine Antwort!
Die Funktion wird in einer Tabellenerstellungsabfrage verwendet, zum Export von Daten.
Da bereits nach Ausführen der Abfrage das Feld "abgeschnitten" wird, dachte ich der Datentyp müsste in der Funktion bereits definiert sein. Oder kann ich das in der Abfrage auch noch konfigurieren?

Titel: Re: Anzahl der Zeichen in einem Tabellenfeld (Feldlänge)
Beitrag von: el_gomero am September 18, 2015, 08:45:40
Moin,

generell sehe ich solch lange Zeichenketten kritisch und würde hier eine andere Lösung anstreben.

Wenn du trotzdem da bleiben willst, solltest du auch in der faq von Karl Donaubauer folgenden Beitrag lesen: http://www.donkarl.com?FAQ5.18

Titel: Re: Anzahl der Zeichen in einem Tabellenfeld (Feldlänge)
Beitrag von: mohab am September 18, 2015, 13:32:17
hi Jürgen,

ich verstehe die Bedenken bzgl, der Länge. Aber leider ist es notwendig. Es handelt sich zwar um Ausnahmen (aktuell der erste von 6000 Fällen), aber gerade die erzeugen dann große Probleme.

Danke für deine Antwort. Allerdings konnte ich aus den FAQ jetzt nichts raus lesen was mir helfen könnte oder einen Denkanstoß gegeben hat.
Da in der Abfrage an sich keine Gruppierung erfolgt, sondern nach einem bestimmten Wert der aus einem Formular übergeben wird abgefragt wird, wüsste ich jetzt leider nicht was ich ändern könnte.

Wie kann ich denn einen Datentyp eines Tabellenfeldes in einer Tabellenerstellungs-Abfrage festlegen?

Titel: Re: Anzahl der Zeichen in einem Tabellenfeld (Feldlänge)
Beitrag von: MzKlMu am September 18, 2015, 13:50:31
Hallo,
erstelle die Tabelle manuell  mit den benötigten/richtigen Datentypen. Und dann machst Du aus der Tabellenerstellungsabfrage eine Anfügeabfrage und fügst die Daten an die vorgefertigte Access Tabelle an.
Das ist ohnehin der zu bevorzugende Weg.