Foxtable(狐表)用户栏目专家坐堂 → 给狐表提几个建议


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

主题:给狐表提几个建议

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


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
给狐表提几个建议  发帖心情 Post By:2012/8/9 15:35:00 [只看该作者]

全是关于快速录入方面的

狐表在快速录入方面下了很多功夫,通过演示文件可以看出,很好很强大。但在实际使用过程中发现又有点缺憾。

比如:

1、


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

要做个下拉列表,我想


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

取值单位编码,显示单位简称,可以这样设置,但是确发现,只是下拉的时候显示单位简称,选好了填上去就变成编码了。能选和填看上去都是单位简称,存储的是编码吗?

 

2、要想实现上述要求还有一个办法,就是数据字典功能


 


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

我可以这样设置,但这样不管下拉,还是填上去后都是文字了,但有个问题就是不能直接输入了,必须通过下拉来选。如果我通过条码枪扫编码进去,不就要求能直接输入么。


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


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
  发帖心情 Post By:2012/8/9 15:40:00 [只看该作者]

用你的第一个方案,结合DrawCell

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


加好友 发短信
等级:三尾狐 帖子:763 积分:6313 威望:0 精华:0 注册:2011/12/1 14:47:00
  发帖心情 Post By:2012/8/9 16:10:00 [只看该作者]

楼主可能没理解"取值列"的含义


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


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/8/9 16:12:00 [只看该作者]

取值列是什么含义呢?

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


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/8/10 8:48:00 [只看该作者]

请教如何 drawcell

我刚写了这样的代码 但有错误,请指教

If e.col.Name = "客户_个人" Then
    Dim dr As DataRow = DataTables("个人").Find("编号 = e.text ")
    e.text = dr("姓名")
End If

 

错误在于 "编号 = e.text " 这个表达式中

[此贴子已经被作者于2012-8-10 9:12:15编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/8/10 9:18:00 [只看该作者]

我改成

If e.col.Name = "客户_个人" Then
    Dim dr As DataRow = DataTables("个人").Find("编号 = '" &e.text &"'")
    e.text = dr("姓名")
End If

还是有错误


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/8/10 9:21:00 [只看该作者]

  很简单的  比如你的网名是ABCD是显示列,  但是取值列是你的真名,那么输入就是真实名字  如此而已.

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


加好友 发短信
等级:三尾狐 帖子:763 积分:6313 威望:0 精华:0 注册:2011/12/1 14:47:00
  发帖心情 Post By:2012/8/10 9:28:00 [只看该作者]

这位兄台应该好好看看帮助才是

drawcell里用到find还是头一次见到


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


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/8/10 9:49:00 [只看该作者]

可能是我智力愚钝呀,不要笑话,帮助文件 全文 我已经阅读了2遍了,

DrawCell

在绘制单元格的时候执行,主要用于标记数据。
 
e参数属性:

Table: 准备绘制的表
Row:   准备绘制的行
Col:   准备绘制的列
Style:指定自定义样式的名称,如果用默认的样式绘制单元格,无须设置Style属性。
Text: 字符型,获得或者设置要绘制的文本内容

因为DrawCell事件执行非常频繁,所以代码必须简洁,不可以有太耗时的复杂代码,也不能有显示对话框的代码,否则会出现死循环,切记切记。

示例一

对于数据管理来说,标出异常或特殊的数据也是一项经常性的工作,Foxtable并没有单独设置单元格颜色的方法,那么如何来标记呢?
假定我们一个学生成绩表中,需要用红色背景标出60分以下的分数,用绿色背景标出95分以上的分数。
首先在菜单的数据表功能区,执行自定义样式命令:

然后增加两个样式,分别是优秀和不及格,前者的背景颜色设为绿色,后者的背景颜色设为红色。

最后在DrawCell事件中设置如下代码:

'如果是数值型列,且不是总分列
If
e.Col.IsNumeric AndAlso e.Col.Name <> "总分" Then
    If
e.Row.IsNull(e.Col.Name) = False '且该列已经输入内容
       
If e.Row(e.Col.Name) < 60 Then '如果该列的值小于60
            e.Style =
"不及格" '那么用"不及格"样式绘制单元格
       
ElseIf e.Row(e.Col.Name) > 95 Then '如果单元格的值大于95
            e.Style =
"优秀" '那么用"优秀"样式绘制单元格
       
End If
    End
If
End
If

 

现在程序将用不同的背景颜色,分别标出优秀和不及格的分数:

提示,自定义样式不仅可以通过菜单添加,也可以通过代码添加,请参考:AddUserStyle

示例二

有的时候,不是标记一个单元格,而是希望整行用不同的颜色标记出来,那么代码更加简单。
例如希望总分低于360分的行,用红底白字标出,只需首先增加一个名为“不及格”的样式,将其设置为红字白字,然后将DrawCell事件代码设置为:

If e.Row("总分") < 360 Then
    e.Style = "不及格"

End If

示例三

DrawCell事件不仅用于标记数据,还可以用他“篡改”数据。
假定有一名为“密码”的列,要求只有经理级别的用户才能查看该列的数据,其他人查看的时候,看到的只是"****"。
实现的代码也非常简单,在该表的DrawCell事件中输入:

If User.Group = "经理" Then '如果是经理
    Return '那么返回,正常显示数据
End
If
If
e.Col.Name = "密码" Then '如果正在绘制的是密码列
    e.Text =
"****" '那么用*代替原来的内容
End
IF

DrawCell事件只是影响显示内容,并不会对真实的值有任何影响。

示例四

DrawCell事件使用自定义样式来标记单元格。
每个DataTable都有Styles集合,用于获得指定名称的自定义样式,例如:

DataTables("成绩表").Styles("不及格")

表示成绩表的不及格样式。

样式包括以下属性:

BackColor: 背景颜色
ForeColor: 字体颜色
FontBold:  逻辑型,设为True,字体加粗
FontItalic:逻辑型,设为True,字体倾斜
FontStrikeout:逻辑型,设为True,字体带删除线
FontUnderline:逻辑型,设为True,字体带下划线

例如对于不及格的成绩,不仅要求用红色标记出来,而且希望能够不停地闪烁,实现的步骤为:

1、增加一个名为“不及格”的自定义样式,样式的背景颜色设为红色。

2、将DrawCell事件的代码设为:

'如果是数值型列,且不是总分列
If
e.Col.IsNumeric AndAlso e.Col.Name <> "总分" Then
    If
e.Row.IsNull(e.Col.Name) = False '且该列已经输入内容
       
If e.Row(e.Col.Name) < 60 Then '如果该列的值小于60
            e.Style = "不及格" '那么用"不及格"样式绘制单元格
       
End If
    End
If
End
If

3、在计划管理(位于数据库功能区)中增加一个计划,时间间隔设为1000,代码设为

With DataTables("成绩表").Styles("不及格")
    If .
BackColor = Color.Red Then
        .
BackColor = Color.White
    Else
        .
BackColor = Color.Red

    End If
End With


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


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/8/10 9:51:00 [只看该作者]

以下是引用wjl-se在2012-8-10 9:28:00的发言:

这位兄台应该好好看看帮助才是

drawcell里用到find还是头一次见到

drawcell不能用find 又该用什么呢?希望大家实在的帮助我一下,告诉我具体错在那里,该怎么做,这样新手才有成长。

只告诉我 不能用find新手实在不能悟出改用什么?


 回到顶部
总数 13 1 2 下一页