2012-02-10 4 views
0

У меня есть GridView. Моя команда SelectCommand в коде работает, если я копирую и вставляю его в SQL Server Management Studio. Он отлично работает.GridView SelectCommand отсутствует ГДЕ во время выполнения

Если я запускаю страницу и нажмите кнопку Изменить для любой строки я получаю ошибку:

"Incorrect syntax near the keyword 'IS'."

Я пытался понять, что происходит на использование SQL Server Profiler. Вот что SelectCommand выглядит и то, что SQL получает ...

SelectCommand из supplies.ascx

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 [email protected], 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 
+0

Можете ли вы разместить код? как вы привязываете данные к gridview, datasource, html? –

+0

Это, вероятно, очень * связано с вашим реальным SQL-запросом (например, вы используете зарезервированные слова или некоторые-то-глупые). Можете ли вы опубликовать это? – jadarnel27

+0

'WHERE' отсутствует в вашем заявлении select – Mubarek

ответ

0

Я ненавижу говорить об этом, но это может быть просто, что ASP.NET является разбор запроса неправильно из-за все вложенные INNER JOIN s, которые предшествуют всем этим на одной линии. Интересно, поможет ли форматирование вашего SQL? Есть очень классный инструмент онлайн для neatly formatting your SQL statements.

Вот отформатирован версия вашего SQLDataSource:

<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> 

Примечание: если ваши запросы в SqlDataSource получают этот комплекс, вы можете рассмотреть вопрос о переносе этой логики в слой доступа класса/данные для будущего ремонтопригодность. Сказав это, я понимаю, что иногда вы застряли с тем, что у вас есть для времени =) Удачи!

Смежные вопросы