1

で update を使用しようとすると、大きな問題が発生しますGridView。以下のコードから、[編集] をクリックすると、[KPI] 名と [現在のターゲット] を変更するオプションが表示されます。しかし、「更新」をクリックすると、次のエラー メッセージが表示されます。

「nvarchar」付近の構文が正しくありません

ここに私のマークアップがあります:

<p>
    <br />
    <asp:DropDownList ID="GroupSelection" runat="server" DataSourceID="Group" DataTextField="FcstGroup"
        DataValueField="FcstGroup">
    </asp:DropDownList>
</p>
<p>
    <asp:GridView ID="GridView2" runat="server" DataSourceID="SqlDataSource1">
        <Columns>
            <asp:CommandField ShowEditButton="True" />
        </Columns>
    </asp:GridView>
</p>
<p>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:WFMConnectionString3 %>"
        SelectCommand="select 
                            case _parameter.name as KPI,
                            [target]*100 as [Current Target]
                            from _parameter inner join _reporting_group
                            on _parameter.reporting_group = _reporting_group.id

                            where _reporting_group.name = @WG " 
UpdateCommand="update _parameter set target = .80
                                where reporting_group = (select ID from _reporting_group where name = @WG)
                                and name = 'nco_i_e' ">
        <SelectParameters>
            <asp:ControlParameter ControlID="GroupSelection" Name="WG" PropertyName="SelectedItem.text" />
        </SelectParameters>
        <UpdateParameters>
            <asp:ControlParameter ControlID="GroupSelection" Name="WG" PropertyName="SelectedItem.text" />
        </UpdateParameters>
    </asp:SqlDataSource>
</p>
<asp:SqlDataSource ID="Group" runat="server" ConnectionString="<%$ ConnectionStrings:WFMConnectionString3 %>"
    SelectCommand=" SELECT     distinct _reporting_group.name AS FcstGroup
FROM         dbo._metrics INNER JOIN  
                  dbo._reporting_group ON dbo._metrics.reporting_group = dbo._reporting_group.id ">
</asp:SqlDataSource>

問題は更新コマンドにあると推測していますが、これは SQL で実行すると正しく機能します。

UpdateCommand="update _parameter set target = .80
                                where reporting_group = (select ID from _reporting_group where name = @WG)
                                and name = 'nco_i_e' ">

現時点では、更新コマンドは固定セットの「ターゲット」値と固定「名前」値のみを使用していることに注意してください。最終的には、「現在のターゲット」に入力した値と KPI 値を使用する必要があります。しかし、「nvarchar」エラー メッセージが表示される理由を理解できたら、これに取り組みます。

誰かが問題がどこにあるのかを見つけることができれば、私はそれを感謝します.

4

1 に答える 1