2017-01-05 5 views
0

Grundsätzlich verwende ich MS Access 2013, um alle aktiven Arbeitselemente zu importieren, die einer bestimmten Gruppe von einer API zugewiesen sind, und wählen Sie die Daten in 2 neue Tabellen (Anforderungen & Request_Tasks).SQL Query funktioniert nicht mehr und kann nicht herausfinden warum

Ich habe dann ein Formular aus einer Abfrage, um bestimmte Felder aus den 2 Tabellen auszuwählen.

Bis gestern funktionierte es ohne Probleme und nichts hat sich geändert.

Alle Daten erscheinen in den 2 Tabellen, so dass der Import von der API funktioniert.

Wenn die Abfrage die Daten aus den 2 Tabellen (die bereits mit den richtigen Daten gefüllt sind) ausgewählt wird, gibt die Abfrage nur Daten aus der Requests-Tabelle mit leeren Feldern anstelle von Daten aus Request_Tasks zurück.

Der seltsame Teil ist, dass von 28 aktiven Arbeitsaufgaben 24 korrekt zurückgegeben und die letzten 4 das Problem haben.

Jede neue Aufgabe, die der Gruppe hinzugefügt wurde, hat auch das Problem.

Abfrage ist unten.

SELECT 
Request_Tasks.RQTASK_Number, 
Request_Tasks.Request_Number, 
Requests.Task, Requests.Entity, 
Request_Tasks.Description, 
Request_Tasks.Request_Status, 
Requests.Requested_for_date, 
Request_Tasks.Work_On_Date, 
Request_Tasks.Estimated_Time, 
Request_Tasks.Actual_Time_Analysis, 
Request_Tasks.Offers_Built, 
Request_Tasks.Number_of_links_Opened, 
Request_Tasks.Number_of_Links_Extended, 
Request_Tasks.Number_Of_links_closed, 
Request_Tasks.Build_Allocated_to, 
Request_Tasks.Buld_Review_Allocated_to, 
Request_Tasks.Keying_Allocated_to, 
Request_Tasks.Keying_Approval_allocated_to, 
Request_Tasks.Actual_Build_Time, 
Request_Tasks.Actual_Stakeholder_Support, 
Request_Tasks.Task_Completed_Date 

FROM Request_Tasks 

RIGHT JOIN Requests 
    ON Request_Tasks.Request_Number = Requests.Request_Number 

WHERE (((Request_Tasks.Task_Completed_Date)>=Date() 
Or (Request_Tasks.Task_Completed_Date) Is Null) 
AND ((Requests.Task)<>"7" 
And (Requests.Task)<>"8" And (Requests.Task)<>"9")) 
OR (((Request_Tasks.Task_Completed_Date)>=Date() 
Or (Request_Tasks.Task_Completed_Date) Is Null) 
AND ((Requests.Task)<>"7" 
And (Requests.Task)<>"8" 
And (Requests.Task)<>"9")) 

ORDER BY Request_Tasks.Work_On_Date Is Null DESC , Request_Tasks.Work_On_Date, Requests.Entity Is Null DESC , Requests.Task; 

Jede Hilfe wäre großartig.

Danke.

Antwort

0

Die Abfrage verwendet RIGHT JOIN, was bedeutet, dass Zeilen aus Requests Tabelle immer gemeldet werden, auch wenn es keinen entsprechenden Eintrag in Request_tasks Tabelle gibt.

Ein vollständiges Beispiel ist hier http://www.w3schools.com/Sql/sql_join_right.asp

In Ihrem Fall höchstwahrscheinlich somechange könnte während der Datenlast/API und Request_tasks Tabelle aufgefüllt wird, ist nicht passiert. Aus diesem Grund sehen Sie leere Daten für Felder aus dieser Tabelle.

Lösung

  • manuell Daten überprüfen 4 fehlerhafte Datensätze in Request_tasks Tabelle.
  • Stellen Sie sicher, dass die Schlüssel in Tabelle request_number übereinstimmen, einschließlich Datentyp und Leerzeichen/nicht druckbare Zeichen (wenn sie Daten vom Typ Zeichenfolge sind) für fehlerhafte Datensätze.

Abfrage scheint gut, es ist mehr Problem mit Daten basierend auf Problemstellung.

+0

Danke für die Antwort. Leider hat das nicht geholfen. Der API-Import hat funktioniert und alle Daten in den Tabellen sind so, wie es sein sollte. Es ist so, als ob die Abfrage den Join nicht erkennt. Das Erstellen einer neuen Abfrage führt zu demselben Ergebnis. Es scheint als ob 1 Datensatz ein Problem hat und jeder Datensatz danach ist der gleiche, aber ich weiß nicht, was es sein könnte – Lee

+0

Es könnte sein, dass für diese 4 Anfragen von 'Request_Tasks' der Wert von Feld,' Request_Number' nicht gefunden wird in 'Requests' Tabelle –

+0

Verwenden Sie die automatische Nummer in der Tabelle? Wenn ja, welcher Datentyp ist die automatische Nummer? – Velid

Verwandte Themen