Neuigkeiten:

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

Mobiles Hauptmenü

Abfrage liefert falsches Ergebnis

Begonnen von harko38, Juli 09, 2019, 13:21:23

⏪ vorheriges - nächstes ⏩

harko38

Hallo Community

Ich habe eine ziemlich umfangreiche Tabelle. Auf diese Tabelle habe ich eine Abfrage erstellt und es werden auch alle Ergebnisse geliefert.
Sobald ich aber ein Kriterium verwende werden einige Datensätze unterschlagen. Da ich keinen Fehler finden konnte habe ich versucht als Kriterium wie "*"  einzugeben. Da sollten doch ebenfalls alle Datensätze angezeigt werden, egal was drin steht. Es werden aber auch hier welche unterschlagen.
Gibts jetzt eine Möglichkeit mir anzuzeigen welche Datensätze da nicht geliefert werden? (Da dürfte ja bei der Datenerfassung irgend etwas schief gelaufen sein)
lg Harry

DF6GL

Hallo,

vielleicht könntest Du den SQL-String   der Abfrage (mit Kriterium) und den/die Datentyp/en der abgefragten Felder zeigen...

harko38

SELECT Fahrraddiebstahl.FDID, Fahrraddiebstahl.PAD, Fahrraddiebstahl.Jahr, Fahrraddiebstahl.Pi, Fahrraddiebstahl.StrIDRef, htbl_straßen.Straße, Fahrraddiebstahl.Hausnummer, Fahrraddiebstahl.[Tatort-Bezeichnung], Fahrraddiebstahl.WO, Fahrraddiebstahl.Tatzeit, Fahrraddiebstahl.[Tatzeit bis], Fahrraddiebstahl.Geschädigter, Fahrraddiebstahl.Vorname, Fahrraddiebstahl.Art, Fahrraddiebstahl.Bauart, Fahrraddiebstahl.Marke, Fahrraddiebstahl.Type, Fahrraddiebstahl.[Codier-Nummer], Fahrraddiebstahl.[Rahmen-Nummer], Fahrraddiebstahl.[Rahmen-Nummer2], Fahrraddiebstahl.Farbe1, Fahrraddiebstahl.Farbe2, Fahrraddiebstahl.Farbe3, Fahrraddiebstahl.Gänge, Fahrraddiebstahl.Zeitwert, Fahrraddiebstahl.zustandegebracht, Fahrraddiebstahl.TäterName, Fahrraddiebstahl.TäterVorname, Fahrraddiebstahl.TäterGebDat, Fahrraddiebstahl.sonstiges
FROM htbl_straßen INNER JOIN Fahrraddiebstahl ON htbl_straßen.StrID = Fahrraddiebstahl.StrIDRef
WHERE (((Fahrraddiebstahl.PAD) Like "*" & [Formulare]![frm_suche]![txt_pad] & "*") AND ((htbl_straßen.Straße) Like "*" & [Formulare]![frm_suche]![txt_straße] & "*") AND ((Fahrraddiebstahl.Geschädigter) Like "*" & [Formulare]![frm_suche]![txt_geschaedigter] & "*") AND ((Fahrraddiebstahl.Art) Like "*" & [Formulare]![frm_suche]![txt_art] & "*") AND ((Fahrraddiebstahl.Bauart) Like "*" & [Formulare]![frm_suche]![txt_bauart] & "*") AND ((Fahrraddiebstahl.Farbe1) Like "*") AND ((Fahrraddiebstahl.TäterName) Like "*") AND ((Year([Tatzeit])) Like [Jahr eingeben] & "*"));

harko38

Das ist jetzt vielleicht ein wenig verwirrend. Die Kriterien die jetzt angeführt sind funktionieren auch. Wenn ich allerdings bei den Feldern Codier-Nummer oder Rahmen-Nummer ein Kriterium eingebe dann fehlen mir da 18 Datensätze (es sind insgesamt 9440 Datensätze)
Die Daten habe ich ursprünglich aus mehreren unterschiedlich formatierten Excel-Listen kopiert. Ich nehme an dass da irgendwo der Fehler liegt. Mein Problem ist eben dass ich gerne diese 18 Datensätze sehen würde und dort eventuell falsch formatierte Einträge korrigieren kann.
Wie komm ich an diese Datensätze ????

Die Datentypen der betreffenden Felder sind "Kurzer Text"

lg Harry

MzKlMu

#4
Hallo,
leere Felder (Null) bleiben bei Like "*" unberücksichtigt, werden also nicht angezeigt.

Das eigentliche Problem, dürfte aber die ungeeignete Datenbankstruktur sein, wenn das wirklich nur eine Tabelle ist.
Gruß Klaus

DF6GL

Hallo,

zusätzlich:

Zitat...& "*") AND ((Fahrraddiebstahl.Farbe1) Like "*") AND ((Fahrraddiebstahl.TäterName) Like "*") AND ((Year([Tatzeit])) = [Jahr eingeben] & "*"));

Mindestens "Year([Tatzeit])"   ist kein Text , eher eine Ganzzahl, so dass ein "=" an dieser Stelle angebracht ist.


ZitatWenn ich allerdings bei den Feldern Codier-Nummer oder Rahmen-Nummer ein Kriterium eingebe

