DataSet allDSet = new DataSet();
        private void Form1_Load(object sender, EventArgs e)
        {
            OleDbConnection myConn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=88885136;User ID=Admin;Data Source=天壶贡丸销售记录.mdb");
            myConn.Open();            DataTable schemaTable = myConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,new object[] { null, null, null, "TABLE" });            //DataSet myDSet = new DataSet();            foreach (DataRow dr in schemaTable.Rows)
            {
                日期表.Items.Add(dr["TABLE_NAME"].ToString());
            }            int x = 日期表.Items.Count - 1;            OleDbDataAdapter myDAda = new OleDbDataAdapter("select * from " + 日期表.Items[x].ToString(), myConn);
            
            myConn.Close();            日期表.Text = 日期表.Items[x].ToString();
            myDAda.Fill(allDSet, 日期表.Items[x].ToString());            dataGridView1.DataSource = allDSet.Tables[日期表.Items[x].ToString()];
            this.Text = 日期表.Items[x].ToString() + "[销售表单]";
        }为什么显示在"dataGridView1"上会是两张表?如何解决?

解决方案 »

  1.   

    两条一样的记录重复出现,如何解决?
    我知道是DataSet myDSet = new DataSet();的问题,可是我想设这个为全局的,好可以更新数据源。
      

  2.   

    原因在于dataGridView自动匹配数据源生成列。可以在dataGridView的“编辑列”中将“自动生成字段”去掉
      

  3.   

    你可以在上面声明DataSet ds;然后在方法里创建出来
    ds=new DataSet();我是小菜鸟!   说的不好清见谅,   希望能够帮到你!
      

  4.   

    怎么个重复法?具体描述一下
    另:日期表.Items[x].ToString()的值是多少?
    "select * from " + 日期表.Items[x].ToString()在数据库中查出来的结果是怎样的?
      

  5.   

    貌似是DataSet存放了2个数据。
    如:
    显示结果在控件上的为(仅有两条记录):
    姓名|年龄|身高|
    张三|21|170
    李四|22|170
    张三|21|170
    李四|22|170而不是我预期的:
    姓名|年龄|身高|
    张三|21|170
    李四|22|170
      

  6.   

    但从你的代码来看不应该会有重复的啊,再问一遍:
    日期表.Items[x].ToString()的值是多少?
    "select * from " + 日期表.Items[x].ToString()在数据库中查出来的结果是怎样的?
      

  7.   

    是不是你的Form_Load 被调用了两次,或都说你的DataSet 被多次传入值
      

  8.   

    8楼,的确是DataSet 被多次传入值,如何解决?
      

  9.   

    日期表.Items[x].ToString()值=2008年7月4日(access表名);
    "select * from " + 日期表.Items[x].ToString()在数据库中查出来的结果是怎样的?查找"2008年7月4日"表,将表的数据填充到数据集;
      

  10.   

    如果是多次传入了DataTable,那就在传的时候判断一下:if(allDSet.Tables[日期表.Items[x].ToString()]!=null)
        myDAda.Fill(allDSet, 日期表.Items[x].ToString());
      

  11.   


    if (allDSet.Tables[日期表.Items[x].ToString()]!null)
    {
    allDSet.Tables[日期表.Items[x].Clear(); 

    myDAda.Fill(allDSet, 日期表.Items[x].ToString());
    dataGridView1.DataSource = allDSet.Tables[日期表.Items[x].ToString()];
    this.Text = 日期表.Items[x].ToString() + "[销售表单]";
      

  12.   

    对于多次调用Sql向同一个Dataset 中的DataTable存于入数据,如果主键存在,则传入行会与已有的匹配行合并。如果主键不存在,则传入行会追加到   DataTable   中。   
      

  13.   

    //判断Table 是否存在
    if   (allDSet.Tables.IndexOf(日期表.Items[x].ToString())   !=   -1)
    { //清除Table 里的记录用
    allDSet.Tables[日期表.Items[x].Clear(); }//然后再填充最新的数据  myDAda.Fill(allDSet, 日期表.Items[x].ToString());
    dataGridView1.DataSource = allDSet.Tables[日期表.Items[x].ToString()];
    this.Text = 日期表.Items[x].ToString() + "[销售表单]";
      

  14.   

    allDSet.Tables[日期表.Items[x].Clear(); 
    这句错了。
    allDSet.Tables[日期表.Items[x]].Clear(); 
    也错……
      

  15.   

    if(allDSet.Tables[日期表.Items[x].ToString()]==null)
        myDAda.Fill(allDSet, 日期表.Items[x].ToString());
    这次不会重复出现了,也更新成功,可是更新后的数据不会保存到指定的位置。似乎是因为少了“myDAda.Fill(allDSet, 日期表.Items[x].ToString());”
      

  16.   

    如果,是用没修改前的代码,运行期间,更改时会直接修改数据库里(源文件里)的信息。
    可是照12楼的方法,运行期间,修改成功,重新打开之后,却又变成未修改。如何解决?
            DataSet allDSet = new DataSet();        private void Form1_Load(object sender, EventArgs e)
            {
                OleDbConnection myConn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=88885136;User ID=Admin;Data Source=天壶贡丸销售记录.mdb");
                myConn.Open();            DataTable schemaTable = myConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });            //DataSet myDSet = new DataSet();            foreach (DataRow dr in schemaTable.Rows)
                {
                    日期表.Items.Add(dr["TABLE_NAME"].ToString());
                }            int x = 日期表.Items.Count - 1;            OleDbDataAdapter myDAda = new OleDbDataAdapter("select * from " + 日期表.Items[x].ToString(), myConn);            myConn.Close();            日期表.Text = 日期表.Items[x].ToString();            if (allDSet.Tables[日期表.Items[x].ToString()] == null)
                {
                    
                    myDAda.Fill(allDSet, 日期表.Items[x].ToString());            }
                dataGridView1.DataSource = allDSet.Tables[日期表.Items[x].ToString()];
                this.Text = 日期表.Items[x].ToString() + "[销售表单]";
            }