以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]find 主键列  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=154206)

--  作者:天一生水
--  发布时间:2020/9/8 8:36:00
--  [求助]find 主键列
老师好!
如下图,右边的表获取左边表的数据,显示主键信息没有问题,但是获取不到数据,是不是find的表达式有问题?
谢谢!


图片点击可在新窗口打开查看此主题相关图片如下:截屏图片 (2).jpg
图片点击可在新窗口打开查看

代码:
......

’获取数据
Dim drs As List(of DataRow) = DataTables("批量预测").SQLSelect("代码 = \'" & dm & "\'" )

Dim i0 As Integer = 0     ’预设本行的主键值
For Each dr As DataRow In drs
    Dim dr01 As DataRow = DataTables("导入数据").SQLFind("代码 = \'" & dm & "\'  And 日期 = \'" & dr("日期") & "\'" )
    If dr01 IsNot Nothing Then
        dr("实际涨跌幅") = dr01("涨跌幅")
        dr("换手率") = dr01("换手率")
        i0 = dr("_Identify")    ’本行的主键值
    End If
    
    Dim dr02 As DataRow = DataTables("导入数据").SQLFind("[_Identify] = i0 +1 ")    ’下1行
    If dr02 IsNot Nothing Then
        dr("上1日换手率") = dr02("换手率")
    End If
    
    Dim dr002 As DataRow = DataTables("导入数据").SQLFind("[_Identify] = i0 +2 ")   ’下2行
    If dr002 IsNot Nothing Then
        dr("上2日换手率") = dr002("换手率")
    End If
    
    Dim dr003 As DataRow = DataTables("导入数据").SQLFind("[_Identify] = i0 +3 ")   ’下3行
    If dr003 IsNot Nothing Then
        dr("上3日换手率") = dr003("换手率")
    End If
Next


--  作者:有点蓝
--  发布时间:2020/9/8 9:38:00
--  
自增主键不是按顺序增加的,很可能会跳号。建议使用自己的顺序号处理业务,不要使用[_Identify]做业务处理
--  作者:天一生水
--  发布时间:2020/9/8 11:09:00
--  
谢谢老师!
在 DataRow 里也有行的概念,但是Index是row的属性,DataRow 的所在行数怎么弄?

Dim dr As DataRow
dr =
DataTables("订单").DataRows(0)


--  作者:有点蓝
--  发布时间:2020/9/8 11:23:00
--  
DataTable的顺序是乱的,不存在行号这种东西,请使用自己自定义的顺序号处理业务