以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 有关find不能继续检索并填充 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=48189) |
|||||||||||||||
-- 作者:zengpeng26 -- 发布时间:2014/3/24 20:44:00 -- 有关find不能继续检索并填充 本人有一个“结算单”表格,如下,通过底盘号检索最近一次回厂日期, 检索到后将\'维修结算时间\'填充到\'上次回厂时间\'内, 但是find运行到底盘号只有唯一值时就不继续了,可是已经有判断语句了, 各位大侠,是什么原因呢?
Dim dt As DataTable = DataTables("结算单") Dim y As Date Dim dr,dr1,dr2 As DataRow For i As Integer = 0 To dt.DataRows.Count -1 dr = dt.DataRows(i) dr2 = dt.DataRows(i) dr1 = dt.Find("[底盘号] = \'" & dr("底盘号") & "\'","维修结算时间 Desc",1) \' 检索出最近一次的维修结算时间 if dr1 isnot nothing then dr2("上次回厂日期") = dr1("维修结算时间") end if Next [此贴子已经被作者于2014-3-24 20:46:20编辑过]
|
|||||||||||||||
-- 作者:有点酸 -- 发布时间:2014/3/24 21:03:00 -- dr1 = dt.Find("[底盘号] = \'" & dr("底盘号") & "\'","维修结算时间 Desc",0) \' 检索出最近一次的维修结算时间 |
|||||||||||||||
-- 作者:zengpeng26 -- 发布时间:2014/3/24 22:14:00 -- 重点不是在最近一次的选择上,而是检索不到数据时,报错。 |
|||||||||||||||
-- 作者:有点酸 -- 发布时间:2014/3/24 22:18:00 -- 代码看不出问题,报什么错? 要不自己分析一下吧: http://www.foxtable.com/help/topics/1485.htm
最好是给例子大家测试。
[此贴子已经被作者于2014-3-24 22:21:13编辑过]
|
|||||||||||||||
-- 作者:zengpeng26 -- 发布时间:2014/3/24 22:39:00 -- 解决了,不是报错,是运行时间太长,大概要200秒才能算完7500行数据。 有什么高效的算法没有?
[此贴子已经被作者于2014-3-24 22:39:00编辑过]
|
|||||||||||||||
-- 作者:有点酸 -- 发布时间:2014/3/24 22:42:00 -- http://www.foxtable.com/help/topics/2225.htm
|
|||||||||||||||
-- 作者:zengpeng26 -- 发布时间:2014/3/25 0:01:00 -- 像我这样的,怎么写代码能够做到检索和赋值分开呢? |
|||||||||||||||
-- 作者:lsy -- 发布时间:2014/3/25 7:47:00 -- 例子传上来,至少将表导出来,上传。 |
|||||||||||||||
-- 作者:狐狸爸爸 -- 发布时间:2014/3/25 8:36:00 -- 蒙一下:
Dim Dic As new Dictionary(of DataRow, Integer) |
|||||||||||||||
-- 作者:zengpeng26 -- 发布时间:2014/3/25 9:10:00 -- Dim dt As DataTable = DataTables("结算单") Dim Dic As new Dictionary(of Integer, Date) Dim dr,dr1,dr2 As DataRow For i As Integer = 0 To dt.DataRows.Count -1 dr = dt.DataRows(i) dr2 = dt.DataRows(i) dr1 = dt.Find("[底盘号] = \'" & dr("底盘号") & "\'","维修结算时间 Desc",1) \' 检索出最近一次的维修结算时间 If dr1 IsNot Nothing Then
dic.add(i,dr1("维修结算时间")) End If Next For Each i As Integer In dic.Keys dr2 = dt.DataRows(i) dr2("上次回厂日期") = dic(i) Next 谢谢狐狸爸爸,我自己写的代码,解决问题了!
|