2012-02-10 4 views
0

私はGridViewを持っています。コード内のSelectCommandは、SQL Server Management Studioにコピーして貼り付けると機能します。それは正常に実行されます。GridView SelectCommandが実行時に欠落しています

私はページを実行すると、私はエラーを取得する任意の行の[編集]をクリックした場合:

"Incorrect syntax near the keyword 'IS'."

私は、SQL Serverプロファイラを使って何が起こっているのか見てみました。ここで

でSelectCommandがsupplies.ascx

から...でSelectCommandがどのように見えると何のSQLが受信しているものだ
SELECT some stuff FROM here WHERE (this IS NULL) and (that=1) ORDER BY this DESC 

SQL Serverプロファイラは、私がいるので、ここで任意のコードを入れていない

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プロファイラがキャッチ何...

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

いくつかのコードを投稿できますか?どのようにグリッドビュー、データソース、htmlにデータをバインドするのですか? –

+0

これはおそらく、あなたの実際のSQLクエリに関連しているかもしれません(たとえば、予約語やそのようなものを使用しているようなもの)。投稿できますか? – jadarnel27

+0

SELECTステートメントに 'WHERE'がありません – Mubarek

答えて

0

私はこれを言うことを憎むが、それだけでASP.NETがあるため、すべてのネストされたINNER JOINの誤ったクエリを解析していることが考えられ1行にすべて先行します。あなたの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コントロールで、あなたのクエリが、この複合体を取得している場合、あなたは将来のためにクラス/データアクセス層にこのロジックを移動することを検討することもできますが、保守性。それを言って、時々あなたは時間のために持っているものにこだわっていることを理解する=)幸運!

関連する問題