以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]数据字典录入时发生的奇怪现象  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2893)

--  作者:kylin
--  发布时间:2009/5/23 16:02:00
--  [求助]数据字典录入时发生的奇怪现象
员工编号为数据字典,录入之后,编号居然消失了,已经设定一旦员工编号为空,则姓名也将为空,
事实上员工编号就是没有为空,只是显示的问题
见以下动画:

图片点击可在新窗口打开查看此主题相关图片如下:gz.gif
图片点击可在新窗口打开查看
在PreEdite事件设置数据字典
If e.Col.Name = "ygbh" and e.Row.IsNull("scz") = False then
    If e.IsFocusCell Then \'如果是焦点单元格
        Dim dmp1 as New TableDataMap
        dmp1.DataTable = "yggz" \'指定数据来源表
        dmp1.ValueCol = "ygbh" \'指定取值列
        dmp1.DisplayCol = "ygbh" \'指定显示列
        \'指定下拉列表时显示那些列的数据
        dmp1.ListCols = "ygbh,xm"
        dmp1.Filter = "[scz] = \'" & e.Row("scz") & "\'" \'则只显示该生产组的员工
        dmp1.Sort = "xm"
        e.Col.DataMap = dmp1.CreateDataMap() \'生成并设置DataMap
    end if
End If

在DataColChanged事件中设置姓名取值,没有其他的代码
if e.DataCol.Name="ygbh" then
    if e.DataRow.IsNull("ygbh") then
        e.DataRow("xm") = nothing
    else
        Dim dr  As Datarow= DataTables("yggz").Find("ygbh = \'" & e.DataRow("ygbh") & "\'")
        If dr IsNot Nothing  then \'一定要判断是否存在对应的行
            e.DataRow("xm") = dr("xm")
        else
            e.DataRow("xm") = nothing
        End If
    end if
end if



--  作者:mr725
--  发布时间:2009/5/23 22:24:00
--  

如果没有在drawcell设置代码,确实是个怪现象, 是不是等于单元格的字体颜色等同于表背景颜色了?原来想要这个的,狐爸说用drawcell。
不过,一不小心,又发现这一个新功能了~  恭喜啊~  图片点击可在新窗口打开查看
这么复杂的,我还没有运用到~

[此贴子已经被作者于2009-5-23 22:40:03编辑过]

--  作者:kylin
--  发布时间:2009/5/24 11:47:00
--  
没有在drawcell设置代码的
--  作者:kylin
--  发布时间:2009/5/25 9:07:00
--  
老六,帮忙看看是何原因?
--  作者:狐狸爸爸
--  发布时间:2009/5/25 9:13:00
--  
员工编号列显示是是根据数组字典来的。
如果数据字典设置了条件,而且员工编号列的内容不符者这个条件,就显示不了。
--  作者:kylin
--  发布时间:2009/5/25 9:17:00
--  
以下是引用狐狸爸爸在2009-5-25 9:13:00的发言:
员工编号列显示是是根据数组字典来的。
如果数据字典设置了条件,而且员工编号列的内容不符者这个条件,就显示不了。

因为禁用了手工录入,所以肯定不存在你所说的情况

其实1楼的gif表明了:保存后重新打开,显示正常,就是在录入过程中“显示”有问题的,“数据”是存在的


--  作者:狐狸爸爸
--  发布时间:2009/5/25 9:20:00
--  银行支piao打印系统(免费版)

没有看到文件,我估计就是这个原因。
或者检查一下列类型。


--  作者:kylin
--  发布时间:2009/5/25 11:11:00
--  

改动了自带的示例,模拟1楼的情况,结果还是有如同1楼的gif
请老六进入看看,到底哪里出了问题

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成绩排名.rar

[此贴子已经被作者于2009-5-25 11:12:10编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/5/25 12:49:00
--  
问题出在这里:
dmp1.Filter = "[班级] = \'" & e.Row("班级") & "\'"

筛选出哪个班级的,就只有那个班级正常,原因就像我前面说的。

--  作者:kylin
--  发布时间:2009/5/25 15:24:00
--  
以下是引用狐狸爸爸在2009-5-25 12:49:00的发言:
问题出在这里:
dmp1.Filter = "[班级] = \'" & e.Row("班级") & "\'"

筛选出哪个班级的,就只有那个班级正常,原因就像我前面说的。

那么,内容不符者这个条件,就显示不了,这岂不是数据字典的“短肋”了,有否改进的可能?就是让非符合条件的也能正常显示呢?