Foxtable(狐表)用户栏目专家坐堂 → 图片自动更新


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

主题:图片自动更新

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


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/2/19 15:58:00 [显示全部帖子]

 两个问题:

1. 叉车图片在窗口里不显示

2. 不显示,当然也就不知道能否关联

密码是默认的
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试1.table



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


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/2/19 23:06:00 [显示全部帖子]

 大侠:

我反复查了所有的地方,有以下几个地方变了。

一个是PictureBox里的BeforeGetImage的代码被注释禁用了,但这个应该不是问题。因为我自己也禁过,不起作用。

二是窗口管理里的排列顺序调整了,原来我是放在专门的一个目录下,现在录入窗口被调整到了根目录下。这个应该不影响,只是为了显示操作方便而已。

三是窗口里的“注册车号”这个控件的事件代码里,增加了“ValueChanged”代码。


以下内容为程序代码:

1 Dim idx As Integer = Tables("叉车台帐").FindRow("注册车号='" & e.Sender.Value & "'")
2 If idx > -1 Then
3 Tables("叉车台帐").Position = idx
4 End If


这个应该是关键。

Findrow这个函数,我也通过在线帮助查找了,根据指定条件表达查找行,不符合条件,则返回-1.

e.sender.value下拉得到值,然后在“叉车台帐”这张表里找它在哪一行,把行号返回给idx.

那么idx是怎么自动关联PictureBox的?我这里想不通。


请大侠不吝赐教。

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


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/2/20 11:19:00 [显示全部帖子]

 そうですね!

感谢!还是要多请教

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


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/2/21 14:06:00 [显示全部帖子]

 版主:

非常感谢您的指导。很多问题得到了很好地解决,有一个新的问题,就是如果这个“叉车台帐”里的设备比较多,不止这4台,比如40台或者400台,如果还要人工一个一个地手动增加图片到备注列,办法有些僵硬。

其实,这也是我在做员工信息表里的一个困难,一部门有一百多人,原来有Excel做的员工信息表,各项字段都是可以正常导入的,但员工证件照就无法直接导入了。每个员工在表中都有自己唯一的工号,所有的证件照都是“工号_姓名”这样的文件名。如何能够做到自动查找照片,并增加在备注列呢?还是只能手动来?

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


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/2/21 20:44:00 [显示全部帖子]

 老师:

这个办法对追加记录是可行的。但有两个问题不好解决。

1. 对已有记录,就是表里原来没有设计图片列,现在新增备注列,就不行了。因为没法触发DataColChanged事件。因为我的员工信息表是从Excel导入的,导入时只能导入常规数据,图片没找到自动导入办法,所以希望能够自动添加图片列。

2. Attachment里东西比较多,希望通过设置子目录来归整。如何在代码里指定路径?还是必须放在根目录下?

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


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/2/22 12:25:00 [显示全部帖子]


 版主:

重置列是个好办法,是我自己没想到。帮助文件里提到过的,这下印象深刻。

但我尝试将图片存放在Attachment的子目录下,在列属性中指定来源目录和保存眼光,却行不通。图片列显示红叉叉,就是找不到文件。


图片点击可在新窗口打开查看此主题相关图片如下:列属性1.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:照片无法找到.png
图片点击可在新窗口打开查看

是不是表的DataColChanged事件里,也必须指定路径?

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


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/2/23 15:40:00 [显示全部帖子]

 版主:

经过测试,还是得放在Attachment根目录下,在列属性里指定来源目录不起作用,还是显示红叉叉。但放在根目录下,重置列后,就起作用了。

凑合着也能用,就是Attachment目录下,比较乱。像我这样的强迫症患者,心理膈应。

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


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/3/2 23:29:00 [显示全部帖子]

 版主:

尝试了很多遍,还是不行。改天传测试文件上来吧。现在有个更棘手的问题,需要您指导一下。

由于问题比较复杂,我上传了测试文档。


图片点击可在新窗口打开查看此主题相关图片如下:叉车点检界面设置.png
图片点击可在新窗口打开查看

设计思路是这样,通过主控窗口的SplitContainer,双击后调用录入窗口。这个《FoxTable数据库应用开发宝典》里有,已经搞定了。

录入窗口通过分隔线划为三个部分,第一部分是员工和设备信息录入,这个前期您已经指导过了,调整了两个控件的位置,也重新写了代码,测试通过了。

