【发布时间】:2012-02-10 16:37:56
【问题描述】:
我有一个 GridView。如果我将代码中的 SelectCommand 复制并粘贴到 SQL Server Management Studio 中,我的代码就可以工作。它执行得很好。
如果我运行该页面并单击任何行的编辑,我会收到错误:
“关键字 'IS' 附近的语法不正确。”
我尝试查看使用 SQL Server Profiler 发生了什么。下面是 SelectCommand 的样子以及 SQL 接收的内容...
来自supplies.ascx 的SelectCommand
SELECT some stuff FROM here WHERE (this IS NULL) and (that=1) ORDER BY this DESC
SQL Server Profiler 报告
SELECT some stuff FROM here (this IS NULL) and (that=1) ORDER BY this DESC
我没有在这里放任何代码,因为我不确定什么是相关的,并且不想用不必要的代码行加载帖子。请让我知道您希望得到什么帮助。
请求的代码如下。我没有将 GridView 中的所有内容都放入......它非常大。如果需要,我可以更新。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="fldSupReqID"
DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display." AllowSorting="True"
CellPadding="4" ForeColor="#333333" Font-Size="10px">
<RowStyle BackColor="#EFF3FB" />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:myConnectionString %>"
DeleteCommand="DELETE FROM [tblSupplyRequests] WHERE [fldSupReqID] = @fldSupReqID"
InsertCommand="INSERT INTO [tblSupplyRequests] ([fldManufacturerID], [fldItemID], [fldFeeTypeID], [fldRequestDate], [fldStamp], [fldAddedByUser], [fldBID]) VALUES (@fldManufacturerID, @fldItemID, @fldFeeTypeID, @fldRequestDate, @fldStamp, @fldAddedByUser, @fldBID)"
ProviderName="<%$ ConnectionStrings:myConnectionString.ProviderName %>" SelectCommand="SELECT tblSupplyRequests.fldSupReqID, tblSupplyRequests.fldOrderToShipDate, tblSupplyRequests.fldBID AS BID, tblMerchantIDs.fldMerchantID AS MerchantID, salescontactinfo.sname_of_business AS [Merchant Name], salescontactinfo.scontactname1 AS Contact, salescontactinfo.scontactn1phone1 AS Phone, tblSupplyRequests.fldRequestDate, tblSupplyRequests.fldAddedByUser AS RequestedBy, INVtblManufacturers.fldManufacturerName AS [Term Manuf], INVtblInventoryItems_1.fldItemName AS [Term Model], INVtblInventoryTypes.fldInventoryTypename AS [Item Type], tblSupplyRequests.fldNumItemsRequested AS [Num Items], tblSupplyRequests.fldPaperItemID, tblSupplyRequests.fldPerItemCost, INVtblInventoryItems.fldMiscDesc, tblSupplyRequests.fldPersonCalling, tblSupplyRequests.fldTitlePersonCalling, tblSupplyRequests.fldNotes, salescontactinfo.sstate, tblSupplyRequests.fldManufacturerID, tblSupplyRequests.fldItemID, tblSupplyRequests.fldStamp, tblSupplyRequests.fldOrderToShipDate AS Expr1, tblSupplyRequests.fldOrderToShipBy FROM INVtblInventoryItems INNER JOIN tblSupplyRequests INNER JOIN salescontactinfo ON tblSupplyRequests.fldBID = salescontactinfo.sbusinessid LEFT OUTER JOIN tblMerchantIDs ON salescontactinfo.sbusinessid = tblMerchantIDs.fldBID LEFT OUTER JOIN INVtblManufacturers ON tblSupplyRequests.fldManufacturerID = INVtblManufacturers.fldManufacturerID ON INVtblInventoryItems.fldItemID = tblSupplyRequests.fldPaperItemID LEFT OUTER JOIN INVtblInventoryTypes ON tblSupplyRequests.fldInventoryTypeID = INVtblInventoryTypes.fldInventoryTypeID LEFT OUTER JOIN INVtblInventoryItems AS INVtblInventoryItems_1 ON tblSupplyRequests.fldItemID = INVtblInventoryItems_1.fldItemID WHERE (tblSupplyRequests.fldOrderToShipDate IS NULL) AND (tblMerchantIDs.fldMIDStatusID=1) ORDER BY tblSupplyRequests.fldRequestDate DESC"
UpdateCommand="UPDATE tblSupplyRequests SET fldOrderToShipDate=@fldOrderToShipDate, fldNotes = @fldNotes, fldTitlePersonCalling = @fldTitlePersonCalling, fldPersonCalling = @fldPersonCalling, fldRequestDate = @fldRequestDate WHERE (fldSupReqID = @fldSupReqID)">
<DeleteParameters>
<asp:Parameter Name="fldSupReqID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="fldManufacturerID" Type="Int32" />
<asp:Parameter Name="fldItemID" Type="Int32" />
<asp:Parameter Name="fldFeeTypeID" Type="Int32" />
<asp:Parameter Name="fldRequestDate" Type="DateTime" />
<asp:Parameter Name="fldStamp" Type="DateTime" />
<asp:Parameter Name="fldAddedByUser" Type="String" />
<asp:Parameter Name="fldBID" Type="Int32" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="fldOrderToShipDate" Type="DateTime" />
<asp:Parameter Name="fldNotes" Type="String" />
<asp:Parameter Name="fldTitlePersonCalling" Type="String" />
<asp:Parameter Name="fldPersonCalling" Type="String" />
<asp:Parameter Name="fldRequestDate" Type="DateTime" />
<asp:Parameter Name="fldSupReqID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
这就是 SQL Server Profiler 捕获的内容...
SELECT tblSupplyRequests.fldSupReqID, tblSupplyRequests.fldOrderToShipDate, tblSupplyRequests.fldBID AS BID, tblMerchantIDs.fldMerchantID AS MerchantID, salescontactinfo.sname_of_business AS [Merchant Name], salescontactinfo.scontactname1 AS Contact, salescontactinfo.scontactn1phone1 AS Phone, tblSupplyRequests.fldRequestDate, tblSupplyRequests.fldAddedByUser AS RequestedBy, INVtblManufacturers.fldManufacturerName AS [Term Manuf], INVtblInventoryItems_1.fldItemName AS [Term Model], INVtblInventoryTypes.fldInventoryTypename AS [Item Type], tblSupplyRequests.fldNumItemsRequested AS [Num Items], tblSupplyRequests.fldPaperItemID, tblSupplyRequests.fldPerItemCost, INVtblInventoryItems.fldMiscDesc, tblSupplyRequests.fldPersonCalling, tblSupplyRequests.fldTitlePersonCalling, tblSupplyRequests.fldNotes, salescontactinfo.sstate, tblSupplyRequests.fldManufacturerID, tblSupplyRequests.fldItemID, tblSupplyRequests.fldStamp, tblSupplyRequests.fldOrderToShipDate AS Expr1, tblSupplyRequests.fldOrderToShipBy FROM INVtblInventoryItems INNER JOIN tblSupplyRequests INNER JOIN salescontactinfo ON tblSupplyRequests.fldBID = salescontactinfo.sbusinessid LEFT OUTER JOIN tblMerchantIDs ON salescontactinfo.sbusinessid = tblMerchantIDs.fldBID LEFT OUTER JOIN INVtblManufacturers ON tblSupplyRequests.fldManufacturerID = INVtblManufacturers.fldManufacturerID ON INVtblInventoryItems.fldItemID = tblSupplyRequests.fldPaperItemID LEFT OUTER JOIN INVtblInventoryTypes ON tblSupplyRequests.fldInventoryTypeID = INVtblInventoryTypes.fldInventoryTypeID LEFT OUTER JOIN INVtblInventoryItems AS INVtblInventoryItems_1 ON tblSupplyRequests.fldItemID = INVtblInventoryItems_1.fldItemID (tblSupplyRequests.fldOrderToShipDate IS NULL) AND (tblMerchantIDs.fldMIDStatusID=1) ORDER BY tblSupplyRequests.fldRequestDate DESC
【问题讨论】:
-
你能发布一些代码吗?如何将数据绑定到gridview、datasource、html?
-
这可能与您的实际 SQL 查询非常相关(就像您使用保留字或 some-such-tom-foolery)。可以发一下吗?
-
WHERE在您的选择语句中缺失
标签: asp.net sql vb.net gridview