Mike and Doris Manning
mikedorism at ntelos.net
Tue Mar 4 07:16:06 CST 2003
Actually he doesn't need to use a recordset at all. He could create a sproc that returns "CurrentMth" as an Output Parameter. If there is no matching record, then the return value is NULL and he can use NZ function to convert it to 0. Doris Manning Database Administrator Hargrove Inc. www.hargroveinc.com -----Original Message----- From: dba-sqlserver-admin at databaseadvisors.com [mailto:dba-sqlserver-admin at databaseadvisors.com] On Behalf Of Francisco Tapia Sent: Tuesday, March 04, 2003 02:41 AM To: dba-sqlserver at databaseadvisors.com Subject: Re: [dba-SQLServer]Replacement for DLookup with 2 parameters Think sprocs, David.... So your Function would be more along the lines of.. Public Function cbfAmtDue() as Currency Dim rst ADODB.Recordset Set rst = New ADODB.Recordset Currentproject.Connection.stp_AmountDue CustIDNo, InvNumber - 1, rst if rst.eof = true then cbfAmtDue = Null 'Or 0 else cbfAmtDue = rst!CurrentMth end if '--------END Now in a sproc on your SQL Server you'd add the following sproc... ---------- Create Procedure stp_AmountDue (@CustIDno as int, @InvNumber as Int) AS SELECT CurrentMth From tblCustStatement Where CustNoId = @CustNoId AND InvNumber = @InvNumber ---------END this is all OTOMH, so please check your syntax... -Francisco http://rcm.netfirms.com/ ----- Original Message ----- From: "David Emerson" <davide at dalyn.co.nz> To: <dba-SQLServer at databaseadvisors.com> Sent: Monday, March 03, 2003 8:14 PM Subject: [dba-SQLServer]Replacement for DLookup with 2 parameters : What I am looking for here is some confirmation I am doing the right thing. : : In A97 I had a simple statement to return a single value if the : corresponding record existed (this was in the Control Source of a field - : : =IIf(Not : IsNull([CustIDNo]),nz(DLookUp("Current","tblCustStatement","CustIDNo = " & : [CustIDNo] & " and StatementNumber = " & [InvNumber]-1),0)) : : Now in my ADP I am using the following (and setting the field control : source to '=cbfAmtDue()') - : : Public Function cbfAmtDue() As Currency : : Dim cnn As ADODB.Connection, rst As ADODB.Recordset : : Set cnn = CurrentProject.Connection : Set rst = New ADODB.Recordset : rst.Open "tblCustStatement", cnn, adOpenDynamic, adLockOptimistic : : cbfAmtDue = 0 : If Not IsNull([CustIDNo]) Then : rst.Filter = "CustIDNo = " & Me!CustIDNo & " and StatementNumber = : " & DLookup("InvNumber", "tblCustomers", "CustomerID = " & Me!txtCustID) - 1 : If rst.EOF <> True Then 'Statement record exists : cbfAmtDue = rst!CurrentMth : End If : End If : : rst.Close : Set rst = Nothing : cnn.Close : Set cnn = Nothing : : It seems a long way about it but is there any simpler way? : : : Regards : : David Emerson : DALYN Software Ltd : 25b Cunliffe St, Johnsonville : Wellington, New Zealand : Ph/Fax (877) 456-1205 : : _______________________________________________ : dba-SQLServer mailing list : dba-SQLServer at databaseadvisors.com : http://databaseadvisors.com/mailman/listinfo/dba-sqlserver : http://www.databaseadvisors.com : _______________________________________________ dba-SQLServer mailing list dba-SQLServer at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-sqlserver http://www.databaseadvisors.com