Wäre sinnvoll, diesen Zustand zu posten....

harko38

Die Datenbankstruktur ist alles andere als schön - das weiß ich. Die Aufteilung bzw. Normalisierung ist auch noch geplant. Aber dadurch dass ich die Daten aus über Jahre gesammelten Excel-Listen mit unterschiedlichsten Formatierungen und Bezeichnungen erhalten habe war ich fürs erste damit überfordert. Zumal das Ergebnis ja auf "schnell" erwartet wurde.
Mit den "leeren Feldern" könnte ich vielleicht fündig werden. Kann ich danach suchen?

Ja es sind natürlich nicht alle Felder "Kurzer Text" aber die Felder in denen ich noch Kriterien anfügen möchte sind solche.

harko38

SELECT Fahrraddiebstahl.FDID, Fahrraddiebstahl.PAD, Fahrraddiebstahl.Jahr, Fahrraddiebstahl.Pi, Fahrraddiebstahl.StrIDRef, htbl_straßen.Straße, Fahrraddiebstahl.Hausnummer, Fahrraddiebstahl.[Tatort-Bezeichnung], Fahrraddiebstahl.WO, Fahrraddiebstahl.Tatzeit, Fahrraddiebstahl.[Tatzeit bis], Fahrraddiebstahl.Geschädigter, Fahrraddiebstahl.Vorname, Fahrraddiebstahl.Art, Fahrraddiebstahl.Bauart, Fahrraddiebstahl.Marke, Fahrraddiebstahl.Type, Fahrraddiebstahl.[Codier-Nummer], Fahrraddiebstahl.[Rahmen-Nummer], Fahrraddiebstahl.[Rahmen-Nummer2], Fahrraddiebstahl.Farbe1, Fahrraddiebstahl.Farbe2, Fahrraddiebstahl.Farbe3, Fahrraddiebstahl.Gänge, Fahrraddiebstahl.Zeitwert, Fahrraddiebstahl.zustandegebracht, Fahrraddiebstahl.TäterName, Fahrraddiebstahl.TäterVorname, Fahrraddiebstahl.TäterGebDat, Fahrraddiebstahl.sonstiges
FROM htbl_straßen INNER JOIN Fahrraddiebstahl ON htbl_straßen.StrID = Fahrraddiebstahl.StrIDRef
WHERE (((Fahrraddiebstahl.PAD) Like "*" & [Formulare]![frm_suche]![txt_pad] & "*") AND ((htbl_straßen.Straße) Like "*" & [Formulare]![frm_suche]![txt_straße] & "*") AND ((Fahrraddiebstahl.Geschädigter) Like "*" & [Formulare]![frm_suche]![txt_geschaedigter] & "*") AND ((Fahrraddiebstahl.Art) Like "*" & [Formulare]![frm_suche]![txt_art] & "*") AND ((Fahrraddiebstahl.Bauart) Like "*" & [Formulare]![frm_suche]![txt_bauart] & "*") AND ((Fahrraddiebstahl.[Codier-Nummer]) Like "*") AND ((Fahrraddiebstahl.Farbe1) Like "*") AND ((Fahrraddiebstahl.TäterName) Like "*") AND ((Year([Tatzeit])) Like [Jahr eingeben] & "*"));



Jetzt fehlen mir gegenüber vorhin 18 Datensätze .....

harko38

Ich habe jetzt mit dem Kriterium "Ist NULL" die 18 Datensätze gefunden .......


harko38

Ich glaube ich darf mich erstmal recht herzlich bedanken. Ich habe jetzt die "Null-Felder" mit Daten ersetzt und komme nun zum gewünschten Ergebnis.

Jetzt kann ich zumindest Daten liefern. Mein nächster Schritt wird sein dass ich mich um eine ordentliche Struktur kümmern werde.

Danke vielmals

MzKlMu

Hallo,
es fehlen die Datensätze die in den Kriteriumfeldern nichts drin stehen haben (NULL).
Suchen kannst Du diese mit IST NULL als Kriterium.
Gruß Klaus

harko38

Brauche bitte nochmal Hilfe

Kann ich diese Felder mit IST NULL Werten ersetzen? Es soll kein Wert drin stehn.
Und wie kann ich das bei künftigen Dateneingaben verhindern wenn ein solches Feld einach nur leer sein soll?

MzKlMu

Gruß Klaus

harko38

Mir ist der Unterschied noch nicht so ganz klar. Bei den 9440 Datensätzen sind in einem bestimmten Feld ja mehrere Datensätze - ich sag mal leer und werden trotzdem bei der Abfrage angezeigt. Diejenigen die NULL als Inhalt haben werden nicht angezeigt. Diese hätte ich auch gerne so korrigiert dass sie angezeigt werden. Wie löse ich das.
Und wie verhindere ich das bei Neueingaben?
Bitte Danke

MzKlMu

Hallo,
ein leeres Feld ist NULL. Wenn in ein Tabellenfeld nichts eingetragen wird, ist es NULL. Prüfe mal den Inhalt der vermeintlich leeren Felder. Da könnte ein Leerzeichen drin stehen.

Prüfe mal mit einem Feld und einem Kriterium.

Gruß Klaus