2011-11-15 19 views
2

dbエントリのscope_identityを取得していますが、その変数を別のSqlDataSourceで主に使用しますが、その変数にアクセスできません。 変数がmsgboxに表示されていて、正しく表示されていますが、SqlDataSourceで変数にアクセスする方法がわかりません。ここに私のコードです。SqlDataSourceで出力パラメータを使用する

これは、最初の情報を挿入してscope_identityと_insertedイベントを受け取ったデータソースです。 コード:ここで

<asp:SqlDataSource ID="InsertPatientInfo" runat="server" ConnectionString="<%$ ConnectionStrings:DataConnectionString %>" 
providername="<%$ ConnectionStrings:DataConnectionString.ProviderName %>" 
    InsertCommandType="StoredProcedure" 
    InsertCommand = "InsertPatInfo" 
    OnInserted="InsertPatientInfo_Inserted"> 
    <InsertParameters> 
     <asp:ControlParameter ControlID = "PatInfoName" Name="PatName" PropertyName="text"/> 
     <asp:ControlParameter ControlID = "PatInfoAge" Name="PatAge" PropertyName="text" /> 
     <asp:ControlParameter ControlID = "PatInfoState" Name="PatState" PropertyName="selectedvalue" /> 
     <asp:ControlParameter ControlID = "PatInfoCountry" Name="PatCountry" PropertyName="selectedvalue" /> 
     <asp:ControlParameter ControlID = "PatInfoPhone" Name="PatPhone" PropertyName = "text" /> 
     <asp:ControlParameter ControlID = "PatInfoCell" Name="PatCell" PropertyName="Text" /> 
     <asp:Parameter DbType="Int32" Direction="Output" Name="PatID" /> 
    </InsertParameters> 
Protected Sub InsertPatientInfo_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles InsertPatientInfo.Inserted 
    Dim PatID As String = e.Command.Parameters("@PatID").Value 
    MsgBox(PatID, MsgBoxStyle.Critical) 
End Sub 

はInsertCommandはが含まれて私はそれが働いて得れば、私は、ストアドプロシージャへの切り替えを計画しています、次のSqlDataSourceの呼び出しです。私は、スカラーvaraible @PatIDが設定されていないというエラーを取得し続ける、私はそれを宣言すると思いますか? コード:

 <asp:SqlDataSource ID="InsInqInfo" runat="server" ConnectionString="<%$ ConnectionStrings:DataConnectionString %>" 
     providerName="<%$ ConnectionStrings:DataConnectionString.ProviderName %>" 
     InsertCommand = "Insert into tblInquirer(InqPatID, InqName, InqState, InqCountry, InqPhone, InqRelation, InqVia, InqCareLevel, InqProgram) VALUES 
     (@PatID, @InqName, @InqState, @InqCountry, @InqPhone, @InqRelation, @InqVia, @InqCareLevel, @InqProgram)" 


<InsertParameters> 

      <asp:ControlParameter ControlID = "InqName" Name="InqName" PropertyName="text"/> 
      <asp:ControlParameter ControlID = "InqStateList" Name="InqState" PropertyName="selectedvalue" /> 
      <asp:ControlParameter ControlID = "InqCountry" Name="InqCountry" PropertyName="selectedvalue" /> 
      <asp:ControlParameter ControlID = "InqPhone" Name="InqPhone" PropertyName="Text" /> 
      <asp:ControlParameter ControlID = "radInqRel" Name="InqRelation" PropertyName="selectedvalue" /> 
      <asp:ControlParameter ControlID = "InitInqVia" Name="InqVia" PropertyName = "selectedvalue" /> 
      <asp:ControlParameter ControlID = "CareLevel" Name="InqCareLevel" PropertyName="selectedvalue" /> 
      <asp:ControlParameter ControlID = "ProgSelect" Name="InqProgram" PropertyName="selectedvalue" />  
     </InsertParameters> 

は、事前にありがとう、 ニック

答えて

0

http://www.tek-tips.com/faqs.cfm?fid=7074

http://msdn.microsoft.com/en-us/library/ms228051.aspx

http://msdn.microsoft.com/en-us/library/z72eefad.aspx

...入力されたデータソースとそのパラメータの詳細情報を表示するには、このページをフォロー
<asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" /> 

このコードスニペットのinsert文。このInsertPatientInfo_Insertedハンドラで

<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
    SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID" 

    InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
       SELECT @EmpID = SCOPE_IDENTITY()" 
    UpdateCommand="UPDATE Employees SET [email protected], [email protected] 
        WHERE [email protected]" 
    DeleteCommand="DELETE Employees WHERE [email protected]" 

    ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>" 
    OnInserted="EmployeeDetailsSqlDataSource_OnInserted" 
    RunAt="server"> 

    <SelectParameters> 
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" /> 
    </SelectParameters> 

    <InsertParameters> 
    <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" /> 
    </InsertParameters> 

</asp:sqlDataSource> 
+0

私はこのチュートリアルを終了しました。私は自分のコードが彼と似ていると思います。問題は、.insertedイベントの外で@PatIDにアクセスできないことです。私はmsgbox()に入れ、正しいIDを表示しますが、別のSqlDataSourceでとして使用することはできませんので、別のデータベーステーブルのリレーショナルキーとして使用できます。これを行うためにとにかくありますか? –

0

、あなたはInsInqInfoという名前の他のSqlDataSourceのデフォルト値として出力パラメータの値を割り当てることができます。

Protected Sub InsertPatientInfo_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles InsertPatientInfo.Inserted 
    Dim PatID As String = e.Command.Parameters("@PatID").Value 
    MsgBox(PatID, MsgBoxStyle.Critical) 
    ' Assign the output as the default for 
    InsInqInfo.InsertCommand("@PatID").DefaultValue = PatID 
End Sub 

私は個人的には背後にあるコードにすべてのコードを移動します。

関連する問題