以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  动态加载  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30931)

--  作者:L88919138
--  发布时间:2013/4/7 10:44:00
--  动态加载

在帮助住中有“利用扩展用户属性设置初始加载条件”,如果使用SQL外部数据源在BEFORELOADOUTERTABLE中代码应如何写?

 

利用扩展用户属性设置初始加载条件

通常利用扩展用户属性,让用户在登录的时候,选择要加载的数据范围。
例如有一个订单管理系统,希望在用户登录的时候,能够指定一个日期范围,仅加载该日期范围内的订单。

首先我们得在用户管理中增加起始日期、结束日期两个扩展属性:

假定使用的是内部表,然后在BeforeLoadInnerTable事件中加入如下代码:

If e.DataTableName = "订单" Then
    e.Filter =
"[日期] >= #" & e.User.ExtendedValues("起始日期") & "# And [日期] <= #" & e.User.ExtendedValues("结束日期") & "#"
End
If

这样即可在登录的时候,由用户自行输入要加载数据的日期范围:


--  作者:Bin
--  发布时间:2013/4/7 10:49:00
--  
图片挂了.
--  作者:狐狸爸爸
--  发布时间:2013/4/7 12:51:00
--  

If e.DataTableName = "订单" Then
    e.SelectString = "Select * From 订单 Where [日期] >= #" & e.User.ExtendedValues("起始日期") & "# And [日期] <= #" & e.User.ExtendedValues("结束日期") & "#"
End If

 

 


--  作者:L88919138
--  发布时间:2013/4/15 9:14:00
--  

在学习对外部表存货账进行动态加载时(因SQL服务器只能在局域网内连接,数据先改成内部数据源),在BeforeLoadOuterTable输入以下代码 

If e.DataTableName = "存货账" Then
    e.SelectString = "Select * From 存货账 Where [业务发生日期] >= #" & e.User.ExtendedValues("起始日期") & "# And [业务发生日期] <= #" & e.User.ExtendedValues("结束日期") & "#"
End If

刚进入系统提示以下错误,请各位大师帮忙看下是什么原因?

错误代码位置:项目,BEFORELOADOUTERTABLE

system.collections.generic.keynotfoundexception:给定关键字不在字典中

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


--  作者:L88919138
--  发布时间:2013/4/15 9:48:00
--  
大师您好,我输入最新代码打开项目还是提示原来错误,我想会不会是我起始日期与结束日期设置的是日期格式?请多指教,谢谢。
--  作者:Bin
--  发布时间:2013/4/15 9:50:00
--  
外部表如果是MSSQL的话.不能用"#\'拼接日期哦..
[此贴子已经被作者于2013-4-15 9:51:47编辑过]

--  作者:L88919138
--  发布时间:2013/4/15 9:58:00
--  

我用的是SQL SERVER 2005外部数据源,现在在BeforeLoadOuterTable输入以下代码 

If e.User.ExtendedValues("起始日期") > "" And e.User.ExtendedValues("结束日期") > "" Then
    If e.DataTableName = "存货账" Then
        e.SelectString = "Select * From 存货账 Where [业务发生日期] >= \'" & e.User.ExtendedValues("起始日期") & "\' And [业务发生日期] <= \'" & e.User.ExtendedValues("结束日期") & "\'"
    End If
End If

可是依然提示相同错误,研究几天了就不知道那里出现问题?

 


--  作者:Bin
--  发布时间:2013/4/15 10:12:00
--  
应该是哪里的命名错了和数据表不一样.你可以先尝试一一对应 表名 字段名.      
--  作者:L88919138
--  发布时间:2013/4/15 11:12:00
--  

我用的是SQL SERVER 2005外部数据源,现在在BeforeLoadOuterTable输入以下代码 

If e.User.ExtendedValues("起始日期") > "" And e.User.ExtendedValues("结束日期") > "" Then
    If e.DataTableName = "存货账" Then
        e.SelectString = "Select * From 存货账 Where [业务发生日期] >= \'" & e.User.ExtendedValues("起始日期") & "\' And [业务发生日期] <= \'" & e.User.ExtendedValues("结束日期") & "\'"
    End If
End If

现在测试时提示错误

system.invaildcastexception:从字符串“”到类型“DATE”的转换无效,这又是什么出差?


--  作者:Bin
--  发布时间:2013/4/15 11:14:00
--  
说明日期格式不正确.  "" 空值无法转换为日期格式
[此贴子已经被作者于2013-4-15 11:14:07编辑过]