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
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 ?
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?
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
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?
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.