Foxtable(狐表)用户栏目专家坐堂 → [求助]


  共有2771人关注过本帖树形打印复制链接

主题:[求助]

帅哥哟,离线,有人找我吗?
leoli
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:301 积分:2547 威望:0 精华:0 注册:2018/11/15 12:35:00
[求助]  发帖心情 Post By:2020/5/26 22:37:00 [显示全部帖子]

老师,我在学习以下代码中,有个问题:当后台数据更新后,

1. 这个ComboBox1 不会自动更新,需重新打开项目后才可更新,如何后更新后,ComboBox1中的内容也自动更新

2.这个ComboBox1不可以模糊查找,如何可以模糊查找这其中的内容?


临时表与全局变量

在实际开发的过程中,我们可以需要经常在代码中调用某个表的数据,但是又不需要在界面中显示这个表。
对于这种情况,我们可以使用临时表加载这个表的数据,同时将临时表保存在一个Public变量中,这样就可以在任何位置调用这个表,无需反复加载。

假定我们建立了一个外部数据源"Region",其中有个名为“行政区域”的基础数据表,这个表已经输入了全国所有县级行政区域的资料,包括省市、市县、区号、邮编四列。
我们不希望主界面中显示这个表,但是希望能随时通过代码调用这个表的数据。
当然我们可以正常加载这个表,然后将这个表的Visible属性设置为False即可,不过这次我们用临时表来解决:

1、首先在全局代码中定义一个Public变量

Public rdt As DataTable

2、在项目事件AfterOpenProject中设置代码:

Dim cmd As New SQLCommand
cmd
.ConnectionName = "region"
cmd
.CommandText = "Se lect * From {行政区域}"
rdt
= cmd.ExecuteReader()

3、现在我们可以在任何地方调用这个表的数据,例如窗口中有两个ComboBox控件,第一个ComboBox列出所有的省市,第二个ComboBox根据第一个ComboBox所选择的省市,列出该省市所有的县市。

首先将窗口的AfterLoad事件代码设置为:

e.Form.Controls("ComboBox1").ComboList = rdt.GetComboListString("省市")

然后将ComboBox2的Enter事件代码设置为:

Dim sh As String = e.Form.Controls("ComboBox1").value
e
.sender.ComboList = rdt.GetComboListString("县市","省市 = '" & sh & "'")


4、再例如希望在客户表中输入省市、县市两列后,区号和邮编能自动输入,可以将客户表的DataColChanged事件代码设置为:

If e.DataCol.Name = "省市" Orelse e.DataCol.Name = "县市" Then
    Dim
dr As DataRow
   
Dim Filter As
String
    Filter = "[省市] = '" & e.DataRow("省市") & "' And [县市] = '" & e.DataRow("县市") & "'"
    dr = rdt.Find(
Filter)
    If
dr IsNot Nothing Then
        e.DataRow("区号") = dr("区号")
        e.DataRow("邮编") = dr("邮编")
    Else
        e.DataRow("区号") = Nothing
        e.DataRow("邮编") = Nothing
    End
If
End
If





 回到顶部