动态地将值添加到MS Access数据库并使用变量检索它们

时间:2018-05-19 04:31:41

标签: c# winforms ms-access

我有一个MS访问数据库,其中包含一个名为tarriff_table的表。在此表中,我有两列upperLimit& perUnitCost。我有一个表单来插入这个值。现在我想使用这些值来计算代码。我有代码的结构,但我无法将数据库值连接到我使用的变量。

这是代码。

double demandCharge, VAT,upperLimit1, upperLimit2; 
double perUnitCost1, perUnitCost2;
private void button1_Click(object sender, EventArgs e)
{
 double con_unit = 0, bill = 0, mcon_unit = 0, totalbill = 0;
 con_unit = double.Parse(textBox1.Text);
 mcon_unit = double.Parse(textBox2.Text);
 if (con_unit < upperLimit1)
 {
  bill = con_unit * perUnitCost1;
 }
 else if (con_unit < upperLimit2)
 {
  bill = (upperLimit1 * perUnitCost1) + ((con_unit - upperLimit1) * perUnitCost2);
 }
 else bill = (upperLimit1 * perUnitCost1) + ((upperLimit2 - upperLimit1) * perUnitCost2);

 totalbill = Math.Ceiling((((((bill + demandCharge) * VAT) 
           + (bill + demandCharge)) / (con_unit)) * (mcon_unit)));
 textBox3.Text = Convert.ToString(totalbill);
}

这是代码的一部分。但我认为它可以产生我面临的问题。在这里,我想将upperLimit列连接到upperLimit变量,将perUnitCost列连接到perUnitCost变量。我该怎么办?

我希望从数据库中提取这些变量(upperLimit1upperLimit2perUnitCost1PerUnitCost2)。

重要说明:在代码部分perUnitCost2表示数据库中perUnitCost列的第二行的值。

注意:通过在将所有值插入数据库之前计算所有值,可以解决这个问题。通过这样做编译时间可以减少一半。由于编译器不必插入值并再次检索它们执行计算。

第二个注意:我已经发现我需要一个连接字符串来连接数据库。我希望主持人能够结束这个话题。

1 个答案:

答案 0 :(得分:0)

这是我的问题的解决方案。

private void btnsave_Click(object sender, EventArgs e)
    {
        string path = Path.Combine(Environment.CurrentDirectory, "Tenant info.mdb");
        connect.ConnectionString = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source="+ path;


        double con_unit = 0, bill = 0, presr = 0, prevr = 0, mcon_unit = 0, totalbill = 0;

        presr = double.Parse(textbox5.Text);
        prevr = double.Parse(textbox37.Text);
        con_unit = double.Parse(textbox38.Text);
        mcon_unit = ((presr) - (prevr));
        textBox2.Text = Convert.ToString(mcon_unit);
        if (con_unit < 75)
        {
            bill = con_unit * 3.8;
        }
        else if (con_unit < 200)
        {
            bill = (75 * 3.8) + ((con_unit - 75) * 5.14);
        }
        else if (con_unit < 300)
        {
            bill = (75 * 3.8) + (125 * 5.14) + ((con_unit - 200) * 5.36);
        }
        else if (con_unit < 400)
        {
            bill = (75 * 3.8) + (125 * 5.14) + (100 * 5.36) + ((con_unit - 300) * 5.63);
        }
        else if (con_unit < 600)
        {
            bill = (75 * 3.8) + (125 * 5.14) + (100 * 5.36) + (100 * 5.63) + ((con_unit - 400) * 8.70);
        }
        else if (con_unit < 600)
        {
            bill = (75 * 3.8) + (125 * 5.14) + (100 * 5.36) + (100 * 5.63) + (200 * 8.70) + (con_unit * 9.98);
        }
        else bill = (75 * 3.8) + (125 * 5.14) + (100 * 5.36) + (100 * 5.63) + (200 * 8.70) + ((con_unit - 600) * 9.98);

        totalbill = Math.Ceiling((((((bill + 70) * .05) + (bill + 70)) / (con_unit)) * (mcon_unit)));
        textBox3.Text = Convert.ToString(totalbill);

        tenantBillDataBindingSource.EndEdit();
        tenantBillDataTableAdapter.Update(this.tenant_InfoDataSet.TenantBillData);
        MessageBox.Show("Data Added to Database. Please Reopen the Form to Insert New Entry");
    }