簡體   English   中英

C#WinForm列表到數據庫

[英]C# WinForm List into Database

下午全部

我的任務是將我們的用戶當前填寫的紙質表單轉換為Windows Form c#應用程序中的電子表單,用戶可以在其中以電子方式填寫表單,然后單擊一個按鈕,將數據放入數據庫。

我已經完成了五種其他形式的表格,但都沒有問題,但是我剛剛想到的一種形式(我認為這是最簡單的一種形式)使我很困惑。

這是一個示例,說明紙的外觀和填充方式(首先從excel打印):

紙質表格形式

我的數據庫具有下表:

User
   UserID
   UserName

EquipmentReturnSubmission
   UserID (from User table)
   ReturnID
   ReturnDate

 EquipmentReturnDetails
   ReturnID (from EquipmentReturnSubmission table)
   SerialNo
   Description

將數據放入數據庫后,上面表格中的每一行在EquipmentReturnDetails表中都會有一行,但是所有行都具有相同的ReturnID,因此可以鏈接以生成該用戶提交的設備列表。

讓我感到困擾的是如何在WinForms應用程序中執行此操作。 我看過將GridView中的數據插入數據庫中,但是一次只能找到如何執行這一行-我需要使用相同的ReturnID插入所有行,以便可以將其鏈接。

我以為我可以做下面的事情,但是找不到從哪里開始進行編碼的線索,即使這是最好的方法。

嘗試形式

我的想法是,用戶輸入序列號和描述,然后單擊添加,這會將詳細信息放入列表框/ gridview或某種保存區域,並清除文本框。 然后,每次將詳細信息添加到保存區域時,用戶就可以繼續執行此操作,然后,提交按鈕會將其寫入數據庫。

同樣,我不確定如何完成此操作,除非每次單擊添加按鈕時都有一種創建參數的方法。

如果有人能指出我正確的方向,那就太好了。 我很自學,很高興能被完全糾正。

提前致謝。

好吧,感謝Zath的評論,我做了更多的研究,並設法在以下方面使它起作用:

表:

User
    UserID
    UserName

 EquipmentReturnSubmission
    UserID //(from User table)
    ReturnID
    ReturnDate

EquipmentReturnDetails
    ReturnID //(from EquipmentReturnSubmission table)
    SerialNo
    Description

然后,我將DataGridView添加到表單中,並添加了SerialNo和Description列。 我的C#代碼如下:

 private void Submit_Click(object sender, EventArgs e)
    {
        if (MessageBox.Show("Are you sure these details are correct?", "Are you sure?", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
                dataGridView1.AllowUserToAddRows = false; //Disables edit so the insert doesnt try and do an insert for the blank row created when the user clicks to add data.

                #region SQL Insert

                SqlConnection con = new SqlConnection(Home.ConString);
                SqlCommand cmd = new SqlCommand("EquipmentReturnSubmission1", con);
                cmd.CommandType = CommandType.StoredProcedure;
                #region Parameters

                cmd.Parameters.Add("@Name", SqlDbType.VarChar, 200).Value = OfficerName.Text;
                cmd.Parameters.Add("@Area", SqlDbType.VarChar, 200).Value = Area.Text;
                cmd.Parameters.Add("@SubmissionDate", SqlDbType.Date).Value = SubmissionDate.Value;
                cmd.Parameters.Add("@SubmissionID", SqlDbType.Int).Direction = ParameterDirection.Output;

                #endregion
                try
                {
                    con.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (System.Exception ex1)
                {
                    throw new System.Exception("Error submitting equipment return sheet." + ex1.Message);
                }
                finally
                {
                    SubID = int.Parse(Convert.ToString(cmd.Parameters["@SubmissionID"].Value));
                    con.Close();
                    SecondInsert();
                }
                #endregion
            }
        }
    }


    private void SecondInsert()
    {
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {

            SqlConnection con = new SqlConnection(Home.ConString);
            {
                SqlCommand cmd = new SqlCommand("INSERT INTO EquipmentReturnSubmissionDetails (SubmissionID, SerialNumber, Description) VALUES (@SubmissionID, @SerialNumber, @Description)", con);
                cmd.CommandType = CommandType.Text;
                {
                    cmd.Parameters.AddWithValue("@SubmissionID", SqlDbType.Int).Value = SubID;
                    cmd.Parameters.AddWithValue("@SerialNumber", row.Cells["SerialNo"].Value);
                    cmd.Parameters.AddWithValue("@Description", row.Cells["Description"].Value);
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            }

        }
        MessageBox.Show("Data submitted.");
        this.Close();
    }

這完全按照我的要求進行,並且很快完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM