2013-03-23 91 views
0

我的代碼中有一個退出屏幕,當我提取資金時,我希望它更新訪問數據庫,但是我的代碼只從程序內刪除了數據庫中的金額。程序關閉後,數據庫將重置爲之前的狀態。我如何使用c#更新訪問數據庫?

我對這個屏幕

int moneyselected = 0; 
Decimal balance = frmaccount.Balance; 

public FrmTransaction() 
{ 
    InitializeComponent(); 
} 

private void btnWithdraw_Click(object sender, EventArgs e) 
{ 
    if (moneyselected == 0) 
    { 
     MessageBox.Show("Select Amount"); 
    } 
    else 
    { 
     if (moneyselected > balance) 
     { 
      MessageBox.Show("Not enough funds"); 
     } 
     else 
     { 
      balance = balance - moneyselected; 
      OleDbCommandBuilder cb = new OleDbCommandBuilder(FrmLogin.da); 

      FrmLogin.da.Update(FrmLogin.ds1, "tblCustomers"); 
      MessageBox.Show("Amount Withdrawn = " + moneyselected.ToString() + "\r\nBalance = " + balance.ToString()); 
     } 
    } 
} 

private void btnWithdrawreceipt_Click(object sender, EventArgs e) 
{ 

} 

private void btnExit_Click(object sender, EventArgs e) 
{ 
    this.Close(); 
    Form FrmLogin = new FrmLogin(); 
    this.Hide(); 
    FrmLogin.Show(); 
} 

private void FrmTransaction_Load(object sender, EventArgs e) 
{ 

} 

private void rb10_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 10; 
} 

private void rb20_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 20; 
} 

private void rb30_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 30; 
} 

private void rb40_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 40; 
} 

private void rb50_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 50; 
} 

private void rb60_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 60; 
} 

private void rb70_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 70; 
} 

private void rb80_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 80; 
} 

private void rb90_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 90; 
} 

private void Cashamountbox_Enter(object sender, EventArgs e) 
{ 

} 

private void rb100_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 100; 
} 

private void rb150_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 150; 
} 

private void rb250_CheckedChanged(object sender, EventArgs e) 
{ 
    moneyselected = 250; 
} 
     }>>LOGIN PAGE<< 
    } 

namespace BANK_ATM_PROJECT 
{ 
    public partial class FrmLogin : Form 
    { 
     public FrmLogin() 
     { 
      InitializeComponent(); 
     } 

    int failedAttempts = 0; 

    public static OleDbConnection con = new OleDbConnection(); 

    string dbProvider; 
    string dbSource; 

    public static OleDbDataAdapter da; 

    public static DataSet ds1 = new DataSet(); 

    string sql; 
    string pin; 
    int rownum = 0; 
    bool valid = false; 

    public static decimal balance = 0; 
    private void FrmLogin_Load(object sender, EventArgs e) 
    { 
     { 
      dbProvider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"; 
      dbSource = "Data Source = 'D:\\bank11.accdb'"; 
      con.ConnectionString = dbProvider + dbSource; 
      ds1 = new DataSet(); 
      con.Open(); 
      sql = " SELECT tblCustomers.* FROM tblCustomers"; 
      da = new OleDbDataAdapter(sql, con); 
      rownum = da.Fill(ds1, "tblCustomers"); 

      con.Close(); 

      { 

      } 
     } 
    } 

    private void btnExit_Click(object sender, EventArgs e) 
    { 
     System.Environment.Exit(0); 
     this.Close(); 

    } 
    private bool validate() 
    { 
     ds1 = new DataSet(); 
     con.Open(); 

     sql = "SELECT tblCustomers.* FROM tblCustomers WHERE ((tblCustomers.AccountNo) = '" + txtAccount.Text + "')"; 
     da = new OleDbDataAdapter(sql, con); 
     rownum = da.Fill(ds1, "tblCustomers"); 
     con.Close(); 


     if (rownum != 1) 
     { 

      return false; 

     } 

     else 
     { 
      pin = ds1.Tables["tblCustomers"].Rows[0][4].ToString(); 
      if (pin == txtPin.Text) 
      { 
       return true; 
      } 
      else 
      { 
       MessageBox.Show("INVALID PIN"); 
       return false; 
      } 

     } 
    } 

    private void btnLogin_Click(object sender, EventArgs e) 
    { 

     valid = validate(); 
     if (!valid) 
     { 
      //Increment the number of failed attempts 
      failedAttempts += 1; 
      if (failedAttempts == 1) 

       MessageBox.Show("You Have 2 Attempts Left"); 

      if (failedAttempts == 2) 
       MessageBox.Show("You Have 1 Attempt Left"); 

      //If equal to 3 
      if (failedAttempts == 3) 

       MessageBox.Show("Card Retained"); 

      { 

      } 
     } 
     else 
     { 
      valid = validate(); 
      if (valid == true) 
      { 
       if (txtAccount.Text == "11111111" && txtPin.Text == "9999") 
       { 
        Frmmanager Manager = new Frmmanager(); 
        this.Close(); 
        Manager.Show(); 
       } 
       else 
       { 
        frmaccount account = new frmaccount(); 
        this.Close(); 
        account.Show(); 

        { 
         txtAccount.Clear(); 
         txtPin.Clear(); 

         valid = validate(); 
         if (valid == true) 
         { 
          if (txtAccount.Text == "11111111" && txtPin.Text == "9999") 
          { 
           Frmmanager Manager = new Frmmanager(); 
           this.Close(); 
           Manager.Show(); 
          } 
          else 
          { 
           frmaccount Account = new frmaccount(); 
           this.Close(); 
           account.Show(); 

           { 
            txtAccount.Clear(); 
            txtPin.Clear(); 
           } 
          } 

         } 
        } 
       } 
      } 
     } 
    } 
} 

}

我雖然代碼 ds.update會更新,但這個似乎只對程序

任何幫助或建議中工作,將不勝感激

+0

在哪裏u盤DS1使它? – apomene 2013-03-23 19:03:10

+0

其設置在我的登錄頁面我將代碼添加到我的問題 – 2013-03-23 22:39:04

回答

0

我覺得problerm是在下面的代碼,在這裏,你cretate,而不是指的當前實例FrmLogin的新實例:

private void btnExit_Click(object sender, EventArgs e) 
{ 
    this.Close(); 
    Form FrmLogin = new FrmLogin();  
    this.Hide(); 
    FrmLogin.Show(); 
} 

嘗試以下操作:

private void btnExit_Click(object sender, EventArgs e) 
{ 
    this.Close(); 
    FrmLogin obj = (FrmLogin)Application.OpenForms["FrmLogin"]; 
    this.Hide(); 
    obj.Show(); 
} 

而且generraly當您提到FrmLogin時,最好使用obj作爲ref以確保您參考當前實例。因此,添加到您的代碼的開始:

obj = (FrmLogin)Application.OpenForms["FrmLogin"]; 

而且每個裁判FrmLogin通過obj

-1

您是否在調試文件夾或項目解決方案中檢查數據庫? 嘗試檢入調試文件夾。

+0

我認爲該帖子說,它在運行時運行良好。並且在數據庫被檢查之後,沒有任何改變似乎是合情合理的。 – XTGX 2013-03-23 19:42:57

+0

運行時會從天平中刪除正確的編號,但不會對物理數據庫本身進行任何更改。 – 2013-03-23 22:48:23

+0

我已添加我的代碼爲我的登錄頁面,其中包含我的數據集和適配器 – 2013-03-23 22:48:59

相關問題