我在VB.NET中使用Webmatrix。我有一个声明为
的数据库Dim db As Database
db = Database.Open("xxx")
我构建了这个查询:
Dim strQuery As String
strQuery = "SELECT NomexSheeter.BlockNumber, NomexSheeter.WorkOrder, dbo_tbl_WIPMASTER_NF.ITEM_NBR " _
& "FROM NomexSheeter INNER JOIN dbo_tbl_WIPMASTER_NF ON NomexSheeter.WorkOrder = dbo_tbl_WIPMASTER_NF.WORK_ORDER " _
& "WHERE NomexSheeter.WorkOrder = @0 AND NomexSheeter.BlockNumber = @1"
我这样调用查询:
Dim data = db.Query(strQuery, "99A", "901C")
这是一些标记...
<input type="hidden" id="barcodeValue" value="@data.ITEM_NBR"/>
运行显示以下内容的页面时出现编译错误: 'ITEM_NBR'不是'System.Collections.Generic.IEnumerable(Of Object)'的成员。
由于网上有很少的VB.NET Webmatrix文档,我只能猜测。
答案 0 :(得分:1)
您的退货类型是一个集合。它是一个IEnumerable(Of Object)。要访问集合中各个元素的属性,您必须使用ElementAt()
来访问特定项目或For Each
循环来依次访问每个元素。
Dim data = db.QuerySingle(strQuery, "99A", "901C")
<input type="hidden" id="barcodeValue" value="@data.ElementAt(0).ITEM_NBR"/>
或者你可以使用First方法到达第一行,如果你确定至少会返回一行:
Dim data = db.QuerySingle(strQuery, "99A", "901C")
<input type="hidden" id="barcodeValue" value="@data.First().ITEM_NBR"/>
如果您只期望一行数据符合您的条件,则应使用QuerySingle
方法而不是Query
方法。返回一个对象,您可以直接访问它的属性。
Dim data = db.QuerySingle(strQuery, "99A", "901C")
<input type="hidden" id="barcodeValue" value="@data.ITEM_NBR"/>
在我的这篇以C#为重点的文章中,有更多关于各种数据库方法及其返回类型的内容,但您应该能够理解为什么每种返回类型都需要区别对待:http://www.mikesdotnetting.com/Article/214/How-To-Check-If-A-Query-Returns-Data-In-ASP.NET-Web-Pages