我有两个错误,即:
无法转换类型为“System.Collections.Generic.List`1[VB$AnonymousType_15`7[System.String,System.String,System.String,System.Object,System.Object,System.Object,System. String]]' 键入 'System.Collections.Generic.IList`1
行代码
bindingSource = New BindingSource With {.DataSource = New BindingList(Of ItemCards2)(CType(Cardex.ToList(), IList(Of ItemCards2)))}
无法推断常见类型,因为可能有多种类型
行代码:
PIQ = If(PIQ <> CInt("0"), PIQ, ""),
SIQ = If(SIQ <> CInt("0"), SIQ, ""),
BLC = If(BLC <> CInt("0"), BLC, ""),
我的代码有问题吗请指导我
谢谢
Public Class Form2
Private bindingSource As BindingSource = Nothing
Private MasterItem,
PurchaseDetails,
SalesDetails As New List(Of ItemCards2)
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
LoadLINQ()
End Sub
Private Function CreateConnection() As String
Return ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\TRIAL2.accdb;Persist Security Info=False;")
End Function
Private Sub LoadLINQ()
Const Qry_MST = "SELECT * FROM MASTERITEM"
Const Qry_PI = "SELECT a.ITEM, '' AS PRODUCTIONNAME, '' AS BRAND, 0 AS LSQ, 0 AS TPIQ, a.QTY AS PIQ, 0 AS TSIQ, 0 AS SIQ, 0 AS TRSQ, 0 AS RSQ, 0 AS TRPQ, 0 AS RPQ, 0 AS BLC FROM (PurchaseDetails a INNER JOIN" &
" Purchase b ON a.INVONO = b.INVONO) INNER JOIN" &
" CUSTCODE c On b.CUSTCODE = c.CUSTCODE" &
" WHERE b.DATEINVO >= CDate('01/01/2024')" &
" AND c.GROUP IS NULL"
Const Qry_SI = "SELECT a.ITEM, '' AS PRODUCTIONNAME, '' AS BRAND, 0 AS LSQ, 0 AS TPIQ, 0 AS PIQ, 0 AS TSIQ, a.QTY AS SIQ, 0 AS TRSQ, 0 AS RSQ, 0 AS TRPQ, 0 AS RPQ, 0 AS BLC FROM (SalesDetails a INNER JOIN" &
" Sales b ON a.INVONO = b.INVONO) INNER JOIN" &
" CUSTCODE c ON b.CUSTCODE = c.CUSTCODE" &
" WHERE b.DATEINVO >= CDATE('01/01/2024')" &
" AND c.GROUP IS NULL"
Using Connection = New OleDbConnection(CreateConnection())
With Connection
MasterItem = CType(Connection.Query(Of ItemCards2)(Qry_MST), List(Of ItemCards2))
PurchaseDetails = CType(Connection.Query(Of ItemCards2)(Qry_PI), List(Of ItemCards2))
SalesDetails = CType(Connection.Query(Of ItemCards2)(Qry_SI), List(Of ItemCards2))
End With
End Using
Dim Cardex =
From card In PurchaseDetails.Union(SalesDetails)
Join mst In MasterItem On card.ITEM Equals mst.ITEM
Group card By card.ITEM, mst.PRODUCTIONNAME, mst.BRAND Into Group
Let PIQ = (From x In Group Select x.PIQ).Sum
Let SIQ = (From x In Group Select x.SIQ).Sum
Let BLC = (PIQ) - (SIQ)
Let STATUS = If(BLC < 24, "NEED TO PRODUCE", "")
Select ITEM,
PRODUCTIONNAME,
BRAND,
PIQ = If(PIQ <> CInt("0"), PIQ, ""),
SIQ = If(SIQ <> CInt("0"), SIQ, ""),
BLC = If(BLC <> CInt("0"), BLC, ""),
STATUS
Order By ITEM
bindingSource = New BindingSource With {.DataSource = New BindingList(Of ItemCards2)(CType(Cardex.ToList(), IList(Of ItemCards2)))}
DataGridView1.DataSource = bindingSource
End Sub
End Class
很难给你答案,因为我们没有看到涉及的类型。但在第二种情况下,你似乎混合了字符串和整数。
SIQ <> CInt("0")
毫无意义。如果你想要一个整数常量,只需写 SIQ <> 0
。如果 PIQ
是整数,则无法返回字符串 ""
。如果要将 0
显示为空字符串,请适当设置单元格或文本框的格式。格式将为 "#"
或 "#,#"
(带千位分隔符),或者如果您有浮点类型 "#,#.##"
。