Hi Jonel Thank you for your response. I use ODBC instead of Npgsql because the program can use with MS Access, MS SQL and PostgreSQL. Here is the code. int n = this.BindingContext[dataView1].Count - 1; string _Journal; DataRowView DataRowView1; this.cmdInsert.Transaction = _Transaction; this.cmdDelete.Transaction = _Transaction; this.cmdDelete1.Transaction = _Transaction; this.cmdUpdate1.Transaction = _Transaction; this.cmdUpdate2.Transaction = _Transaction; for(i=0; i<=n; i++) { this.BindingContext[dataView1].Position = i; DataRowView1 = (DataRowView) this.BindingContext[dataView1].Current; this.cmdInsert.Parameters["CustomerID"].Value = string.Empty; this.cmdInsert.Parameters["Employee_id"].Value = DataRowView1["Employee_id"]; this.cmdInsert.Parameters["GJournal"].Value = DataRowView1["GJournal"]; this.cmdInsert.Parameters["GJournalDT"].Value = DataRowView1["GJournalDT"]; this.cmdInsert.Parameters["TransactionDate"].Value = dateTimeNow; this.cmdDelete.Parameters["ID"].Value = DataRowView1["ID"]; try { this.cmdInsert.ExecuteNonQuery(); } catch (System.Exception ex) { this.RollBack(ex.Message); } try { this.cmdDelete.ExecuteNonQuery(); } catch (System.Exception ex) { this.RollBack(ex.Message); } _Journal = DataRowView1["GJournal"].ToString().Trim(); if (_Journal == "JP" | _Journal == "JR" ) { this.cmdDelete1.Parameters["GLTran"].Value = DataRowView1["GLTran"]; try { this.cmdDelete1.ExecuteNonQuery(); } catch (System.Exception ex) { this.RollBack(ex.Message); } this.cmdUpdate1.Parameters["Posted"].Value = true; this.cmdUpdate1.Parameters["GLTran"].Value = DataRowView1["GLTran"]; try { this.cmdUpdate1.ExecuteNonQuery(); } catch (System.Exception ex) { this.RollBack(ex.Message); } }