Neuigkeiten:

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

Mobiles Hauptmenü

Doppelte Werte im String löschen und sortieren

Begonnen von Torsten., Februar 10, 2016, 11:00:58

⏪ vorheriges - nächstes ⏩

DF6GL

Hallo,


--kopier den Code in ein Standardmodul (und schreib noch "Public" vor "Function" in der ersten Zeile).

Public Function DDASA(strStr As String) As String


--ruf die Funktion in einer berechneten Abfragespalte auf :


Select *, DDASA ([Modell]) as ModellSortiert  from [04_tbl_eibach_fzg_1-zeilig]

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Torsten.

Franz,
es hapert bei mir mit dem anlegen einer berechneten Abfragespalte.
Siehe Anhang - Meine Versuche gingen in diese Richtung, so funktioniert es natürlich nicht.

DF6GL

Hallo,

dort muss einfach stehen:

ModellSortiert: DDSA([Modell])

"Modell"  muss dabei die Tabellenspalte sein, in der der zu bearbeitende String drinsteht.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Torsten.

#18
Fast perfekt, leider schleicht sich noch am Ende ein , 1.0 TSI ein, siehe Anhang.

Torsten.

Hurra, ich glaube es funktioniert jetzt:
Ich habe in Deiner Funktion DDASA ein Leerzeichen (siehe Anhang) eingefügt und somit ist in der tblTemp kein 2. Datensatz ( 1.0 TSI) ohne Leerzeichen vorhanden.
Kannst Du das bestätigen das es daran liegen kann?

MaggieMay

#20
Hi,

du könntest statt dessen auch die Trim-Funktion beim Füllen von tblTemp einsetzen und nicht erst beim Auslesen.

PS:
Zitat von: Torsten. am Februar 10, 2016, 11:58:37
Die Module sind nicht von mir, [...]. Sie wurden mit Eure Hilfe in der Vergangenheit erstellt.

Zitat von: Torsten. am Februar 10, 2016, 19:07:19
Die DB hat keine Vorgeschichte, sie wurde zwar von einer früheren kopiert und angepaßt,
aber das Ergebnis muß jetzt anders sein
Ist für mich ein Widerspruch, aber was soll's...?
Freundliche Grüße
MaggieMay

Torsten.

Hallo MaggieMay,
würdest Du mir bitte behilflich sein wie der Code der Trim-Funktion zu sein hat und wo er wie eingefügt werden soll?

Gruß Torsten

el_gomero

Hallo,

etwas Eigeninitiative kann nicht schaden. Einfach mal in einer Abfrage trim eingeben, den Cursur drauf stehen lassen und F1 drücken.

Das Ergebnis sieht dann zB so aus:

Zitat
LTrim, RTrim, and Trim Functions

Office 2013 and later
Contribute to this content
Use GitHub to suggest and submit changes. See our guidelines for contributing to VBA documentation.
Returns a Variant (String) containing a copy of a specified string without leading spaces (LTrim), trailing spaces (RTrim), or both leading and trailing spaces (Trim).
Syntax
LTrim(string)
RTrim(string)
Trim(string)
The required string argument is any valid string expression. If string contains Null, Null is returned.
Example

This example uses the LTrim function to strip leading spaces and the RTrim function to strip trailing spaces from a string variable. It uses the Trim function to strip both types of spaces.
Dim MyString, TrimString
MyString = "  <-Trim->  "    ' Initialize string.
TrimString = LTrim(MyString)    ' TrimString = "<-Trim->  ".
TrimString = RTrim(MyString)    ' TrimString = "  <-Trim->".
TrimString = LTrim(RTrim(MyString))    ' TrimString = "<-Trim->".
' Using the Trim function alone achieves the same result.
TrimString = Trim(MyString)    ' TrimString = "<-Trim->".

Gruß
Jürgen


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

Torsten.

Hallo Jürgen,
vielen Dank für Deinen Hinweis das ich doch ein wenig Eigeninitiative leisten sollte.

