2

私はWinformsアプリとemployeeListBox、departmentComboBox、および従業員情報を表示するためのいくつかのテキストボックス(fNameTextbox、lNameTextBox .....など)を持っています。

選択した値である departmentCombobox を使用して employeelistBox にデータを入力し、employeeListBox からテキスト ボックスにデータを入力したいと考えています。部門の従業員を選択するためのこのストアドプロシージャがあります

ALTER PROCEDURE [dbo].[selectEmployee] 
   @departID int
-- Add the parameters for the stored procedure here
AS
   -- SET NOCOUNT ON added to prevent extra result sets from
   -- interfering with SELECT statements.
   SET NOCOUNT ON;

   -- Insert statements for procedure here
   declare @ErrorCode int



   BEGIN TRANSACTION
      if ( @ErrorCode = 0 )
      Begin
        SELECT 
            EmpID, firstname, lastName, dateOfBirth, Gender, contactNumber, maritalStatus, 
            emailAddress, resentAddress, permanentAddress, nationality, bloodGroup, 
            qualification, Skills, Experience, joiiningdate, probation, departmentID, 
            Salary, paymentMode, active 
        FROM Employee
        WHERE departmentID = @departID

set @ErrorCode = @@error
      End

      if ( @ErrorCode = 0 )
     COMMIT TRANSACTION
      else
         ROLLBACK TRANSACTION

     return @ErrorCode   

リストボックスにデータを入力するために、このコードを書きました

    private void selectEmployee(int departID)
    {
        string connString = BL.dbConn.ConnStr;
        DataSet ds = new System.Data.DataSet();
        SqlConnection conn = new SqlConnection(connString);
        conn.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.CommandText = "dbo.selectEmployee";
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        adapter.Fill(ds);
        listBox1.DataSource = ds.Tables[0].DefaultView;
        listBox1.ValueMember = "EmpID";
        listBox1.DisplayMember = "firstname";
        cmd.Parameters.Clear();
        conn.Close();
        conn.Dispose();
    }

ストアド プロシージャに departmentid を渡す方法がわかりません。次に、リストボックス データセットからテキスト ボックスに入力する方法を教えてください。

4

2 に答える 2

1

departmentid を渡すには、SQL パラメータを作成する必要があり、SQL コマンドでアタッチする必要があります。

コードで忘れているのはda.SelectCommand = cmd;、選択コマンドを指定することです

        SqlConnection conn = new SqlConnection(connString);

        SqlCommand cmd = new SqlCommand();
        SqlDataAdapter da = new SqlDataAdapter();
        DataTable dt = new DataTable();
        try
        {
            conn.Open();
            cmd = new SqlCommand("dbo.selectEmployee", conn );
            cmd.Parameters.Add(new SqlParameter("@departID", value);
            cmd.CommandType = CommandType.StoredProcedure;
            da.SelectCommand = cmd;
            da.Fill(dt);
            dataGridView1.DataSource = dt;
        }
        catch (Exception x)
        {
            MessageBox.Show(x.GetBaseException().ToString(), "Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
        }

テキストボックスに値を入力するために、コードを投稿するか、やりたいことの例を投稿してください.

于 2012-04-19T18:38:23.973 に答える
1

DepartmentId をストアド プロシージャに追加するには、次の手順を実行する必要があります。

cmd.Parameters.Add(new SqlParameter("@departID", departID));
于 2012-04-19T18:43:04.467 に答える