プロが教えるわが家の防犯対策術!

やりたいことをまとめてみました。

テキストボックスを2つ用意して
「txt_company」には会社名を「txt_Name」には氏名を入力し
ラジオボタンリスト「rdo_Type」からも選択した後、
「Button1」ボタンをクリックすると3つのデータを「ユーザ」テーブルへ挿入。

という風にしたいのですがうまく行きません。
エラーは出ないのですが、何も挿入されていません。
もしかしたら元々の構成を勘違いしているのかもしれないのでコードを記述してみました。
何方かよろしくお願いします。

・イベント

Protected Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
SqlDataSource1.Insert()
End Sub

Protected Sub SqlDataSource1_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs)
e.Command.Parameters("@company").Value = txt_company.Text
e.Command.Parameters("@name").Value = txt_Name.Text
e.Command.Parameters("@type").Value = rdo_Type.SelectedValue
End Sub

Protected Sub SqlDataSource1_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)
Label1.Text = e.AffectedRows + "件処理されました"
End Sub


・SqlDataSource

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:MyNorthwind %>"
InsertCommand="INSERT INTO ユーザ (会社名, 氏名, タイプ) SELECT(@company, @name, @type)">
<InsertParameters>
<asp:formparameter Name="company" ConvertEmptyStringToNull="true"/>
<asp:formparameter Name="name" />
<asp:formparameter Name="type" />
</InsertParameters>
</asp:SqlDataSource>

A 回答 (1件)

なんで、


InsertCommand="INSERT INTO ユーザ (会社名, 氏名, タイプ) SELECT(@company, @name, @type)">

なのでしょうか?
別テーブルからデータをSELECTしたものを登録しようとしているわけ
じゃないですよね?

そしたら単純に、SELECTじゃなく、VALUESを使えば良いような。

InsertCommand="INSERT INTO ユーザ (会社名, 氏名, タイプ) VALUES(@company, @name, @type)"

それから、何のDB製品を使っているのかは、質問する際に
記載して頂けると助かります。よろしくお願いします。
    • good
    • 0
この回答へのお礼

解決致しました。
大変ありがとうございました。

お礼日時:2007/09/18 15:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!