>m.liPaymentId = c_Payments.iPaymentid && the correct ID is returned here > >select Payments.IPAYMENTID, Payments.DPAID, Payments.IPATIENTID, Payments.IPAYTYPEID, Payments.NAMOUNT, ; > Payments.CCHEQUENO, Payments.DDEPOSITED, Payments.CPOSTREF, Payments.CRECEIPTNO,; > PaymentsDetails.NAMOUNT as PayDetAmount, IPAYDETID, sales.cinvoiceno, Sales.dSale, ; > Sales.nVat, Sales.nTotal, Sales.nBalance, PaymentsDetails.nBalDue,; > Patients.cSurname, Patients.cFirstName, Patients.cMidName, Patients.cTitle, atients.cPatientNo, ; > PADR(ALLTRIM(Patients.cSurname) + "," + ALLTRIM(Patients.cFirstName) + " " + ALLTRIM(Patients.cMidName), 100) as cPatient,; > PayTypes.cDesc as cType, PatientAddresses.cAddress1, PatientAddresses.cAddress2, PatientAddresses.cTown,; > PatientAddresses.cPostCode, PatientAddresses.cCountry,; > SalesDetails.cCode, SalesDetails.cdesc, SalesDetails.cDiscount, SalesDetails.cIntDesc,; > SalesDetails.cVATCode, SalesDetails.iQty, SalesDetails.nAmount as nDetAmount, SalesDetails.nDiscAmt, ; > SalesDetails.nPrice, SalesDetails.nVATAmount, SalesDetails.nVATRate, sales.iSaleId,; > Sales.cInvoiceTo, Sales.cInvoiceToAddress, Sales.cInvoiceToPhone; > FROM Payments; > inner join PaymentsDetails ON Payments.iPaymentId = PaymentsDetails.iPaymentId; > inner join Sales ON PaymentsDetails.iSaleId = sales.iSaleId; > inner join SalesDetails ON Sales.iSaleId = salesDetails.iSaleId; > INNER JOIN Patients ON Payments.iPatientId = Patients.iPatientId; > INNER JOIN Lookups as PayTypes ON Payments.IPAYTYPEID = PayTypes.ILookupID; > LEFT OUTER JOIN PatientAddresses ON Payments.iPatientId = PatientAddresses.iPatientid ; > WHERE Payments.iPaymentId = m.liPaymentId; > ORDER BY cInvoiceNo ; > INTO CURSOR c_PaymentsReport >