第二部分是检查项目,这个很犯难。不知道该使用哪一个控件来表达思路。实际的需求是有三列,一个是点检项目,一个点检要求,最后一个是图示。都是一对一的记录,比如选择点检项目P01,那么就应该只能选择P01的点检要求,即检查灭火器,同时PictureBox里可以显示现场实物照片,以提示员工。组合框和下拉框实现起来均不理想,后来我想到的控件是复选框列表,CheckedListBox,这样可以很清楚地列出所有条目。但有以下几个困难,解决不了:

  1. CheckedListBox的属性里,不能调整每行的高度,所以每个条目非常拥护,担心实际用的时候,员工不好选择;不知道有没有变通的办法?
  2. 最右侧的PictureBox不知道怎么才能自动关联照片?因为有些记录对应不止一张照片,可能是两张或三张。
  3. 点检结果需要进行逻辑判断。即第二个复选框列表里,如果有条目没有选中,那么点检结果必须选择异常,而且要把值写到“叉车点检”表里的“点检结果”列里
  4. 如果选择了异常,那么备注信息那个文本框不允许为空,必须要有内容,比如不少于5个汉字。就是强制员工必须输入自己发现的情况,将来还计划调用摄像头拍照,因为现场用的是工业平板电脑,硬件条件是用的。但那个有点难,暂时先预留,以后学会了再弄。

第三部分就是一些常规按钮,教程里都有,已经很清楚了。

由于现场特种设备比较多,叉车只是其中一种,所以我在“录入窗口”里设计了TabControl,有4个页面,可以切换到不同的录入界面,但录入结果都会绑定到“叉车点检”表里(其实不应该叫叉车点检表,应该叫“特种设备点检表”,前期没想好,现在改名字,工作量有点大,只能这样了)。这样可以避免主界面按钮过多,显得凌乱。但缺点是无法详细记录究竟是哪一个条目没有勾选,因为CheckedListBox的选择结果没有绑定任何表,只有输入,没有输出,不会保存数据。不过从现场反馈来看,这不重要,只要点检结果单选框是“异常”,而且“备注信息”里有内容参考即可,实际操作中那些条目本来就是打勾。如果记录每个条目的打勾,就需要在“叉车点检”表里做很多列来记录,不同的设备点检项目是一样的,这样表的数据会加大很多,不好管理。

内容比较多,不知道老师是否清楚了我的思路?

由于整个项目比较大,压缩包有6M多,超过了论坛的限制,所以只好上传主项目文件,详细内容,请见附件。

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

如果需要整个项目,我可以尝试分卷压缩。

密码是默认值。





[此贴子已经被作者于2020/3/2 23:32:33编辑过]

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


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/3/3 9:13:00 [显示全部帖子]

补充说明一下,就是第一个CheckedListBox必须全选中,表示操作员已经按要求检查了所有项目;第二个CheckedListBox允许有未选中情况,如果有,那么点检结果必须是异常,而且备注信息不能为空

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


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/3/5 18:08:00 [显示全部帖子]


 版主:

感谢指导,经过你的思路指导,顺利用“表”控制实现了我想要的功能,而且更加美观,易用。

经过帮助文件的指导,也实现了行位置关联PictureViewer。我用的是主表,没有采用帮助里副本的做法。

需要的功能比较多,我一个一个解决比较好,不要摊子铺得太多,一时半会也没那么多资源。


图片点击可在新窗口打开查看此主题相关图片如下:点检表录入2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:点检信息录入3.png
图片点击可在新窗口打开查看


功能1:实现点检条目选择 ==> 已经通过表控件解决

功能2:点检条目2选择异常时,条目3不能为空。这个有点小问题。

1. 我通过在源表,即“海斯特叉车点检项目”里设置DataColChanged事件,写入如下代码
Dim dr As DataRow=e.DataRow
If e.DataCol.Name = "点检结果" Then '如果是点检结果列的内容有变动
    If e.NewValue = False And dr.IsNull("点检结论") Then '而且变动后的值是False,即有问题,而且"点检结果"列为空       
        MessageBox.Show("本项目点检异常,请在点检结论中输入你发现的情况,并报告班长.") '显示提示对话框
        e.Cancel=True
    End If
End If
这条代码的设计意图是:如果表中“点检结果”原来的旧值是“正常”,当将逻辑值选择为“异常”这个新值且右侧的“点检结论”列为空,那么弹出对话框,提示在“点检结论”列输入信息.这样的话,要求那个表控件里的“点检结果”列每次必须刷,而且默认结论必须是“异常”,否则逻辑不起作用。请问如何实现这一功能?或者有更好的思路?
2. 上述代码没有强制功能,不知如何用代码实现当“点检结果”为异常时,必须在“点检结论”中输入一定数量的文字,否则不允许离开当前控件。我尝试过ValidateEdit或者DataColChanging事件,但试来试去,和上面结果一样。请问有没有什么更好的办法?


 回到顶部
总数 28 上一页 1 2 3 下一页