以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 查询与赋值并存 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73074) |
-- 作者:阿福 -- 发布时间: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多秒,可能是因为查询与赋值并存的原因导致效率低,所以恳请老师帮我改一下代码,提高效率!
|
-- 作者:大红袍 -- 发布时间:2015/8/11 22:48:00 -- 你这个不是查询和赋值并存。你两个是不同的表。
慢的原因是你用了 SQLFind,改成find更好(也就是把表的数据都加载出来),这样比直接用sqlfind效率要高。 |
-- 作者:阿福 -- 发布时间:2015/8/11 22:53:00 -- 谢谢大红袍老师,还有其他方法?因为全部加载可能要100万条数据,也很费时间! |
-- 作者:大红袍 -- 发布时间: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 |
-- 作者:大红袍 -- 发布时间:2015/8/11 23:09:00 -- 如果你对sql语句熟悉,处理起来是很快的效率。
测试sql语句参考 http://www.foxtable.com/help/topics/1484.htm
|
-- 作者:大红袍 -- 发布时间:2015/8/11 23:12:00 -- 最好是能做例子+数据上来测试。 |
-- 作者:阿福 -- 发布时间:2015/8/11 23:13:00 -- 谢谢大红袍老师指点,这么晚还没睡,辛苦了! |
-- 作者:阿福 -- 发布时间:2015/8/12 10:04:00 -- 大红袍老师,我在“窗口1_table1”,里需要多表查询可以保存编辑, 如果设置表类型成
sqltable,语句为: 但是SQLTable的Select语句只能取一个表的数据 SQLQuery, 但是数据又不能编辑和保存, select语句为空,窗口中的afterload事件设置:sqlcommand 但是数据还是又不能编辑和保存, 请问老师有什么办法? |
-- 作者:阿福 -- 发布时间:2015/8/12 10:07:00 -- ”Select {母猪分娩断奶信息}.[sys_user], {母猪分娩断奶信息}.[_identify], {母猪分娩断奶信息}.[编号], 胎次, 配种日期, 预计分娩日期, 进产房日期, 栋舍 As 移入栋舍, 执行人, 备注 FR OM {母猪分娩断奶信息} LEFT JOIN {母猪转产房} ON {母猪分娩断奶信息}.[sys_user] = {母猪转产房}.[sys_user] And {母猪分娩断奶信息}.[编号] = {母猪转产房}.[编号] ORDER BY 配种日期" |
-- 作者:大红袍 -- 发布时间:2015/8/12 10:16:00 -- 多表不能一起编辑保存的。
如果编辑保存,就要自己编写代码保存了。
比如保存按钮:循环每行数据,如果修改了(rowstate属性),就取出两表的主键,查找到对应的行,把值设置进去(sqlFind方法)保存;如果是新增的情况,就直接新增一行数据保存 |