以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 表 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=113476)
|
-- 作者:Springamy
-- 发布时间:2018/1/16 17:10:00
-- 表
Dim y As Integer = Date.Today.Year Dim w As Integer = Date.Today.DayOfWeek \'算出今天是星期几 Dim t1 As Date = Date.Today.AddDays(-w) \'获取本周的第一天 Dim t2 As Date = Date.Today.AddDays(6 - w) \'获取本周的最后一天
Dim dt1 As Date = #1/1/2014# Dim dt2 As Date = Date.Today Dim s As String = "select .............\' order by d.rq" \'已查出一堆数据存放在临时表中 有 编码 列 cmd.CommandText = s Dim d As DataTable = cmd.ExecuteReader Output.Show(s)
\'Dim dr1 As DataRow = d.DataRows \'For Each dr2 As DataRow In DataTables("Table1").Select("编码 = \'" & & "\'")
\'Next 我想要查找编码在临时表中是否有相同的编码怎么表示
业务描述:
窗口按时间段加载每周的数据, 其中编码列 需要从 临时表中查找,如果没有重复的编码,表示是新编码,需要加样式以提示用户
但是在DrawCell中代码写太多了,很卡,请问有什么别的方法吗?
窗口中的表是SQLQuery
|
-- 作者:有点甜
-- 发布时间:2018/1/16 18:03:00
--
1、临时表不要写到drawcell事件,尽量写在窗口AfterLoad事件。查出的临时表,用一个变量记录起来,如
cmd.CommandText = s Dim d As DataTable = cmd.ExecuteReader vars("临时表") = d
2、在你drawcell,查询临时表进行判断,如
Dim d As DataTable = vars("临时表") Dim fdr As DataRow = d.Find("编号 = \'" & e.Row("编号") & "\'") If fdr Is Nothing Then \'没有重复 End If
|
-- 作者:Springamy
-- 发布时间:2018/1/17 10:31:00
-- 数据源的问题
Dim cmd As New SQLCommand cmd.C StatusBar.Message1= "正在加载数据,请稍等..." Application.DoEvents
drawcell 代码:
Dim d As DataTable = vars("临时表") Dim fdr As DataRow = d.Find("cpbm = \'" & e.Row("编码 ") & "\'") If fdr Is Nothing Then \'没有重复 End If
甜大大,现在还有一个问题就是 在afterload写,我的数据源不能灵活切换,
如下:在选择时间段之前我可以选择 测试账套\\ 广州账套\\北京账套 等等 对应不同的数据源
可是在窗口打开的同时还没有选择帐套,所以造成了编码不属于Table1的错误,如图二
因为打开窗口的时候还没有加载数据,(我也不知道是不是这个原因)
还需要怎么修改
此主题相关图片如下:1.png
此主题相关图片如下:2.png
|
-- 作者:Springamy
-- 发布时间:2018/1/17 10:33:00
--
Dim cmd As New SQLCommand cmd.C StatusBar.Message1= "正在加载数据,请稍等..." Application.DoEvents
|
-- 作者:有点甜
-- 发布时间:2018/1/17 10:37:00
--
选择数据源之后,再生成vars("临时表")
vars没有值的时候,不处理drawcell事件,加一个判断
[此贴子已经被作者于2018/1/17 10:37:50编辑过]
|
-- 作者:Springamy
-- 发布时间:2018/1/17 10:52:00
-- 不是很懂
我不太理解你的意思,但我感觉我应该是在把窗口中的数据加载完之后才能跟vars("临时表")比对数据吧
|
-- 作者:有点甜
-- 发布时间:2018/1/17 10:55:00
--
不理解你要做什么。有问题,做个实例发上来说明。
1、临时表不要在drawcell事件生成,请在另外某一个地方生成;
2、drawcell,在临时表没生成前,不要执行代码;
3、不会做上传实例。
|
-- 作者:Springamy
-- 发布时间:2018/1/17 11:04:00
-- 怎么判断
嗯呐,谢谢甜大!
怎么判断临时表有没有生成.
|
-- 作者:有点甜
-- 发布时间:2018/1/17 11:11:00
--
以下是引用Springamy在2018/1/17 11:04:00的发言:
嗯呐,谢谢甜大!
怎么判断临时表有没有生成.
1、可以另外用一个变量。
if vars("生成") = true Then
End If
2、你在另一个地方生成以后,就赋值为true
vars("生成") = True
|
-- 作者:Springamy
-- 发布时间:2018/1/17 14:09:00
--
For i = 0 To d.DataRows.Count-1 msgbox("执行了吗") Dim fdr As DataRow = dt.Find("编码 = \'" & d.DataRows(i)("cpbm") & "\'") msgbox("执行") If fdr Is Nothing Then fdr("是否NewBom") = "否" Else fdr("是否NewBom") = "是" End If Next
dt 为窗口中加载的表,d是要查找的数据存放的临时表
dt中加载了一周的数据.然后每个数据一一从d临时表中查找,看看是否有相同的编码
两个msgbox执行一个就报错了,显示为找到实例对象
|