以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sql查询语句可以直接返回一行或多行集合吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=51017)

--  作者:zpx_2012
--  发布时间:2014/5/17 11:59:00
--  sql查询语句可以直接返回一行或多行集合吗?
Dim dr As DataRow
Dim cmd As New SQLCommand
cmd.ConnectionName = Mydata
Dim dt As DataTable
Dim flt,str As String
flt = "生产单号 = \'" & e.DataRow("需求单号") & "\' and 加工类别 = \'外协加工\' And 工序名称 = \'" & e.DataRow("加工内容") & "\'"
cmd.CommandText = "Select 生产单号,生产数量,累计加工 from 生产明细 a inner join (select 需求单号,加工内容,sum(数量) as 累计加工 from 外协加工明细 group by 需求单号,加工内容) c on a.生产单号 = c.需求单号 where " & flt
dt = cmd.ExecuteReader()
If dt.DataRows.count > 0 Then
    dr = dt.DataRows(0) 
    If dr("累计出库") + V > dr("生产数量") * 1.1 Then
        MessageBox.Show("累计外协数量已经大于生产数量的10%,不能保存!")
        e.Cancel = True
    End If
End If

如上代码,每次都要查询返回一个表dt,然后再定位到其第一行,感觉很繁琐,请问select的查询语句能否直接返回一行或者行集(list(of datarow)),然后就直接调用返回的行或行集合来用,谢谢!


--  作者:Bin
--  发布时间:2014/5/17 12:01:00
--  
不行,只能返回一个表.  表和行集合有区别吗? 差不多的啊.
--  作者:zpx_2012
--  发布时间:2014/5/17 12:18:00
--  
主要就是想能象 dr = cmd.ExecuteReader() 类似这样就直接返回一行多方便。
--  作者:Bin
--  发布时间:2014/5/17 12:23:00
--  
dt.DataRows 就多了个 datarows 而已

你要返回集合一样要声明集合,只不过把声明集合变成声明表而已.