0

又遇到问题了。我可以从 DVG 中删除该行,但是当我关闭程序并重新运行它时,该行重新出现。我在网上看了一些例子,真的很难让他工作。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.OleDb;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class FormAccounts : Form
    {
        public FormAccounts()
        {
            InitializeComponent();
            this.accountsTableAdapter.Fill(this.accountsDataSet.Accounts);
        }    

        private void BTNADD_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Make sure you have checked the Date before Adding");

            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\kenny\Documents\Visual Studio 2010\Projects\Copy Cegees\Cegees\Cegees\Accounts.accdb";

            String TheDate = DTPAccounts.Value.ToShortDateString();
            String Moneyin = TextMoneyin.Text;
            String Retailin = TextRetailin.Text;
            String Rent = TextRent.Text;
            String Stock = TextStock.Text;
            String Misc = TextMisc.Text;
            String Water = TextWater.Text;
            String Fuel = TextFuel.Text;
            String Phone = TextPhone.Text;

            OleDbCommand cmd = new OleDbCommand("Insert Into Accounts ([TheDate], [Moneyin], [Retailin], [Rent], [Stock], [Misc], [Water], [Fuel], [Phone]) Values (@TheDate, @Moneyin, @Retailin, @Rent, @Stock, @Misc, @Water, @Fuel, @Phone)");
            cmd.Connection = conn;
            conn.Open();

            if (conn.State == ConnectionState.Open)
            {
                cmd.Parameters.Add("@TheDate", OleDbType.VarChar).Value = TheDate;
                cmd.Parameters.Add("@Moneyin", OleDbType.VarChar).Value = Moneyin;
                cmd.Parameters.Add("@Retailin", OleDbType.VarChar).Value = Retailin;
                cmd.Parameters.Add("@Rent", OleDbType.VarChar).Value = Rent;
                cmd.Parameters.Add("@Stock", OleDbType.VarChar).Value = Stock;
                cmd.Parameters.Add("@Misc", OleDbType.VarChar).Value = Misc;
                cmd.Parameters.Add("@Water", OleDbType.VarChar).Value = Water;
                cmd.Parameters.Add("@Fuel", OleDbType.VarChar).Value = Fuel;
                cmd.Parameters.Add("@Phone", OleDbType.VarChar).Value = Phone;

                try
                {
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("Customer Added");
                    conn.Close();
                }
                catch (OleDbException ex)
                {
                    MessageBox.Show(ex.Source);
                    MessageBox.Show(ex.ToString());
                    conn.Close();
                }
             }
          }

        private void BTNView_Click(object sender, EventArgs e)
        {
            DVGAccounts.Visible = !DVGAccounts.Visible;

        }


        private void BTNDelete_Click(object sender, EventArgs e)
        {
            {
                DialogResult dr = MessageBox.Show("Are you sure you want to delete", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (dr == DialogResult.Yes)
                {
                    if (this.DVGAccounts.SelectedRows.Count > 0)
                    {
                       DVGAccounts.Rows.RemoveAt(DVGAccounts.CurrentRow.Index);
                       this.accountsTableAdapter.Update(this.accountsDataSet.Accounts);
                        accountsDataSet.AcceptChanges();
                        ;
                    }
                }


            }
        }
    }
}
4

2 回答 2

1

我设法使用按钮上的此代码使其工作。

private void BTNDelete_Click(object sender, EventArgs e)
{
    DialogResult dr = MessageBox.Show("Are you sure you want to delete", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

    if (dr == DialogResult.Yes)
    {
        if (this.DVGAccounts.SelectedRows.Count >0 && this.DVGAccounts.SelectedRows[0].Index != this.DVGAccounts.Rows.Count -1)
        {
            this.DVGAccounts.Rows.RemoveAt(this.DVGAccounts.SelectedRows[0].Index);
        }
    }
}
于 2013-10-15T20:08:48.187 回答
0

您仅从 DataGridView 中删除该行,这是一个内存构造。如果您希望它从数据库中删除行,则必须将 DataGridView 配置为通过打开的连接连接到表,或者通过发出删除语句对删除记录做出反应,方式与你正在处理你的插入。不过,我建议尝试让事情变得更加自动化,因此连接的 DGV 可能会有所帮助。

于 2013-10-14T21:01:49.043 回答