Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Anzahl der Zeichen in einem Tabellenfeld (Feldlänge)

Begonnen von mohab, September 17, 2015, 16:37:24

⏪ vorheriges - nächstes ⏩

mohab

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

MzKlMu

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 ?
Gruß Klaus

mohab

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?


el_gomero

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

Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

mohab

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?


MzKlMu

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.
Gruß Klaus