Foxtable(狐表)用户栏目专家坐堂 → 麻烦老师指点,动态控件不会自动刷新.(1月9日)


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

主题:麻烦老师指点,动态控件不会自动刷新.(1月9日)

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


加好友 发短信
等级:贵宾 帖子:102 积分:880 威望:0 精华:4 注册:2008/8/31 21:47:00
  发帖心情 Post By:2009/1/7 22:02:00 [显示全部帖子]

以下是引用菜鸟foxtable在2009-1-7 20:08:00的发言:
动态控件代码,设定在主窗口加载项,首次运行动态控件成功生成

如果住院登记表增加一行并录入数据,设定按钮B为同样的代码,点击按钮B,动态控件无变化....WHY?

增加一行并录入数据,先保存到后台数据库,再读取试试。


 回到顶部
帅哥哟,离线,有人找我吗?
yuanbin
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:102 积分:880 威望:0 精华:4 注册:2008/8/31 21:47:00
  发帖心情 Post By:2009/1/7 22:47:00 [显示全部帖子]

通过foxtable录入编辑的表中数据,还是用 dt.Save()合适。用SQL语句的INSERT INTO或是UPDATE主要用于特定情况下直接对后台数据库的表进行批量增加或更新记录。
最好有文件上传,供大家测试,感性一点。代码的最后增加一个窗口关闭和重新打开试试。

[此贴子已经被作者于2009-1-7 22:53:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yuanbin
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:102 积分:880 威望:0 精华:4 注册:2008/8/31 21:47:00
  发帖心情 Post By:2009/1/9 14:38:00 [显示全部帖子]

或者这样:床位安排窗体的确定按钮中代码改为:(重新写.Text )
Dim cmd As New SQLCommand
cmd.C
Dim zyh,cw As string
zyh = e.form.controls("ComboBox1").Value
cw = e.form.controls("ComboBox2").Value
cmd.CommandText = "UPDATE [住院登记] SET 床位 = '" & cw & "' Where 住院号 = '" & zyh & "' "
cmd.ExecuteNonQuery()
Syscmd.Table.Load()
if Forms("床位").opened then
    Dim dt As DataTable
    cmd.CommandText = "select 类型,姓名 From [设置] LEFT JOIN [住院登记] ON [设置].类型 = [住院登记].床位 Where [设置].名称 = '床位'"
    dt = cmd.ExecuteReader()
    dim cwh,y as integer
    Dim rad As WinForm.RadioButton
    for y  = 0 to dt.datarows.count-1
        cwh=dt.datarows(y)("类型").trim("床")-1
        Forms("床位").Controls("rad" & cwh).Text = dt.datarows(y)("类型") & dt.datarows(y)("姓名")
    next
end if
e.form.close

-----------------
再加条件,比如:
"select 类型,姓名 From [设置] LEFT JOIN [住院登记] ON [设置].类型 = [住院登记].床位 Where [设置].名称 = '床位' and id >0 and [设置].类型 <> '' "

 回到顶部
帅哥哟,离线,有人找我吗?
yuanbin
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:102 积分:880 威望:0 精华:4 注册:2008/8/31 21:47:00
  发帖心情 Post By:2009/1/9 14:50:00 [显示全部帖子]

通过案例看出,动态控件不会刷新是设计上的问题,数据已经更新到数据库,就是表未同步,窗体未刷新,编程不完善而已。

 回到顶部
帅哥哟,离线,有人找我吗?
yuanbin
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:102 积分:880 威望:0 精华:4 注册:2008/8/31 21:47:00
  发帖心情 Post By:2009/1/9 16:31:00 [显示全部帖子]

 cmd.CommandText = "select 类型,姓名 From [设置] LEFT JOIN [住院登记] ON [设置].类型 = [住院登记].床位 Where [设置].名称 = '床位' and [住院登记].出院结账 = false "
是可以的。

 回到顶部
帅哥哟,离线,有人找我吗?
yuanbin
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:102 积分:880 威望:0 精华:4 注册:2008/8/31 21:47:00
  发帖心情 Post By:2009/1/9 17:14:00 [显示全部帖子]

改成以下的SQL语句试试:
select 类型, iif(出院结账=false ,姓名 ,'') as 姓名 From [设置] LEFT JOIN [住院登记] ON [设置].类型 = [住院登记].床位 Where [设置].名称 = '床位'


另外,床位安排窗口的床位调整COMBOBOX2的MOUSEENTER事件中也要改改,否则,会造成2人同床睡了。
cmd.CommandText = "Select 类型 From [设置] where 名称 = '床位' and 类型 not in (select 床位 from [住院登记])"
[此贴子已经被作者于2009-1-9 17:37:11编辑过]

 回到顶部