Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Probleme mit MID

Begonnen von HaNe, September 28, 2018, 12:04:38

⏪ vorheriges - nächstes ⏩

HaNe

Ein herzliches Glück Auf an Alle,

ich hab ein kleines Problem mit der Funktion MID in Access 2007. Ich will dies verwenden, um in einer Abfrage bestimmte Stellen aus einer Zahl auszulesen. Es geht im aktuellen Fall um einen Barcode, welcher in einer Zahlenfolge bestimmte Codes stehen hat, welche ich zum Auswerten brauche.
Left und Right klappt ohne Probleme. Nur bei MID steht immer im Ergebnis der Wert bis zum Ende der Zahl.
z.B. hab ich eine 8stellige Zahl und will die Stellen 6 und 7 auslesen.
=Teil([barcode],6,2) - es liest mir aber die Stellen 6,7 und 8 aus.
Was mache ich falsch?

Glück Auf
HaNe

Lachtaube

Ein Fehler ist nicht erkennbar.

Aus dem VBA-Direktfenster:barcode="12345678"
?Mid(barcode, 6, 2)
67
Grüße von der (⌒▽⌒)

HaNe

woran kann es dann liegen, dass mir mehr stellen ausgegeben werden, als ich angegeben habe?

steffen0815

#3
Hallo,
ich würde sagen, das kann nicht sein!!
Zitat=Teil([barcode],6,2) - es liest mir aber die Stellen 6,7 und 8 aus.
Dieser Code kann definitiv nur 2 Stellen ausgeben.
Kontrolliere deine "Versuchsanordnung".

Ps: Was mich wundert, dass du mit "," arbeitest? Schweizer Version !?
Gruß Steffen

HaNe

Hallo Steffen,

tut mir Leid, aber es klappt wirklich nicht. Es werden, trotz 2 geforderter Stellen, 3 oder mehr ausgegeben. Ich habe ein deutsche Version. Sobald ich ein ";" eingebe kommt eine Fehlermeldung. Ich habe das jetzt bei Zahlen und bei Text probiert und habe immer wieder dieses Problem.
Zuätzlich wollte ich es in einem Formularkopf testen....da kommt der selbe Fehler.

Kann es manchmal sein, dass ich irgendwo eine "Grundeinstellung" ändern muss oder könnte das eine Updategeschichte sein? Ich weiß...es ist die 2007er Version, aber bis heute hat alles wunderbar funtioniert.
Ich weiß mir echt keine Rat mehr

GlückAuf
HaNe

DF6GL

Hallo,

schreib mal so in einem Feld (Spalte) im Abfrageentwurf:

Feld:         Txt: Teil([Barcode];6;2)

Lachtaube

Ob Komma oder Semikolon richtig ist, wird durch die Windows Systemeinstellung für das Listentrennzeichen geregelt. Am unverfänglichsten ist, den Code direkt in der SQL-Ansicht der Abfrage einzutippen.

PS: Um sicherzustellen, dass keine Defekte in der Datenbank das merkwürdige Verhalten hervorrufen, könntest Du sämtliche Objekte in eine neue Datenbank importieren.
Grüße von der (⌒▽⌒)

HaNe

Hallo nochmal,

zuerst vielen Dank an alle Unterstützer. Ich hab den Fehler gefunden und war ziemlich erstaunt. Ich habe wie angegeben die Formel folgendermaßen eingegeben: Mitte:Teil([barcode],6,2) und das Ergebnis war immer, wie oben beschrieben. Der Tipp mit der SQL-Ansicht hat mir geholfen. Acces hat hier folgendes angezeigt.... Mitte:Teil([barcode],6.2). Access hat also das letzte Komma in einen Punkt gewandelt. Warum und wieso....keine Ahnung. Jedenfalls habe ich den Punkt in SQL in ein Komma geändert und siehe da, es klappt.
Also nochmal VIELEN DANK an alle Helfer und ein schönes Wochenende.

GlückAuf
HaNE

MzKlMu

#8
Hallo,
hier geht wohl doch einiges durcheinander.
In der Entwurfsansicht einer Abfrage sind bei einem deutschen Access Semikolons statt Komma zu verwenden. Also so:
Mitte:Teil([barcode];6;2)
Bei Umschaltung in SQL sieht das dann so aus:
Mid([barcode],6,2) As Mitte

In SQL steht da niemals Teil.

Hinweis:
Prüfe mal in der Systemsteuerung die Ländereinstellung.

Gruß Klaus

Lachtaube

Sechs Komma Zwei wird zur Ganzzahl 6 gerundet. Und weil die Mid-Funktion auch nur mit dem Startwert als zweites Argument ausreichend versorgt ist, wird die Funktion alles ab dem 6. Zeichen ausgegeben.
Unklar ist, warum das Komma nach [barcode] nicht bemängelt wurde?!
Grüße von der (⌒▽⌒)

HaNe

Hallo MzKlMu,
ich hab nochmal die Ländereinstellung geprüft. Da steht alles normal auf Deutsch. Keine Ahnung, warum das solche Probleme macht. Ich hab mich schon gewundert, warum ich ein Komme statt Semikolon eingeben musste, das es überhaupt funktioniert. Ich habe schon daran gedacht, dass mir eine generelle Einstellung eine Streich spielt. Aber welche.....das ist wohl die Frage.
Total verrückt ist nun auch noch....wenn ich diese Abfrage, als Abfrageentwurf öffne, wandelt es das Komma wieder in einen Punkt. Wenn ich die Abfrage normal öffne - also ohne Entwurfsansicht - funktioniert es.
Schon alles sehr, sehr merkwürdig.
Achso, ich verwende Windows 7

GlückAuf
HaNe

HaNe

Zitat von: Lachtaube am September 28, 2018, 16:45:14
Ob Komma oder Semikolon richtig ist, wird durch die Windows Systemeinstellung für das Listentrennzeichen geregelt. Am unverfänglichsten ist, den Code direkt in der SQL-Ansicht der Abfrage einzutippen.

PS: Um sicherzustellen, dass keine Defekte in der Datenbank das merkwürdige Verhalten hervorrufen, könntest Du sämtliche Objekte in eine neue Datenbank importieren.

Eine Frage hierzu hätte ich doch noch. Ich habe gerade mal nachgeschaut. Das Listtrennzeichen ist bei mir ein Komma. Wäre es günstig, dies in ein Semikolon zu ändern?

GlückAuf
HaNe

DF6GL

Hallo,

das könnte nicht schaden...   Wäre jedenfalls dem Standard näher und sorgte nicht für solche Verwirrungen ;)

Vorausgesetzt, es steht nicht eine andere Anwendung, die das Semikolon nicht verwenden (erkennen) kann im Wege..

Lachtaube

Wenn das Listentrennzeichen ein Komma ist,kollidiert dieses mit dem deutschen Dezimaltrennzeichen, welches i.d.R. das Komma ist. Ändert man das Dezimaltrennzeichen zu einem Punkt, so kollidiert dieser mit dem deutschen Datumstrennzeichen. Eine Änderung der Symbole ist deshalb meistens nur sinnvoll, wenn man alle Symbole behandelt. Das kann durch eine für ein Land typesches Schema geschehen, wofür es Vorauswahlen gibt.

Also lange Rede kurzer Sinn - wenn Du mit deutschen Ländereinstellungen werkelst, verwende das Semikolon. Amerikaner würden das Komma wählen.
Grüße von der (⌒▽⌒)