Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Paule am September 23, 2016, 20:46:04

Titel: Datumskriterium bei Abfrage
Beitrag von: Paule am September 23, 2016, 20:46:04
Hallo.
Ich habe eine zugebenermaßen komplizierte Frage.

In unserem Start-Up werden viele Ratenverkäufe getätigt.
Es ist daher wichtig, einen Überblick zu haben, welche Forderungen zum Zeitpunkt X vom Kunden Y ausstehen.
Beim Verkauf werden in der Tabelle CF_InstallmentsT alle Raten angelegt.
Zahlt der Kunde eine Rate, so wird dies in der Tabelle CF_InstallmentRepayment vermerkt. Dort gibt es einen FK zur InstallmentID. Sie wird also eindeutig einem Installment zugeordnet.

Nun wollen wir ab einem gewissen Zeitpunkt die Produkte wieder einsammeln, sofern der Kunde nicht zahlt. Sind die Produkte eingesammelt, so wird das in der Tabelle SA_RetakesT vermerkt. Dort gibt es auch ein Feld SA_RetakesT.RetakeDate wo das Datum vermerkt wird.

Alle weiteren Raten ab der Rücknahme des Produktes sollen mir bei meiner Übersicht, wo alle Raten und deren Rückzahlungen gegenübergestellt werden, nicht mehr angezeigt werden, denn es ist ja sehr unwahrscheinlich, dass ich sie überhaupt noch bekomme.

Die Übersicht hat folgenden Code (Vorsicht, lang, viele TempVars):
SELECT SA_Sales.SalesID, SA_Sales.CustomerID, SA_Customer.CustomerName, CF_InstallmentsT.Notes, CF_InstallmentsT.InstallmentDate, CF_InstallmentsT.InstallmentSum, CF_InstallmentRepayment.RepaymentDate, CF_InstallmentRepayment.RepaymentAmount, CF_InstallmentRepayment.Fines, IIf([RepaymentAmount]<>[InstallmentSum],[RepaymentAmount]-[InstallmentSum],0) AS [Amount Difference], IIf([RepaymentDate] Is Null,IIf(DateDiff('d',[InstallmentDate],Date())>0,DateDiff('d',[InstallmentDate],Date())),IIf(DateDiff('d',[InstallmentDate],[RepaymentDate])>0,DateDiff('d',[InstallmentDate],[RepaymentDate]))) AS TimeDifference, IIf([TimeDifference]>0,([TimeDifference]*100),0) AS RegularFines, IIf(IsNull([Fines]),[RegularFines],IIf([RegularFines]>[Fines],[RegularFines]-[Fines],0)) AS OutstandingFines, SA_Sales.SalesDate
FROM WH_ItemsT INNER JOIN ((SA_Options_AddSales_RepaymentPlan INNER JOIN (SA_Customer INNER JOIN SA_Sales ON SA_Customer.CustomerID = SA_Sales.CustomerID) ON SA_Options_AddSales_RepaymentPlan.RepaymentMethodID = SA_Sales.RepaymentMethod) INNER JOIN (CF_InstallmentsT LEFT JOIN CF_InstallmentRepayment ON CF_InstallmentsT.InstallmentID = CF_InstallmentRepayment.InstallmentNo) ON SA_Sales.SalesID = CF_InstallmentsT.ReferingSale) ON WH_ItemsT.ItemID = SA_Sales.Product
WHERE (((CF_InstallmentsT.InstallmentDate)>=Nz([TempVars]![StartDateRO],DateValue('1900-01-01')) And (CF_InstallmentsT.InstallmentDate)<=Nz([TempVars]![EndDateRO],Date())) AND ((SA_Sales.BranchID_FK) Like [TempVars]![BranchRO] & '*') AND ((SA_Sales.InstallmentPlan) Like [TempVar]![InstallmentPlanRO] & '*') AND ((SA_Options_AddSales_RepaymentPlan.RepaymentMethodID) Like [TempVar]![RepaymentTypeRO] & '*') AND ((WH_ItemsT.ItemID) Like [TempVar]![ProductRO] & '*'))
ORDER BY CF_InstallmentsT.InstallmentDate;


Um das oben beschriebene Ziel zu erreichen müsste ich jetzt in der Abfrage noch einen Bezug zur Tabelle SA_RetakesT herstellen. Ich möchte alle Raten aus der Tabelle CF_InstallmentsT angezeigt bekommen, die VOR dem Rücknahme-Datum (SA.RetakesT.RetakeDate) liegen, sofern es denn eins gibt. Wie könnte ich das hier einbauen?

Ich wäre euch sehr dankbar für eine Antwort!

Grüße
Titel: Re: Datumskriterium bei Abfrage
Beitrag von: MaggieMay am Oktober 07, 2016, 23:47:37
Hallo,
Zitat von: Paule am September 23, 2016, 20:46:04
Um das oben beschriebene Ziel zu erreichen müsste ich jetzt in der Abfrage noch einen Bezug zur Tabelle SA_RetakesT herstellen. Ich möchte alle Raten aus der Tabelle CF_InstallmentsT angezeigt bekommen, die VOR dem Rücknahme-Datum (SA.RetakesT.RetakeDate) liegen, sofern es denn eins gibt. Wie könnte ich das hier einbauen?
ohne den SQL-Code genauer betrachtet zu haben, würde ich deine Frage folgendermaßen beantworten:
Den Bezug zu einer weiteren Tabelle stellst du am einfachsten über den Abfrageentwurf ein.