Kriterium liefert falsches Ergebnis

Moderator: ModerationP

Re: Kriterium liefert falsches Ergebnis

Beitragvon Hias90 » 05. Jan 2018, 11:09

Hallo MissPh!,

das mit denn Parametern war so gemeint, das wenn ich die Abfrage ausführe ohne das Formular offen zu haben, nicht die gewohnte abfrage der Parameter erscheint.

Das sollte es ja dann machen oder liege ich da falsch?

Und ich habe trotzdem versucht im Formular die Parameter auszuwählen doch es passierte nichts.


anbei der gewünschte SQL-Code:
Code: Alles auswählen
SELECT Auftragsliste.Priorität, Auftragsliste.Auftrag, Auftragsliste.Material, Auftragsliste.Materialkurztext, Auftragsliste.ArbPlatz, [APs - E2A].Kurzbezeichnung, Auftragsliste.Disponent, Auftragsliste.[Spät Ende 2], Auftragsliste.Sollmenge, Auftragsliste.[Machb Mng], Auftragsliste.[Gem Menge], Auftragsliste.Status, IIf([Status] Like "*SPER*","Sper","") AS [Sper status]
FROM Auftragsliste INNER JOIN [APs - E2A] ON Auftragsliste.ArbPlatz = [APs - E2A].ArbPlatz
WHERE (((Auftragsliste.Sollmenge)>[Machb Mng]) AND ((((CLng([Aufträge nach Restmengen sortiert].[Machb Mng])) Between [Formulare]![Restmengen]![Machbare Menge von] And [Formulare]![Restmengen]![Machbare Menge bis]))) AND ((CLng([Aufträge nach Restmengen sortiert].[Machb Mng])) Between [Formulare]![Restmengen]![Machbare Menge von] And [Formulare]![Restmengen]![Machbare Menge bis]));
____________________________
Mit freundlichen Grüßen Hias90
Benutzeravatar
Hias90
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 22
Registriert: 18. Dez 2017, 07:23

Re: Kriterium liefert falsches Ergebnis

Beitragvon MissPh! » 06. Jan 2018, 23:14

Hi,

woher kommt "Aufträge nach Restmengen sortiert"?
Die Tabelle oder Abfrage ist in der Abfrage nicht enthalten, logisch, dass danach gefragt wird.

Übrigens sollte im SQL-Code stets die englische Syntax verwendet werden, also heißt es auch "Forms" anstelle von "Formulare".
MissPh!

(mit selbstverständlich stets freundlichen Grüßen!)
MissPh!
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 32382
Registriert: 07. Apr 2006, 14:29
Wohnort: NRW

Re: Kriterium liefert falsches Ergebnis

Beitragvon Hias90 » 09. Jan 2018, 10:29

Hallo MissPH!

Vielen Dank für die Antwort.

Kannst du mir bitte genau sagen wo ich was einsetzen muss und das mit denn Englischen Begriffen (glaub ich zu wissen das die von Access selber umgeworfen werden).

Und ich habe dies nicht im SQL-Code erstellt sondern normal in der Entwickleransicht, nur denn SQL-Code dann anzeigen lassen und kopiert.

Und die "Aufträge nach Restmengen sortiert" ist eine Abfrage.
____________________________
Mit freundlichen Grüßen Hias90
Benutzeravatar
Hias90
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 22
Registriert: 18. Dez 2017, 07:23

Re: Kriterium liefert falsches Ergebnis

Beitragvon Nouba » 09. Jan 2018, 11:12

Wer soll so etwas lesen? Ist der Editor in der Werkstatt? Außerdem empfehle ich nur von den Zeichen A..Za..z_ bei allen Namen Gebrauch zu machen. Bei Tabellen und Abfragen kannst Du dann jeweils in der Feld-Eigenschaft Beschriftung schöne Namen mit Sonder- und Leerzeichen verwenden, die als Überschrift angezeigt werden.

Versuche einmal die Parameter explizit in der Abfrage festzulegen.
Code: Alles auswählen
PARAMETERS [Formulare]![Restmengen]![Machbare Menge von] Long,
           [Formulare]![Restmengen]![Machbare Menge bis] Long;
