Select to view content in your preferred language

How to programatically refresh a combobox listtable?

2314
2
09-09-2011 11:13 AM
DuncanHornby
MVP Notable Contributor
All,

I'm having real problems with this one and was hoping someone out there could help.

I have a form with 3 pages, page 2 has a combobox on it where I have set the listtable to be a dbf file at design time. Page 3 has the ability to append a new entry to the end of the dbf file (This bit of code works fine). I want to be able to see this new entry if I tab back to page 2. I cannot seem to find any method that refreshes the combobox, is it possible? I've tried setting the listtable property of the combobox but it keeps bombing out saying that it's not a property...

below is the code that is called by an onclick button event on page 3.

Any ideas, I'm using Arcpad 10?

Duncan

Sub NewSpecies
' Description: Appends a new species to dbf file
'
' Created: 9/9/11

' Get species name
dim b
Set b = ThisEvent.Object
dim p
set p = b.Parent
dim c
set c = p.Controls
dim t
set t = c.Item("ebxNew")
dim s
s = t.Text
If s = "" then
    msgbox "You must set the species name first!", vbExclamation, "Invalid species name..."
    Exit Sub
End If

' Get file path of APM file then use this to create a path to dBase file
dim fp
fp = MAP.FilePath
dim i
i = instrrev(fp,"\")
fp = left(fp,i) & "SpeciesList.dbf"

' Open dBase file
Dim rs
set rs = APPLICATION.CreateAppObject("RecordSet")
rs.Open fp,2

' Find out what is the last ID and increment by 1
rs.MoveLast
dim id
id = rs.Fields.Item("ID").Value
id = id + 1

' Add new species
rs.AddNew
rs.Fields.Item("ID").Value = id
rs.Fields.Item("Species").Value =  s
rs.Update

' Refresh combobox
dim cb
set cb = p.Parent.Pages("PAGE2").Controls.Item("cmbxSpecies")
msgbox cb.Name
set cb.listtable = "SpeciesList.dbf" '<<<<<<<<<<<< This does not work
cb.listtable = "SpeciesList.dbf" '<<<<<<<<<<<<<< nor does this!
Msgbox "Species " & s & " successfully added to list!",vbInformation,"List updated!"

End Sub
Tags (3)
0 Kudos
2 Replies
DuncanHornby
MVP Notable Contributor
All,

I had been thinking of a work around all weekend to this problem so I came into the office with a way of resolving this problem, fired up help and was just doing some casual searching when I spotted AddItemsFromTable. So during design time we have a property of the ComboBox called listtable but during runtime it's called AddItemsFromTable.

So my apologies to all for asking this question as I'm not used to objects having different names for the same property...

Code is below.

Duncan


Sub PopulateCombobox

' Get file path of APM file then use this to create a path to dBase file
Dim fp
fp = MAP.FilePath
Dim i
i = instrrev(fp,"\")
fp = left(fp,i) & "SpeciesList.dbf"


' Get control and refresh 
Dim p
Set p = ThisEvent.Object
Dim c
Set c = p.Controls
Dim sc
Set sc = c.Item("cmbxSpecies")
sc.Clear
sc.AddItemsFromTable fp,"Species","Species" 
End Sub

0 Kudos
RolfBroch
Frequent Contributor
I may be wrong but listtable will fill the combobox with initial values but additemsfromtable will add more entries to the combobox to the ones already there. Both use a table (.dbf) as a source.

Rolf
0 Kudos