Foxtable(狐表)用户栏目专家坐堂 → 查询与赋值并存


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

主题:查询与赋值并存

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


加好友 发短信
等级:幼狐 帖子:196 积分:1357 威望:0 精华:0 注册:2015/3/25 16:42:00
查询与赋值并存  发帖心情 Post By:2015/8/11 22:43:00 [只看该作者]

For Each a As String In DataTables("母猪基本信息").SQLGetValues("编号")
Dim dr As DataRow = DataTables("母猪分娩断奶信息").SQLFind("[sys_user] = '" & user.Name & "' and [编号] = '" & a & "'","配种日期 desc")
If dr IsNot Nothing Then
If dr.IsNull("分娩_日期") Then
Dim dt As DataRow = DataTables("母猪转产房").AddNew()
dt("编号") = dr("编号")
Dim v As Date = dr("配种日期").adddays(114)
dt("预计分娩日期") = v
End If
End If
Next

假如Dim dt As DataRow = DataTables("母猪转产房").AddNew(),增加10000行,那么就要花300多秒,可能是因为查询与赋值并存的原因导致效率低,所以恳请老师帮我改一下代码,提高效率!

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/11 22:48:00 [只看该作者]

 你这个不是查询和赋值并存。你两个是不同的表。

 

 慢的原因是你用了 SQLFind,改成find更好(也就是把表的数据都加载出来),这样比直接用sqlfind效率要高。


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


加好友 发短信
等级:幼狐 帖子:196 积分:1357 威望:0 精华:0 注册:2015/3/25 16:42:00
  发帖心情 Post By:2015/8/11 22:53:00 [只看该作者]

谢谢大红袍老师,还有其他方法?因为全部加载可能要100万条数据,也很费时间!

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/11 23:07:00 [只看该作者]

以下是引用阿福在2015/8/11 22:53:00的发言:
谢谢大红袍老师,还有其他方法?因为全部加载可能要100万条数据,也很费时间!

 

那就只能用sql语句来处理了。

 

这句,把两表连接起来,得到分娩是空值的记录

 

select * fr om {基本信息} as a left join {断奶信息} as b on a.编号 = b.编号 where sys_user = '张三' and 分娩_日期 is null

 

然后,你可以根据这个表往 母猪转产房 增加行(用代码的方法或sql语句都可以)

 

insert into {母猪转产房} (编号, 预计分娩日期) select a.编号, b.配种日期 fr om {基本信息} as a left join {断奶信息} as b on a.编号 = b.编号 where sys_user = '张三' and 分娩_日期 is null


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/11 23:09:00 [只看该作者]

如果你对sql语句熟悉,处理起来是很快的效率。

 

测试sql语句参考 http://www.foxtable.com/help/topics/1484.htm

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/11 23:12:00 [只看该作者]

 最好是能做例子+数据上来测试。

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


加好友 发短信
等级:幼狐 帖子:196 积分:1357 威望:0 精华:0 注册:2015/3/25 16:42:00
  发帖心情 Post By:2015/8/11 23:13:00 [只看该作者]

谢谢大红袍老师指点,这么晚还没睡,辛苦了!

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


加好友 发短信
等级:幼狐 帖子:196 积分:1357 威望:0 精华:0 注册:2015/3/25 16:42:00
  发帖心情 Post By:2015/8/12 10:04:00 [只看该作者]

大红袍老师,我在“窗口1_table1”,里需要多表查询可以保存编辑,
如果设置表类型成

sqltable,语句为:
但是SQLTable的Select语句只能取一个表的数据

SQLQuery
但是数据又不能编辑和保存,

select语句为空,窗口中的afterload事件设置:sqlcommand
但是数据还是又不能编辑和保存,

请问老师有什么办法?


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


加好友 发短信
等级:幼狐 帖子:196 积分:1357 威望:0 精华:0 注册:2015/3/25 16:42:00
  发帖心情 Post By:2015/8/12 10:07:00 [只看该作者]

”Select {母猪分娩断奶信息}.[sys_user], {母猪分娩断奶信息}.[_identify], {母猪分娩断奶信息}.[编号], 胎次, 配种日期, 预计分娩日期, 进产房日期, 栋舍 As 移入栋舍, 执行人, 备注 FR OM {母猪分娩断奶信息} LEFT JOIN  {母猪转产房} ON {母猪分娩断奶信息}.[sys_user] = {母猪转产房}.[sys_user] And {母猪分娩断奶信息}.[编号] = {母猪转产房}.[编号] ORDER BY 配种日期"


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/12 10:16:00 [只看该作者]

多表不能一起编辑保存的。

 

如果编辑保存,就要自己编写代码保存了。

 

比如保存按钮:循环每行数据,如果修改了(rowstate属性),就取出两表的主键,查找到对应的行,把值设置进去(sqlFind方法)保存;如果是新增的情况,就直接新增一行数据保存


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