2016-03-21 14 views
0

実際には、データを挿入すると同時に、実行時にデータを更新しようとしていますが、実行中にデータ型を返すメソッド ' TryParseは**私のACCDBテーブル構造がメソッド 'TryParse'のオーバーロードは '1'の引数を取る

Field Datatype 
Account-- Memo 
AccountNumber--Number 
Date--Date/Time 
Description--Memo 
Post_Ref--Memo 
Debit--Number 
Credit--Number 
Balance--Number 

以下のようなものである1 『の引数

 private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
     { 
     string connectionString = null; 
        connectionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString; 
        con.ConnectionString = connectionString; 

        string cmd1 = "insert into Ledger([AccountNumber],[Account],[Date],[Description],[Post_Ref],[Debit],[Credit],[Balance])values(?,?,?,?,?,?,?,?)"; 
        OleDbCommand cmd = new OleDbCommand(cmd1, con); 
        con.Open(); 
        cmd.CommandType = CommandType.Text; 
int accountNumber; 

        bool accountHasValue = int.TryParse(dataGridView1.Rows[e.RowIndex].Cells["AccountNumber"].Value.ToString(), out accountNumber); 

        if (accountHasValue) 
        { 
         cmd.Parameters.AddWithValue("@AccountNumber", accountNumber); 
        } 

        string accounts = dataGridView1.Rows[e.RowIndex].Cells["Account"].Value.ToString(); 
        cmd.Parameters.AddWithValue("@Account", accounts); 

        DateTime datetime; 
        bool dateTimeHasValue = DateTime.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Date"].Value.ToString(), out datetime); 

        if (dateTimeHasValue) 
        { 
         cmd.Parameters.AddWithValue("@Date", datetime); 
        } 


        string Description = dataGridView1.Rows[e.RowIndex].Cells["Description"].Value.ToString(); 
        cmd.Parameters.AddWithValue("@Description", Description); 


        string Post_Ref = dataGridView1.Rows[e.RowIndex].Cells["Post_Ref"].Value.ToString(); 
        cmd.Parameters.AddWithValue("@Post_Ref", Post_Ref); 


        int debit; 
        bool debitHasValue = Int32.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Debit"].Value.ToString(), out debit); 

        if (debitHasValue) 
        { 
         cmd.Parameters.AddWithValue("@Debit", debit); 
        } 


        int Credits; 
        bool CreditsHasValue = Int32.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Credit"].Value.ToString(), out Credits); 

        if (CreditsHasValue) 
        { 
         cmd.Parameters.AddWithValue("@Credit", Credits); 
        } 

        int Balances; 
        bool BalancesHasValue = Int32.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Balance"].Value.ToString(), out Balances); 

        if (BalancesHasValue) 
        { 
         cmd.Parameters.AddWithValue("@Balance", Balances); 
        } 


        cmd.ExecuteNonQuery(); 


        con.Close(); 

        Load_data(); 
} 

答えて

0

」を取る』というエラーは、単にTryParseメソッドは一つのパラメータを受け入れるオーバーロードを持っていないことを意味します。 documentationを見ると、2つのパラメータが必要です。

TryParseを使用するコード行では、まず変数を宣言してoutパラメータとして使用し、データベースをシードするために渡します。私にコードを教えて!さて、以下の例を見てください。

//For accountNumber 
int accountNumber; 

bool accountHasValue = int.TryParse(dataGridView1.Rows[e.RowIndex].Cells["AccountNumber"].Value, out accountNumber); 

if(accountHasValue) 
{ 
    cmd.Parameters.AddWithValue("@AccountNumber", accountNumber); 
} 

//For Datetime 
DateTime datetime; 
bool dateTimeHasValue = DateTime.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Date"].Value, out datetime); 

if(dateTimeHasValue) 
{ 
    cmd.Parameters.AddWithValue("@Date", datetime); 
} 

//For Debit 
int debit; 
bool debitHasValue = Int32.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Debit"].Value, debit); 

if(debitHasValue) 
{ 
    cmd.Parameters.AddWithValue("@Debit", debit); 
} 

基本的にTryParseを使用するすべてのコード行は、上記のとおり実装します。

+0

私はあなたのコードを書いてくれましたが、1つ以上の必須パラメータに値が与えられていません。 cmd.ExecuteNonQuery()のエラー。私はデバッガを使って見ましたが、デバッガは日付、クレジット、デビット、残高のcmd.Parameters.AddWithValueには入っていません – Atul

+0

デバッガが 'if'文の中にないのは、' TryParse'が値を解析できなかったからです。または、渡すべき価値がなかった。あなたの'dataGridView1.Rows [e.RowIndex] .Cells [" AccountNumber "]。Value'はグリッドから値を返します –

+0

1つ以上の必須パラメータに値が指定されていません。 cmd.ExecuteNonQuery();ライン – Atul

関連する問題