简体   繁体   English

参数@BranchName没有默认值

[英]Parameter @BranchName has no default value

I'm trying to develop inventory control system for computer department of my office. 我正在尝试为我办公室的计算机部门开发库存控制系统。 It will keep track of ins and outs of machines from branches which are send to Head Office for repair. 它将跟踪分支机构的机器进出情况,这些分支机构将被送往总部进行维修。 I'll also use crystal report to display all the records from Microsoft Access 2010. I have this error message box pops up when I click on save button of entry form. 我还将使用水晶报表显示Microsoft Access 2010中的所有记录。单击输入表单的保存按钮时,会弹出此错误消息框。

(Parameter @BranchName has no default value) (参数@BranchName没有默认值)

I use Microsoft Access 2010, C#.NET with VS 2010. Please help me. 我将Microsoft Access 2010和C#.NET与VS 2010结合使用。请帮助我。

    private void btnSave_Click(object sender, EventArgs e)
    {
        {
            OleDbConnection connect = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\NLA\Documents\Visual Studio 2010\Projects\GlobalTreasureBank\GlobalTreasureBank\GTBDB.accdb;Jet OLEDB:Database Password=admin@GTB");
                try
                {
                    connect.Open();
                    OleDbCommand command = new OleDbCommand();
                    command.Connection=connect;
                    command.CommandText= "INSERT INTO Machine (BranchName, MachineName, ArrivedDate, FaultDetail, ReturnDate, Remark, Technician)" + "VALUES (@BranchName, @MachineName, @ArrivedDate, @FaultDetail, @ReturnDate, @Remark, @Technician)";

                    string BranchName = txtbBranch.Text;
                    string MachineName = txtbMachine.Text;
                    string FaultDetail = rtxtbFault.Text;
                    string Remark = rtxtbRemark.Text;
                    string Technician = txtbTechnician.Text;
                    DateTime ArrivedDate = dtpArrive.Value;
                    DateTime ReturnDate = dtpReturn.Value;

                    command.Parameters.Add("ArrivedDate", OleDbType.Date);
                    command.Parameters.Add("ReturnDate", OleDbType.Date);

                    command.Parameters.AddWithValue("@BranchName", txtbBranch.Text);
                    command.Parameters.AddWithValue("@MachineName", txtbMachine.Text);
                    command.Parameters.AddWithValue("@FaultDetail", rtxtbFault.Text);
                    command.Parameters.AddWithValue("@Remark", rtxtbRemark.Text);
                    command.Parameters.AddWithValue("@Technician", txtbTechnician.Text);
                    command.Parameters.AddWithValue("@ArrivedDate", dtpArrive.Value);
                    command.Parameters.AddWithValue("@ReturnDate", dtpReturn.Value);

                    command.ExecuteNonQuery();
                    MessageBox.Show ("Successfully write to database", "Write to Database", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    connect.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    connect.Close();
                }
            }
        }
    }
}

Note 1 : OleDB doesnot accept the named parameters . 注1: OleDB不接受named parameters
Note 2 : OleDB Parameters need tobe in sequential order. 注2: OleDB参数需要按顺序排列。

Try This: 尝试这个:

command.CommandText= "INSERT INTO Machine (BranchName, MachineName, ArrivedDate, 
   FaultDetail, ReturnDate, Remark, Technician) VALUES (?,?,?,?,?,?,?)";


command.Parameters.AddWithValue("@BranchName", txtbBranch.Text);
command.Parameters.AddWithValue("@MachineName", txtbMachine.Text);
command.Parameters.AddWithValue("@ArrivedDate", dtpArrive.Value);
command.Parameters.AddWithValue("@FaultDetail", rtxtbFault.Text);
command.Parameters.AddWithValue("@ReturnDate", dtpReturn.Value);
command.Parameters.AddWithValue("@Remark", rtxtbRemark.Text);
command.Parameters.AddWithValue("@Technician", txtbTechnician.Text);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM