Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: accessy am Januar 18, 2015, 16:10:56

Titel: PLZ Filtern VON....BIS
Beitrag von: accessy am Januar 18, 2015, 16:10:56
In meiner Abfrage habe ich im Feld PLZ das hier eingesetzt.

Zwischen [Von PLZ] Und [Bis PLZ]

Jetzt erhalte ich 2 Eingabeaufforderungen.
Da aber meine 2. Eingabe immer "Von PLZ" +1 ist,
würde ich das gern automatisch haben, also keine 2. Eingabe mehr machen.

Wenn ich also alle Kunde des PLZ-Gebiets 10 haben will möchte ich nur noch die 10, aber nicht mehr die 11 eingeben müssen.

Ich habe mal versucht mit diesem Ausdrucksgenerator das zu gestalten...Das war nichts....
Kann mir da jemand nen Tipp geben?
Vielen Dank
Gruß Achim
Titel: Re: PLZ Filtern VON....BIS
Beitrag von: bahasu am Januar 18, 2015, 17:46:10
Hi,

was passiert bei:
Zwischen val([Von PLZ]) Und val([Von PLZ]) + 1
Titel: Re: PLZ Filtern VON....BIS
Beitrag von: database am Januar 18, 2015, 17:55:50
Hallo,

ZitatWenn ich also alle Kunde des PLZ-Gebiets 10 haben will möchte ich nur noch die 10, aber nicht mehr die 11 eingeben müssen

Ich gehe davon aus, dass es sich bei PLZ um ein TEXTFELD handelt (so wie es sein soll)!

Stelle als Kriterium bei der Postleitzahl ein:

LIKE [PLZ Bereich] & "*"

Damit kannst du alle möglichen 'Startwerte' angeben ... 10, 12, 1, usw.
Titel: Re: PLZ Filtern VON....BIS
Beitrag von: accessy am Januar 18, 2015, 18:10:29
Ja, das Feld PLZ ist ein Textfeld.
Es geht keine der beiden Lösungen.
Weder die VAL, noch die LIKE.

Da es sich um ein Textfeld handelt, habe ich schon an eine Art ähnlich einer VBA Lösung gedacht.
Ich frage einfach nur die PLZ nach den ersten beiden Stellen und kürze dann den 5-stelligen PLZ String auf 2 Stellen ab. Ungefähr so: LEFT(PLZ,2)

Aber über den Ausdrucksgenerator geht das nicht.
Kann man das bei SQL einfügen?
Titel: Re: PLZ Filtern VON....BIS
Beitrag von: ebs17 am Januar 18, 2015, 18:21:17
ZitatEs geht keine der beiden Lösungen.

Zu ergänzen wäre: In DEINER Ausführung.
An sich wird die Like-Variante funktionieren. Und: Das ist so pures SQL.
Titel: Re: PLZ Filtern VON....BIS
Beitrag von: accessy am Januar 18, 2015, 18:39:39
Ich habe NULL Plan von SQL.
Wenn ich die Abfrage öffne und dann auf SQL Ansicht klicke, kommt das hier.

SELECT [Kunden - sortiert nach Name].ID, [Kunden - sortiert nach Name].Kunde, [Kunden - sortiert nach Name].Adresse, [Kunden - sortiert nach Name].PLZ, [Kunden - sortiert nach Name].Ort, [Kunden - sortiert nach Name].Tel, [Kunden - sortiert nach Name].Fax, [Kunden - sortiert nach Name].Bemerkung, [Kunden - sortiert nach Name].Branche, [Kunden - sortiert nach Name].KNR, [Kunden - sortiert nach Name].Rabatt, [Kunden - sortiert nach Name].Zuletzt_Geaendert, [Kunden - sortiert nach Name].Distanz
FROM [Kunden - sortiert nach Name]
GROUP BY [Kunden - sortiert nach Name].ID, [Kunden - sortiert nach Name].Kunde, [Kunden - sortiert nach Name].Adresse, [Kunden - sortiert nach Name].PLZ, [Kunden - sortiert nach Name].Ort, [Kunden - sortiert nach Name].Tel, [Kunden - sortiert nach Name].Fax, [Kunden - sortiert nach Name].Bemerkung, [Kunden - sortiert nach Name].Branche, [Kunden - sortiert nach Name].KNR, [Kunden - sortiert nach Name].Rabatt, [Kunden - sortiert nach Name].Zuletzt_Geaendert, [Kunden - sortiert nach Name].Distanz
HAVING ((([Kunden - sortiert nach Name].PLZ) Between [Von PLZ] And [Bis PLZ]))
ORDER BY [Kunden - sortiert nach Name].PLZ;


So, dann habe ich diesen Code mit dem Like da mal eingebaut.
Dann sieht das so aus...

SELECT [Kunden - sortiert nach Name].ID, [Kunden - sortiert nach Name].Kunde, [Kunden - sortiert nach Name].Adresse, [Kunden - sortiert nach Name].PLZ, [Kunden - sortiert nach Name].Ort, [Kunden - sortiert nach Name].Tel, [Kunden - sortiert nach Name].Fax, [Kunden - sortiert nach Name].Bemerkung, [Kunden - sortiert nach Name].Branche, [Kunden - sortiert nach Name].KNR, [Kunden - sortiert nach Name].Rabatt, [Kunden - sortiert nach Name].Zuletzt_Geaendert, [Kunden - sortiert nach Name].Distanz
FROM [Kunden - sortiert nach Name]
GROUP BY [Kunden - sortiert nach Name].ID, [Kunden - sortiert nach Name].Kunde, [Kunden - sortiert nach Name].Adresse, [Kunden - sortiert nach Name].PLZ, [Kunden - sortiert nach Name].Ort, [Kunden - sortiert nach Name].Tel, [Kunden - sortiert nach Name].Fax, [Kunden - sortiert nach Name].Bemerkung, [Kunden - sortiert nach Name].Branche, [Kunden - sortiert nach Name].KNR, [Kunden - sortiert nach Name].Rabatt, [Kunden - sortiert nach Name].Zuletzt_Geaendert, [Kunden - sortiert nach Name].Distanz
HAVING ((([Kunden - sortiert nach Name].PLZ)LIKE [PLZ Bereich] & "*"
ORDER BY [Kunden - sortiert nach Name].PLZ;

Natürlich Fehlermeldung....

Schade, am besten wäre die Lösung mit VBA.
Wie ich es geschrieben habe. Einfach von den 5 Stellen der PLZ die ersten 2 nehmen.

Aber wo, bzw. wie kann ich die kürzen?
Ich habe ne Menge VBA Code in den ganzen Formularen, aber in einer Abfrage?
In den Formulareigenschaften kann man in den VBA-Code springen, aber in der Abfrage geht das wohl nicht.

Es muss doch irgendwie möglich sein in der Entwurfsansicht als Filterkriterium zu sagen, nur die ersten beiden Stellen berücksichtigen.....

Titel: Re: PLZ Filtern VON....BIS
Beitrag von: database am Januar 18, 2015, 19:07:08
Hallo,

ZitatNatürlich Fehlermeldung....

Ich denke es wird an den 'vergessenen' Klammern in deiner Abfragegestaltung im LIKE-Bereich liegen



SELECT [Kunden - sortiert nach Name].ID, [Kunden - sortiert nach Name].Kunde, [Kunden - sortiert nach Name].Adresse, [Kunden - sortiert nach Name].PLZ, [Kunden - sortiert nach Name].Ort, [Kunden - sortiert nach Name].Tel, [Kunden - sortiert nach Name].Fax, [Kunden - sortiert nach Name].Bemerkung, [Kunden - sortiert nach Name].Branche, [Kunden - sortiert nach Name].KNR, [Kunden - sortiert nach Name].Rabatt, [Kunden - sortiert nach Name].Zuletzt_Geaendert, [Kunden - sortiert nach Name].Distanz
FROM [Kunden - sortiert nach Name]
GROUP BY [Kunden - sortiert nach Name].ID, [Kunden - sortiert nach Name].Kunde, [Kunden - sortiert nach Name].Adresse, [Kunden - sortiert nach Name].PLZ, [Kunden - sortiert nach Name].Ort, [Kunden - sortiert nach Name].Tel, [Kunden - sortiert nach Name].Fax, [Kunden - sortiert nach Name].Bemerkung, [Kunden - sortiert nach Name].Branche, [Kunden - sortiert nach Name].KNR, [Kunden - sortiert nach Name].Rabatt, [Kunden - sortiert nach Name].Zuletzt_Geaendert, [Kunden - sortiert nach Name].Distanz
HAVING ((([Kunden - sortiert nach Name].PLZ)LIKE [PLZ Bereich] & "*"))
ORDER BY [Kunden - sortiert nach Name].PLZ;



EDIT:
Zitataber in der Abfrage geht das wohl nicht
Abfrage Entwurf .... Ansicht ... SQL-Ansicht ?!
Titel: Re: PLZ Filtern VON....BIS
Beitrag von: ebs17 am Januar 18, 2015, 19:23:49
ZitatNatürlich Fehlermeldung....
Diese ausdrucken, abheften und vergraben, aber ja nicht ansehen - es könnte ja ein Hinweis zum konkreten Anlass des Fehlers geliefert werden.

ZitatSchade, am besten wäre die Lösung mit VBA
Genau, und in China kommt man mit Spanisch am weitesten.

ZitatIch habe NULL Plan von SQL.
Wenn man vergleichsweise als Autofahrer keine Verkehrszeichen kennt, sollte man gewisse Überlegungen anstellen ...

Vielleicht solltest Du mal Deine Einstellung überprüfen.
PARAMETERS
   PLZ_Bereich Text
;
SELECT
   ID,
   Kunde,
   Adresse,
   PLZ,
   Ort,
   Tel,
   Fax,
   Bemerkung,
   Branche,
   KNR,
   Rabatt,
   Zuletzt_Geaendert,
   Distanz
FROM
   [Kunden - sortiert nach Name]
WHERE
   PLZ LIKE [PLZ_Bereich] & "*"
ORDER BY
   PLZ
;

(Bei mir funktioniert so etwas.)

Eine Gruppierung über alle vorhandenen Felder einschließlich ID(!) dürfte funktionsfrei sein, macht allerdings etwas Aufwand für die Maschine. Dies habe ich entfernt wie auch einiges anderes.
Vielleicht hebt das die Übersicht.

Siehe auch SQL ist leicht (0) - Vorspiel (http://www.ms-office-forum.net/forum/showthread.php?t=317692).
Titel: Re: PLZ Filtern VON....BIS
Beitrag von: accessy am Januar 18, 2015, 19:28:58
Wow!
Ist es denn die "Bility"....
LIKE [PLZ Bereich] & "*"))
Jetzt funktioniert es genau nach meinen Vorstellungen..

Vielen Dank für die Hilfe...
Schönen Abend noch