SELECT Auftragsliste.Priorität,
       Auftragsliste.Auftrag,
       Auftragsliste.Material,
       Auftragsliste.Materialkurztext,
       Auftragsliste.ArbPlatz,
       [APs - E2A].Kurzbezeichnung,
       Auftragsliste.Disponent,
       Auftragsliste.[Spaet Ende 2],
       Auftragsliste.Sollmenge,
       Auftragsliste.[Machb Mng],
       Auftragsliste.[Gem Menge],
       Auftragsliste.Status,
       IIf([Status] Like "*SPER*","Sper") AS [Sper status]
FROM   Auftragsliste
       INNER JOIN [APs - E2A]
               ON Auftragsliste.ArbPlatz = [APs - E2A].ArbPlatz
WHERE  Auftragsliste.Sollmenge > [Machb Mng] AND
       CLng( [Auftraege nach Restmengen sortiert].[Machb Mng] ) Between
                 [Formulare]![Restmengen]![Machbare Menge von] And
                 [Formulare]![Restmengen]![Machbare Menge bis] AND
       CLng( [Auftraege nach Restmengen sortiert].[Machb Mng] ) Between
                 [Formulare]![Restmengen]![Machbare Menge von] And
                 [Formulare]![Restmengen]![Machbare Menge bis];
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Nouba
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 16116
Registriert: 13. Mär 2006, 12:55
Wohnort: Berlin

Re: Kriterium liefert falsches Ergebnis

Beitragvon Gast » 09. Jan 2018, 11:33

Na ja,

verglichen mit der ursprünglichen fehlerhaften abfragen sind ja jetzt mehr und neue Fehler reingekommen.

Es kam ja irgendwann der punkt bzw. die nicht weiter hinterfragte entscheidung des TE

ich glaube an meiner Umsetzung stimmt etwas nicht habe jetzt folgendes als Kriterium eingegeben:
Code: Alles auswählen
    (((CLng(Aufträge nach Restmengen sortiert.Machb Mng))Zwischen [Formulare]![Restmengen]![Machbare Menge von] Und [Formulare]![Restmengen]![Machbare Menge bis]))



Das führt jetzt dazu, dass
a) eine vollkommen überflüssige und außerdem im SQL-Kontext unbekannte Abfrage in der WHERE-Bedingung steht
b) das Feld [Machb Mng] nicht mehr eindeutig ist.. es gibt eines davon in der Auftragsliste und eines in diese vom Himmel gefallenen [Aufträge nach Restmengen sortiert]-Abfrage
c) und weiterhin ist die "manuell reinkopierte Bedingung ZWEImal reinkopiert wurden.

@Hias:
Bitte, was soll denn fachlich passieren?
Ich sehe eigentlich nur
- eine beteiligte Tabelle (Auftragsliste) - das ergänzend angezeigte Lyrikfeld "[APs - E2A].Kurzbezeichnung" hat ja nix mit der Logik zu tun
- Zwei Bedingungen, nämlich "Auftragsliste.Sollmenge > Auftragsliste.[Machb Mng]" und "Auftragsliste.[Machb Mng] zwischen den Formular-Von/Bis-Mengen".

Mehr sehe ich nicht, also wenn es wirklich einen vernunftbasierten Grund für diese [Aufträge nach Restmengen sortiert]-Abfrage gibt, dann teil uns den doch mit.

Grüße
Biber
Gast
 

Re: Kriterium liefert falsches Ergebnis

Beitragvon Hias90 » 10. Jan 2018, 15:59

Hallo,

@ Nouba

das mit den Leerzeichen, war Unachtsamkeit meinerseits. Ich bin wie gesagt noch am Anfang mit meinem Verständnis und werde dies künftig besser berücksichtigen.

Und wenn du das, mit dem Editor in der Werkstatt, meinst das der SQL-Code sehr verwirrend aneinander hängt, gebe ich dir recht.
Ich hatte die Abfrage ja nicht in der SQL-Ansicht geschrieben und das was ich geschickt habe hat Access aus meiner Abfrage erstellt.

