Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: harko38 am Juli 09, 2019, 13:21:23

Titel: Abfrage liefert falsches Ergebnis
Beitrag von: harko38 am Juli 09, 2019, 13:21:23
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
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: DF6GL am Juli 09, 2019, 13:30:32
Hallo,

vielleicht könntest Du den SQL-String   der Abfrage (mit Kriterium) und den/die Datentyp/en der abgefragten Felder zeigen...
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: harko38 am Juli 09, 2019, 14:47:55
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] & "*"));
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: harko38 am Juli 09, 2019, 15:02:45
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
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: MzKlMu am Juli 09, 2019, 15:05:08
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.
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: DF6GL am Juli 09, 2019, 15:12:45
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....
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: harko38 am Juli 09, 2019, 15:16:13
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.
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: harko38 am Juli 09, 2019, 15:17:47
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 .....
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: harko38 am Juli 09, 2019, 15:19:55
Ich habe jetzt mit dem Kriterium "Ist NULL" die 18 Datensätze gefunden .......

Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: harko38 am Juli 09, 2019, 15:24:12
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
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: MzKlMu am Juli 09, 2019, 15:26:01
Hallo,
es fehlen die Datensätze die in den Kriteriumfeldern nichts drin stehen haben (NULL).
Suchen kannst Du diese mit IST NULL als Kriterium.
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: harko38 am Juli 09, 2019, 16:23:48
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?
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: MzKlMu am Juli 09, 2019, 16:32:56
Hallo,
NULL ist ein leeres Feld.
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: harko38 am Juli 09, 2019, 16:45:02
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
Titel: Re: Abfrage liefert falsches Ergebnis
Beitrag von: MzKlMu am Juli 09, 2019, 16:52:50
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.