2

私はC#が初めてです..

部門をフィルタリングするための書き込み機能があります。そして、この関数はidDepartmentを返します。

新しい問題は、部門が値を保持する「System.Windows.Forms.Label, Text : ADMIN」です。これが、ゼロになった理由です。では、「ADMIN」のみを取得して部門に保管するにはどうすればよいですか?

アップデート :

    public partial class frmEditStaff : Form
{

    private string connString;
    private string userId, department;  //Department parameter coming from here
    private string conString = "Datasource";


    public frmEditStaff(string strUserID, string strPosition)
    {
        InitializeComponent();

        //Pass value from frmListStaff to userID text box

        tbStaffId.Text = strUserID.ToString();
        userId = strUserID.ToString();
        department = strPosition.ToString();


    }

以下のこのコードは機能しています。問題はありません。

public int lookUpDepart()
        {
            int idDepart=0;

            using (SqlConnection openCon = new SqlConnection(conString))
            {
                string lookUpDepartmenId = "SELECT idDepartment FROM tbl_department WHERE department = '" + department + "';";
                openCon.Open();
                using (SqlCommand querylookUpDepartmenId = new SqlCommand(lookUpDepartmenId, openCon))
                {
                    SqlDataReader read = querylookUpDepartmenId.ExecuteReader();

                    while (read.Read())
                    {
                        idDepart = int.Parse(read[0].ToString());
                        break;
                    }
                }
                openCon.Close();
                return idDepart;
            }


        }

手伝ってくれてありがとう。良い一日を!

4

3 に答える 3

1

あなたの問題に関して:部門は値を保持する "System.Windows.Forms.Label、Text:ADMIN"

この通話に問題があります frmEditStaff(strUserID,yourLabel.ToString());

この関数/コンストラクターの呼び出しを共有していませんが、この呼び出しで2番目のパラメーターが間違っているようです。ここでは使用しないToString()でください。むしろ、次のように使用する必要があり.Textます

frmEditStaff(strUserID,yourLabel.Text);

それはあなたの問題を解決します。通常、プログラマーはこの間違いを犯した経験があるので、私はそれを知っていました:)

于 2012-09-04T16:54:16.107 に答える
0

単一の行から単一の値を選択する場合は、次のようにExecuteScalarメソッドを使用できます。

using (SqlCommand querylookUpDepartmenId = new SqlCommand(lookUpDepartmenId, openCon))
{
   idDepart = int.Parse(querylookUpDepartmenId.ExecuteScalar());
}

繰り返しになりますが、SQLクエリで文字列連結を使用するのはまったく間違っています


そして、更新された質問については、.ToString()メソッドの代わりにラベルのTextプロパティを使用してみてください。

C#/ .netに関する優れたチュートリアルブックを入手し、そこにある例に従うことをお勧めします。

于 2012-09-04T09:00:27.283 に答える
0
public int lookUpDepart()
{
    int idDepart = 0;
    using (SqlConnection con = new SqlConnection(conString))
    {
        string lookUpDepartmenId = "SELECT idDepartment FROM tbl_department WHERE department = " + department;
        con.Open();
        using (SqlCommand querylookUpDepartmenId = new SqlCommand(lookUpDepartmenId, openCon))
        {
            SqlDataReader read = querylookUpDepartmenId.ExecuteReader();
            while (read.Read())
            {
                idDepart = Convert.ToInt32((read[0]).ToString());
                break;
            }
        }

        con.Close();

        return idDepart;
    }
}

上記のコードを試してください、私はそれを作り直しました。それは私のために働いています...

于 2012-09-04T08:56:08.247 に答える