Deinen Code habe ich durch meinen ersetzt, nun kommt aber 3 Parameterwert Abfragen: "Auftragsliste.Spaet Ende 2", "Auftraege nach Restmengen sortiert.Machb Mng" und "Aufträge nach Restmengen sortiert.Spät Ende 2"

_________________________________________________________________

@Biber

Ich wollte hier ja nicht noch mehr Fehler einbauen ich habe nur versucht den Tipp umzusetzten.

Möchte dir gerne erklären warum ich es so mache bzw was ich vor habe.

Mein Ziel ist das ich in einem Formular über 2 Dropdown Menüs (Listenfelder) eine Machbare Menge von und eine Machbare Menge bis auswählen möchte.

Dann sollen in dem Unterformular alle Aufträge kommen, wo die Machbare Menge zwischen diesen 2 Werten liegt (incl. denn Werten).

Mein Ansatz war dann, das ich eine Abfrage (Aufträge nach Restmengen sortiert) erstellte mit allen Felder aus den Tabellen (Auftragsliste) und (APs - E2A).

In dieser Abfrage wollte ich eben diese 2 (Listenfelder) als Kriterium anwenden. Ging alles gut bis ich eben merkte das nach meinem ersten Versuch (siehe ganz oben im Beitrag) das bei einer Suche von 1 bis 5 z.b. auch Aufträge angezeigt wurden mit z.b. 35 Machbare Menge. Wird aber trotzdem in der Auswertung mit 5 angezeigt, dies weiß ich weil ich mir hier die Auftragsnr gemerkt habe, dann das Kriterium gelöscht habe und bei dem Auftrag geschaut habe und da Stand nicht 5 sondern 35. Somit würde ich sagen der sucht eben nur ob in irgendeinem Datensatz Zahlen drin sind die ich als Kriterium anwende und verfälscht die Anzeige.
In der Abfrage habe ich auch noch ein zusätzliches Kriterium drin und zwar bei Sollmenge (>[Machb Mng]), weil ich nur Aufträge sehen möchte wo es eine Restmenge gibt.
Bei einem 5 ST Auftrag wo noch 5 ST zu machen sind möchte ich keinen Datensatz angezeigt bekommen.
Und die verbleibenden Datensätze sollen eben dann durch die 2 (Listenfelder) eingeschränkt werden.

Die Tabelle Auftragsliste ist eine verknüpfte Tabelle aus Excel, somit kann ich da nicht viel machen und habe deswegen eine Abfrage erstellt um dies zu lösen.

Habe alles ganz oben im Beitrag ausführlich geschrieben, oder habe ich da was vergessen?

Wenn die Versuche verwirrend, bitte ich meinen Text von oben zu lesen und mir mitzuteilen was er noch für Informationen braucht.
____________________________
Mit freundlichen Grüßen Hias90
Benutzeravatar
Hias90
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 22
Registriert: 18. Dez 2017, 07:23

Re: Kriterium liefert falsches Ergebnis

Beitragvon GastBiber » 10. Jan 2018, 17:28

Moin Hias90,

sorry, ich bin ja auch eher Anfänger im Bereich SQL.
Aber nach meinem Empfinden solle der Krams so laufen:
Code: Alles auswählen
SELECT <bla>
FROM   Auftragsliste
       INNER JOIN [APs - E2A]
               ON Auftragsliste.ArbPlatz = [APs - E2A].ArbPlatz
WHERE  Auftragsliste.Sollmenge > Auftragsliste.[Machb Mng]
   AND    CLng( [Auftragsliste].[Machb Mng] ) Between
                 [Formulare]![Restmengen]![Machbare Menge von] And
                 [Formulare]![Restmengen]![Machbare Menge bis]
;


Aber vielleicht habe ich das wirklich nicht verstanden.
Ich lasse jetzt lieber die Profis ran.

Grüße
Biber
GastBiber
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 735
Registriert: 18. Sep 2014, 18:03

Re: Kriterium liefert falsches Ergebnis

Beitragvon Hias90 » 12. Jan 2018, 07:22

