[AccessD] Combobox.oldvalue display text?

Stuart McLachlan stuart at lexacorp.com.pg
Sun Feb 8 04:25:07 CST 2009


Hi Max, see comments in line.

On 8 Feb 2009 at 9:59, Max Wanadoo wrote:

> Hi Stuart (or G'day PNG)
> 
> The reason you are probably getting "6" instead of "Description" is probably
> because the Index is pointing to position 1 instead of position 0.  Most
> people would probably have the rowsource set to "Select ID, Descr from
> tblLookup", so to get at "Description" at position 0 you could try
> fldname.column(0) .
> 

No, I know *why* I'm getting it.

All the comboboxes look something like this (just replace "FundingSource" with the relevant 
name for about 20 other lookups on the form)

Name = cboFundingSourceFK
ControlSource = FundingSourceFK
RowSource = Select FundingSourceDescr,FundingSourceID From tblFundingSources)
ColumnCount = 2
Bound Column = 2
ColumnWidth = 4,0

ctl.Value and ctl.Oldvalue return the FK ( a number)
In the Diary I want to log the Description associated with that FK.

> I would also change the variable to a variant, ie strchanges to varchanges
> so that it handles nulls etc.

I wouldn't - I always type my variables!  NZ() handles Nulls and gives me better control over 
the return value from a Null.  (e.g. NZ(ctl.Value, "BLANK")  below)

> 
> I would also have a look at storing the control.value onentry then onexit do
> a "me.dirty=false" forcing a save and then checking contol.value again and
> if different writing it away by calling a function.
> 

I'm trying to avoid doing anything in individual controls event procedures - it's much cleaner 
to do it all in one generic function in the Form Before_update.

-- 
Stuart

> All of the above is off the top of my head.
> 
> Max
> 
> 
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Stuart McLachlan
> Sent: 08 February 2009 09:00
> To: Access Developers discussion and problem solving
> Subject: [AccessD] Combobox.oldvalue display text?
> 
> I'm logging record changes on a form into an audit trail/diary.
> Text boxes are simple:
> 
> strchanges = ""
> For Each ctl In Me.Controls
> Select Case Left(ctl.Name, 3)
>     Case "txt"
>        If Nz(ctl.Value, "") <> Nz(ctl.OldValue, "") Then
>           strchanges = strchanges + Mid$(ctl.Name, 4) & " changed from '" &
> Nz(ctl.OldValue, 
> "BLANK") & "'-to-'" & Nz(ctl.Value, "BLANK") & "'" & vbCrLf
>        End If
>     Case Else
> End Select
> Next
> If strchanges > "" Then
> strchanges = Replace(strchanges, "'", "''")
> strSQL = "Insert into tblDiary (DTG,TenderID,creator,comments) values
> (Now()," _
>          & TenderID & ",'" & GetUserName() & "','" & strchanges & "')"
> End If
> CurrentDb.Execute strSQL
> 
> There are a number of Combo Boxes (cboFieldName) as well.  
> In each case, the row source is in the form:
> Select Descr,ID from tblLookup
> 
> If I use the same method as per "txt", I get the Indexes in the diary
> ie Fieldname changed from "6"-to-"4"
> 
> I can use use ctl.text to get
>  Fieldname changed from "6"-to-"New Description"
> 
> Getting "Old Description" insead of "6" is the problem
> 
> I've considered
> Building Dlookup()s from cbo.Rowsource with a cbo.Oldvalue filter
> Using a DAO,.Recordset to do the same, again based on the cbo.Rowsource
> (easier than 
> Dlookup, because I can use Fieldnumbers in the returned record)
> 
> Both seem a bit of a PITA since there are a lot of fields on the form.
> 
> Ideally I'd like something like ctl.oldvalue.text but that doesn't work.
> 
> Anyone got any other ideas?
> 
> -- 
> Stuart
> 
> 
> 
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com





More information about the AccessD mailing list