Bill Benson (vbacreations)
vbacreations at gmail.com
Wed Jun 2 06:09:48 CDT 2010
Thanks Gustav. You are right. I am still hoping there is a way to have cake and eat it too -- to refer to a control on a form but if it does not exist, to default to null? -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock Sent: Wednesday, June 02, 2010 4:36 AM To: accessd at databaseadvisors.com Subject: Re: [AccessD] When a query refers to a control on a form which isnot open - how to supply a default Hi Bill You can let your function return Null for "not found", and adjust your SQL like this: SELECT RecordID, ShopOrder, ItemNumber FROM TblCIB WHERE RecordID=Nz(GetLatestRecordIDFrom2("frmExciterIndividualEntry", "RecordID"), [RecordID]) Function GetLatestRecordIDFrom2(strForm As String, CtrlName As String) As Variant Dim Frm As Form Dim Ctrl As control On Error Resume Next Set Frm = Forms(strForm) If Frm Is Nothing Then GetLatestRecordIDFrom2 = Null Else Set Ctrl = Frm.Controls(CtrlName) If Ctrl Is Nothing Then GetLatestRecordIDFrom2 = Null Else GetLatestRecordIDFrom2 = Ctrl.Value Set Ctrl = Nothing End If Set Frm = Nothing End If End Function /gustav >>> vbacreations at gmail.com 02-06-2010 01:03 >>> My function was incorrect anyway, would have needed to be something which tested not only the control but also the form: I am sure this can be written better but this is not my goal, my goal is a simple way to substitute in the sql when environment does not support the query due to the absence of the open form and/or populated control. Thanks. Function GetLatestRecordIDFrom2(strForm As String, CtrlName As String, TypeExpected As Long) Dim Frm As Form Dim Ctrl As control On Error Resume Next Set Frm = Forms(strForm) If Frm Is Nothing Then Select Case TypeExpected Case Is = dbText GetLatestRecordIDFrom2 = "" GoTo Exit_Function Case Is = dbLong, Is = dbDouble, Is = dbSingle, Is = dbCurrency GetLatestRecordIDFrom2 = 0 GoTo Exit_Function Case Is = dbBoolean GetLatestRecordIDFrom2 = False GoTo Exit_Function End Select Else Set Ctrl = Frm.Controls(CtrlName) If Ctrl Is Nothing Then Select Case TypeExpected Case Is = dbText GetLatestRecordIDFrom2 = "" GoTo Exit_Function Case Is = dbLong, Is = dbDouble, Is = dbSingle, Is = dbCurrency GetLatestRecordIDFrom2 = 0 GoTo Exit_Function Case Is = dbBoolean GetLatestRecordIDFrom2 = False GoTo Exit_Function End Select Else Select Case TypeExpected Case Is = dbText GetLatestRecordIDFrom2 = Nz(Ctrl.Value, "") Case Is = dbLong, Is = dbDouble, Is = dbSingle, Is = dbCurrency GetLatestRecordIDFrom2 = Nz(Ctrl.Value, 0) Case Is = dbBoolean GetLatestRecordIDFrom2 = Nz(Ctrl.Value, False) End Select End If End If Exit_Function: End Function -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com No virus found in this incoming message. Checked by AVG - www.avg.com Version: 9.0.819 / Virus Database: 271.1.1/2911 - Release Date: 06/01/10 14:25:00