Hallo Biber,

was muss ich denn statt <bla> eintragen?

Da kommt bei mir Syntax Fehler.

Und der ; am Ende passt auch oder?

Bin leider in Sachen SQL erfahrungslos und warte noch darauf dies über eine Schulung zu lernen oder durch eine Internetseite oder eine Person zu verstehen.
____________________________
Mit freundlichen Grüßen Hias90
Benutzeravatar
Hias90
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 22
Registriert: 18. Dez 2017, 07:23

Re: Kriterium liefert falsches Ergebnis

Beitragvon ComputerVersteher » 12. Jan 2018, 09:58

Hias90 hat geschrieben:Meine Kenntnisse sind ca. 9h Einsteigerkurs (Tabellen, Abfragen und Formulare erstellen / filtern)
Da sollte die Bedeutung von SELECT erklärt worden sein. (Welche Felder will ich selektieren/auswählen/anzeigen) :wink:

Du kannst also Dein altes SELECT (bis ausschließlich FROM) weiter benuzten, Biber hat das nur der Übersichtlichkeit wegen weggelassen.

Hias90 hat geschrieben:Und wenn du das, mit dem Editor in der Werkstatt, meinst das der SQL-Code sehr verwirrend aneinander hängt, gebe ich dir recht.
Ich hatte die Abfrage ja nicht in der SQL-Ansicht geschrieben und das was ich geschickt habe hat Access aus meiner Abfrage erstellt.
Intention von Nouba war Code aus Access in Editor kopieren und formatieren lassen (z.B. Notepad++ mit Plugin) oder eine Webseiten nutzen (z.B. Instant SQL Formatter).

Hias90 hat geschrieben:Bin leider in Sachen SQL erfahrungslos und warte noch darauf dies über eine Schulung zu lernen oder durch eine Internetseite oder eine Person zu verstehen.
Wer suchet der findet :wink:

Gruß CV
"Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."
Benutzeravatar
ComputerVersteher
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 294
Registriert: 23. Jul 2016, 18:17

Re: Kriterium liefert falsches Ergebnis

Beitragvon GastBiber » 12. Jan 2018, 10:30

Moin Hias90,

was muss ich denn statt <bla> eintragen?


hat ja inzwischen schon der Computerversteher erklärt (danke dafür).

im Text "SELECT <bla> FROM Auftragsliste .." bedeutet <bla> nur <bereits lauffähige Anweisungen>.
Du kannst also die ganze Feldliste, die du bereits erarbeitet hast. im unveränderten Zustand belassen.

Und der oder das ";" am Ende war auch richtig, aber nicht wichtig.
War nicht als Fehlerkorrektur gemeint, sondern kam automatisch, so wie ich oftmals Sätze mit einem Punkt beende.
Wird das Statement nicht mit einem Semikolon beendet, dann toleriert Access das auch.

Grüße
Biber
GastBiber
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 735
Registriert: 18. Sep 2014, 18:03

Re: Kriterium liefert falsches Ergebnis

Beitragvon Hias90 » 16. Jan 2018, 16:16

Hallo,

Vielen Dank für die Erklärung.

ich habe jetzt folgenden SQL Code getestet und wenn ich von 1 bis 10 filtern will zeigt er mir nur Datensätze mit 1 Machbare Menge und 10 Machbare Menge.

Wenn ich 1-100 filtere zeigt er mir alle Datensätze mit 1 und 10 und 100.

Code: Alles auswählen
SELECT Auftragsliste.Priorität,
Auftragsliste.Auftrag,
Auftragsliste.Material,
Auftragsliste.Materialkurztext,
Auftragsliste.ArbPlatz,
[APs - E2A].Kurzbezeichnung,
Auftragsliste.Disponent,
Auftragsliste.[Spät Ende 2],
Auftragsliste.Sollmenge,
Auftragsliste.[Machb Mng],
Auftragsliste.[Gem Menge],
Auftragsliste.Status,
IIf([Status] Like "*SPER*","Sper","") AS [Sper status]

