Neuigkeiten:

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

Mobiles Hauptmenü

Sonderzeichen Ascii ß

Begonnen von thorpax, November 26, 2014, 12:35:08

⏪ vorheriges - nächstes ⏩

thorpax

Hallo Leute :)

Ich benutze Access 2003 auf einem Win 2011 Server mit einer Paradox 7 Datenbank.
Diese Datenbank ist von unserer Warenwirtschaft und noch aktuell. Da Access 2010 absolut nicht zu überreden ist diese Paradox 7 DB zu lesen, habe ich wieder Access 2003 installiert.

Mein Problem sind die Sonderzeichen. Ich erstelle Auswertungen aus den Paradox Datenbanken mittels einem ADODB Recset.
Alles passt super, nur die Sonderzeichen passen nicht.
Also schreibe ich eine kleine Routine, die diese korrigiert in dem der String neu zusammengebaut wird.

ÄäÜüÖö und ß

Ä bis ö habe ich hinbekommen... aber das ß macht mir Probleme.
Im Bericht wird es als ▀ angezeigt. (alt+223). Im Recset als String Variable aber wie ein Underscore nur obenliegend.

Wie kann ich dieses abfragen ?
Durchsuche ich den String nach asc(223), wird mir ein "ss" rausgeschnitten  zB.: grossen / großen wird als gro▀en im Bericht gezeigt.

Bin für jeden Tip ofen :)

LG
Andi

MaggieMay

Hallo,

Asc(223) ist falsch, das scharfe "s" (ß) entspricht dem Code von Chr(223).
Freundliche Grüße
MaggieMay

thorpax

Hallo .
Danke für den Hinweis. Aber ich weiss nicht wie ich es abfragen soll.

    Dim x, neu As String
        Me.Text2.SetFocus
             x = Me.Text2.TEXT 'qwer▀asdf (beispiel)
             If InStr(x, Chr(223)) Then
                   neu = Replace(x, Chr(223), "ß", 1)
            End If

Aber es kommt nicht zur Bedingung :(

LG Andi

MaggieMay

Das macht ja auch keinen Sinn Chr(223) durch "ß" zu ersetzen, weil es dasselbe ist.
Vermutlich steht dort ein ganz anderes Zeichen drin.

Wie bekommst du denn hier das Kästchen angezeigt, woher nimmst du das?
Freundliche Grüße
MaggieMay

thorpax

Das Kästchen schreibe ich hier mit
alt+223
Im Bericht wird es so angezeigt soll aber als ß angezeigt werden.

DF6GL

Hallo,

vielleicht sollte im ODBC-Treiber nachgesehen werden, welche Zeichensätze, bzw. Konvertierungen verwendet werden können...
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

thorpax

Hallo DF6GL.

Ich habe den normalen Paradox BDE Treiber installiert und die Tabellen der Paradox Datenbank verküpft.
Lese diese Tabellen dann wir normale Tabellen mittels einen ADODB.Recordset aus und bearbeite die Inhalte.

Diese schreibe ich in eine Tabelle, welche dann als Datenherkunft des Berichtes dient.

Aber dank deinem Hinweis, werde ich mal versuchen in den BDE Treibereinstellungen etwas zu finden :)

MaggieMay

ZitatDas Kästchen schreibe ich hier mit
alt+223
Gibt es da noch irgendeinen Trick dabei, ich bekomme das nicht hin.
Freundliche Grüße
MaggieMay

thorpax

Einfach nur "alt" gedrückt halten und dann 223 eingeben. Ähnlich wie shift + F2

MaggieMay

Das funktioniert bei mir nicht, woran kann das liegen?
Freundliche Grüße
MaggieMay

DF6GL

Hallo,

um erst mal festzustellen, um welches Zeichen es sich tatsächlich handelt, schlage ich vor, die Zeichenkette Zeichen für Zeichen als ASCII-Zahl auszugeben:

For i = 1 to Len (Me!Text2)
Debug.Print Asc(Mid (Me!Text2,i,1))
Next


PS: Das funktioniert bei mir nicht, woran kann das liegen?

die Nummer muss auf dem Nummernblock eingetippt werden...
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

MaggieMay

ZitatNummernblock
Danke, da wäre ich wohl von alleine nie im Leben drauf gekommen.
Freundliche Grüße
MaggieMay

thorpax

Hey ... ich habes nun .... :)

Vielen Dank für eure Hilfe.

Das Zeichen ▀ wird mit Hilfe des Codes von DF6GL als 175 angezeigt. Gebe ich dieses Zeichen als Chr(175) aus, erscheint der von mir bereits erwähnte oben liegnde Underscore der auch in der Stringvariable angezeigt wird......

Ich lasse den String nun Buchstabenweise durchlaufen und baue ihn wieder zusammen, nur als Prüfbedingung nehme ich jetzt die 175 statt der 223 :)

Schon seltsam aber Dank eurer Hilfe doch gut :)
alt + 223 = ▀
alt + 225 = ß
alt + 175 = » aber eigentlich sollte es ein anderes Zeichen sein (obenliegender Strich) ????

Egal weiss nun wie ich es hin bekomme  :D

Nochmal Danke ..

LG
Andi   

thorpax

Perfekt :)

Dim i As Byte
Dim a As Long
Dim s As String
s = ""
For i = 1 To Len(Me!Text2)
    a = Asc(Mid(Me!Text2, i, 1))
    If a = 175 Then
            s = s & "ß"
        Else
            s = s + Chr(a)
    End If
Next i