Was vermutest Du wenn Du meine Fragen hier im Forum liest, welchen Kennntissstand ich bezügl. Access habe?
Hättest Du Dir die Mühe gemacht (was ich nicht verlange) bspw. nur die in diesem Thread zu lesen, würdest Du sehen das Deine Information zum Thema Trim... für mich nichtssagend ist.
Von so her lass es einfach sein, hinter der Hecke hervor zu springen und mir solch eine blöde Antwort zu geben!

MzKlMu

Hallo,
@Torsten
mit solchen Äußerungen machst Du Dir keine Freunde und schiebst Dich schnell auf ein Abstellgleis und kriegst gar keine Antwort. Und Du willst ja Hilfe. Jürgen hat Dir umfangreiches Infomaterial zu Trim zukommen lassen. Und noch einen Tipp wie man an solche Infos in der Hilfe findet. Von daher, bin ich ziemlich sicher, dass die Mitleser erkennen, wer jetzt die blöde Antwort gegeben hat. Um mal bei Deinem unpassenden Vokabular zu bleiben.

Eine solche Äußerung ist schlicht und ergreifend eine Frechheit gegenüber dem der sich bemüht DIR zu helfen. Das gehört sich nicht.
Gruß Klaus

MaggieMay

Hallo Torsten,

mein Tipp bezog sich auf den Code aus Antwort #13, dort wird die Trim-Funktion beim Auslesen der Tabelle eingesetzt, was allerdings zu spät ist, da so nicht alle Duplikate erkannt werden. Wendest du aber die Trim-Funktion bereits beim Speichern ein, ist alles OK.

In Gänze sieht das dann so aus:

Function DDASA(strStr As String) As String
' Funktion DeleteDoubletsAndSortAsc
Dim a, db As Database, i As Long, strErg As String, rs As DAO.Recordset

Set db = CurrentDb
On Error Resume Next
db.Execute "delete * from tblTemp"
db.Execute " Create Table tblTemp  (strItem Text(50) Primary Key)"
On Error GoTo myErr

a = Split(strStr, ",")                            [color=blue]' der Split-Parameter bleibt unverändert[/color]
For i = LBound(a) To UBound(a)
  db.Execute "insert into tblTemp (strItem) Values ('" & [color=blue]Trim[/color](a(i)) & "')"   [color=blue] ' <--- hier macht Trim mehr Sinn[/color]
Next

Set rs = db.OpenRecordset("select * from tblTemp order by strItem", dbOpenSnapshot)
Do Until rs.EOF
  strErg = strErg & ", " & rs(0)     [color=blue]' <--- hier ist Trim überflüssig, wurde also entfernt[/color]
  rs.MoveNext
Loop

If Len(strErg) > 1 Then
   DDASA = Mid(strErg, 3)
Else
   DDASA = ""
End If

Exit_F:
If Not rs Is Nothing Then rs.Close: Set rs = Nothing
Set db = Nothing
Exit Function

myErr:
MsgBox Err.Number & ": " & Err.Description
Resume Exit_F
End Function
Freundliche Grüße
MaggieMay

Torsten.

#26
@ Klaus
Das sehe ich natürlich anders.
Hätte ich auf meine Fragen und Probleme die im Laufe der Jahre angefallen sind, solche Antworten bekommen, wäre ich nie zum Ergebnis gekommen.
Ich mache 3 Kreuze das es solch geduldige und hilfsbereite Programmierer wie Franz, Oma, MaggieMay, Peter, Dir  und all die die mir über die Jahre geholfen haben, gibt.
Und übrigens da war keine Antwort dabei die nur annähernd so war wie sie vorhin kam.

Gruß Torsten

Nachtrag:
Das beste Beispiel ist die Antwort von MaggieMay zuvor.
Ich übertreibe jetzt ein wenig, aber ich bekomme vor Freude Tränen in den Augen, wenn ich sehe das er sich die Mühe macht, mir das aufdröselt, es noch kommentiert und mir auch noch "mundgerecht" serviert - nur anders könnte ich es nicht umsetzen.
Mir ist völlig bewußt das es keine Selbstverständlichkeit ist.