FROM Auftragsliste INNER JOIN [APs - E2A] ON Auftragsliste.ArbPlatz = [APs - E2A].ArbPlatz

WHERE (((Auftragsliste.Sollmenge)>[Auftragsliste].[Machb Mng]) AND ((CLng([Auftragsliste].[Machb Mng])) Between [Formulare]![Restmengen]![Machbare Menge von] And [Formulare]![Restmengen]![Machbare Menge bis]));
____________________________
Mit freundlichen Grüßen Hias90
Benutzeravatar
Hias90
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 22
Registriert: 18. Dez 2017, 07:23

Re: Kriterium liefert falsches Ergebnis

Beitragvon Gast » 16. Jan 2018, 17:26

Moin Hias90,

dann bleibt als letzter Versuch nur noch

Code: Alles auswählen
...
WHERE (((Auftragsliste.Sollmenge)>[Auftragsliste].[Machb Mng])
AND ((CLng([Auftragsliste].[Machb Mng])) Between CLng([Formulare]![Restmengen]![Machbare Menge von]) And Clng([Formulare]![Restmengen]![Machbare Menge bis])));



Dann ist doch alles zwangsgecastet auf denselben Datentyp... wobei ich dachte, die Umwandlung der Formular-Mengen in etwas numerisches hätte ich schon ein paar Kommentare früher vorgeschlagen.
Aber das hatte nach deinen Tests nichts gebracht.

Mehr Ideen habe ich nicht, dann musst du auf einen der Profis warten.

Grüße
Biber
Gast
 

Re: Kriterium liefert falsches Ergebnis

Beitragvon Gast » 16. Jan 2018, 20:11

Wenn ich 1-100 filtere zeigt er mir alle Datensätze mit 1 und 10 und 100.

Das ist immer noch Textfilterung, so wie auch eingangs im Thema.
Da sollte man vorab analysieren, womit man wirklich arbeitet.

Code: Alles auswählen
Between [Formulare]![Restmengen]![Machbare Menge von] And [Formulare]![Restmengen]![Machbare Menge bis

Es ist sichergestellt, dass die beiden Steuerelemente Zahlen zurückgeben und keinen Text, z.B. in der Form, dass da als Format Zahlenformate eingestellt sind?

Da voraussichtlich die Exceltabelle Probleme macht: Wie sieht diese aus? Ist das eine Liste mit einer Titelzeile, oder gibt es da weitere Besonderheiten wie Leerzeilen, optische Abtrennungen mit Strichen, verbundene Zellen oder anderen exceltypischen Kram?

Daneben könnte man testen, wie die verknüpfte Exceltabelle in der SQL-Handhabung ankommt. Testabfrage:
Code: Alles auswählen
SELECT COUNT(*) AS Datensaetze, COUNT([Machb Mng]) AS Inhalte
FROM Auftragsliste

Stimmen die ermittelten Anzahlen mit der Datensatzanzahl in der Exceltabelle überein?

Datentypprüfung:
Code: Alles auswählen
' Code in ein Standardmodul einfügen und mit Taste F5 starten
Sub Spaltendatentyp()
   Dim rs As DAO.Recordset
   Set rs = CurrentDb.Openrecordset("SELECT [Machb Mng] FROM Auftragsliste", dbOpenForwardOnly)
   MsgBox rs.Fields(0).Type      ' Rückgabe 10 wäre dbText
   rs.Close
End Sub


Was kannst Du dazu sagen?
Gast
 

Re: Kriterium liefert falsches Ergebnis

Beitragvon Hias90 » 17. Jan 2018, 08:33

Hallo ihr 2,

sobald ich die Tage etwas Luft habe versuche ich eure Vorschläge zu testen.

Und ich werde versuchen eine Test Datenbank zu erstellen wo ich euch hochladen kann dann könnt ihr euch meinen kläglichen Versuch mal anschauen.

Melde mich auf jedenfall die Tage mit der Datenbank und denn Ergebnissen.
____________________________
Mit freundlichen Grüßen Hias90
Benutzeravatar
Hias90
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 22
Registriert: 18. Dez 2017, 07:23

Vorherige

Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste