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


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

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

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
麻烦老师指点,动态控件不会自动刷新.(1月9日)  发帖心情 Post By:2009/1/7 20:08:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试动态控件.rar


做了个简单的实例,请老师指点....动态控件不会自动刷新....要关闭窗口再打开才有变化...

能否增加一个刷新或重新加载控件的函数?

另问:如何在标记红色SQL语句中再加个条件,[住院登记].出院结账 = False
"select 类型,姓名 From [设置] LEFT JOIN [住院登记] ON [设置].类型 = [住院登记].床位 Where [设置].名称 = '床位'"




动态控件代码,设定在主窗口加载项,首次运行动态控件成功生成

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

Dim cmd As New SQLCommand
cmd.C
dim x,y,i1,i2 as integer
Dim dt As DataTable
cmd.CommandText = "select 类型,姓名 From [设置] LEFT JOIN [住院登记] ON [设置].类型 = [住院登记].床位 Where [设置].名称 = '床位'"
dt = cmd.ExecuteReader()
i2 = dt.datarows.count
Dim rad As WinForm.RadioButton
for y  = 0 to Math.Ceiling(i2/5)-1
    for x = 0 to iif(y = Math.Ceiling(i2/5)-1 and (i2 mod 5)<>0,(i2 Mod 5)-1,4)
        rad = Forms("主窗口").CreateControl("rad" & i1,ControlTypeEnum.RadioButton)
        rad.Text = dt.datarows(i1)("类型") & dt.datarows(i1)("姓名")
        rad.Left = 2+x*80
        rad.Top = y*70
        rad.Width = 80
        rad.Height = 70
        rad.TextAlign = ContentAlignment.BottomCenter
        rad.ImageFile = ProjectPath & "Images\ne.ico"
        rad.ImageAlign = ContentAlignment.TopCenter
        rad.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
        rad.Appearance = System.Windows.Forms.Appearance.Button
        Forms("主窗口").Controls("Panel1").AddControl(rad)
        i1 += 1
    next
next

图片点击可在新窗口打开查看此主题相关图片如下:001.jpg
图片点击可在新窗口打开查看



[此贴子已经被作者于2009-1-9 10:49:48编辑过]

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/1/7 22:15:00 [显示全部帖子]

以下是引用yuanbin在2009-1-7 22:02:00的发言:

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

在执行按钮B代码之前已经执行下下面的代码
For Each dt As DataTable In DataTables
    dt.Save()
Next


这样子也不行啊....

另问:如何确保数据真正保存到后台数据库?用SQL语句?INSERT INTO或是UPDATE?

把主窗口的相关控件移植到子窗口执行时,在子窗口不关闭前提下添加数据,点击按钮B.动态控件无变化...
但窗口一关一开后,动态控件变化为添加数据后的状态.真是怪事..
.图片点击可在新窗口打开查看

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

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/1/8 8:35:00 [显示全部帖子]

以下是引用yuanbin在2009-1-7 22:47:00的发言:

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

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

我暂时只有这样子才行了,但好象有点怪怪的感觉.......一关一开......窗口没有重新加载函数吗?类似表的Load...


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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/1/9 10:40:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-1-8 9:20:00的发言:
 最好做一个简单的例子上传测试。

老爹,实例做好了.您看看?图片点击可在新窗口打开查看


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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/1/9 12:50:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-1-9 11:23:00的发言:

第一行加上:
Forms("床位").Controls("Panel1").ClearControl()

这样清除所有控件,然后再增加。

图片点击可在新窗口打开查看就这么简单?我倒......

如何在标记红色SQL语句中再加个条件,[住院登记].出院结账 = False
"select 类型,姓名 From [设置] LEFT JOIN [住院登记] ON [设置].类型 = [住院登记].床位 Where [设置].名称 = '床位'"


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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/1/9 15:05:00 [显示全部帖子]

以下是引用yuanbin在2009-1-9 14:50:00的发言:
通过案例看出,动态控件不会刷新是设计上的问题,数据已经更新到数据库,就是表未同步,窗体未刷新,编程不完善而已。

图片点击可在新窗口打开查看是啊,老爹那个清除控件代码似乎也不完善,控件不能完全清除,有时还是会出现控件无更新...
十个动态控件,有三四个清除,重建...其他的就没变化.
我在清除控件代码后面插入一个提示.可以看到,清除控件代码执行了一部分.....

图片点击可在新窗口打开查看此主题相关图片如下:001.jpg
图片点击可在新窗口打开查看


[此贴子已经被作者于2009-1-9 15:11:45编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
菜鸟foxtable
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/1/9 15:48:00 [显示全部帖子]

以下是引用yuanbin在2009-1-9 14:38:00的发言:
-----------------
再加条件,比如:
"select 类型,姓名 From [设置] LEFT JOIN [住院登记] ON [设置].类型 = [住院登记].床位 Where [设置].名称 = '床位' and id >0 and [设置].类型 <> '' "

我加的那个条件是住院登记表出院结账列=False.....用and似乎不对吧....

[此贴子已经被作者于2009-1-9 15:49:01编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
菜鸟foxtable
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/1/9 16:37:00 [显示全部帖子]

以下是引用yuanbin在2009-1-9 16:31:00的发言:
 cmd.CommandText = "select 类型,姓名 From [设置] LEFT JOIN [住院登记] ON [设置].类型 = [住院登记].床位 Where [设置].名称 = '床位' and [住院登记].出院结账 = false "
是可以的。

这样子产生的临时表就只有出院结账 = false啦.

 2床    李四  
   4床 张三   
     
       
       

我要的是这个结果....

  1床     
   2床    李四
   3床    
   4床 张三   
   5床    

 回到顶部
帅哥哟,离线,有人找我吗?
菜鸟foxtable
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/1/9 17:42:00 [显示全部帖子]

以下是引用yuanbin在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编辑过]

会造成2人同床睡了图片点击可在新窗口打开查看大哥您真幽默....图片点击可在新窗口打开查看


 回到顶部