Foxtable(狐表)用户栏目专家坐堂 → 表


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

主题:表

美女呀,离线,留言给我吧!
Springamy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By: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

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
数据源的问题  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By:2018/1/17 10:33:00 [只看该作者]

Dim cmd As New SQLCommand
cmd.C
StatusBar.Message1= "正在加载数据,请稍等..."
Application.DoEvents

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/17 10:37:00 [只看该作者]

选择数据源之后,再生成vars("临时表")

 

vars没有值的时候,不处理drawcell事件,加一个判断

[此贴子已经被作者于2018/1/17 10:37:50编辑过]

 回到顶部
美女呀,离线,留言给我吧!
Springamy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
不是很懂  发帖心情 Post By:2018/1/17 10:52:00 [只看该作者]

我不太理解你的意思,但我感觉我应该是在把窗口中的数据加载完之后才能跟vars("临时表")比对数据吧

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/17 10:55:00 [只看该作者]

不理解你要做什么。有问题,做个实例发上来说明。

 

1、临时表不要在drawcell事件生成,请在另外某一个地方生成;

 

2、drawcell,在临时表没生成前,不要执行代码;

 

3、不会做上传实例。

 

 


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
怎么判断  发帖心情 Post By:2018/1/17 11:04:00 [只看该作者]

嗯呐,谢谢甜大!

怎么判断临时表有没有生成.图片点击可在新窗口打开查看

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By: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执行一个就报错了,显示为找到实例对象


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