none
紧急求助 使用vsto开发excel 的数据保存问题 RRS feed

  • 问题

  •  

    我是用的是C#2008开发环境->创建了office2003->excel2003工作簿->先添加了一个数据源->

    添加了office操作窗格控件

    在pzDataSet.xsd 中的bgAdapter 添加了一个带参数InsertQuery

    在查询的属性窗口配置了参数 

     

    然后在 ’ 添加‘按钮添加了如下代码

    private void bg1BindingNavigatorSaveItem_Click(object sender, EventArgs e)
            {
                this.Validate();
                this.bg1BindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(this.pzDataSet);

            }

            private void button2_Click(object sender, EventArgs e)
            {
                int Nu;
                Double b;
                Double c;
                Double d;
                Double e1;
                Double f;
                Double g;
                Double h;
                Double i1;
                Double j;
                Double k;
                Double l;
                Double m;
                string getName=nameTextBox.Text;
                for (int i = 0; i < 61; i++)
                {
                    Nu = Convert.ToInt16(((Excel.Range)Globals.Sheet1.Cells[i + 5, 1]).Value2);
                    b = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 2]).Value2);
                    c = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 3]).Value2);
                    d = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 4]).Value2);
                    e1 = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 5]).Value2);
                    f = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 6]).Value2);
                    g = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 7]).Value2);
                    h = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 8]).Value2);
                    i1 = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 9]).Value2);
                    j = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 10]).Value2);
                    k = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 11]).Value2);
                    l = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 12]).Value2);
                    m = Convert.ToDouble(((Excel.Range)Globals.Sheet1.Cells[i + 5, 13]).Value2);
                    this.bg1TableAdapter.InsertQueryRow(Nu, b, c, d, e1, f, g, h, i1, j, k, l, m, getName, this.dateTimePicker1.Value.Date);
                }

     

    并在sheet1中添加了测试数据

     

    可是点击‘添加’按钮后

     

    回到access数据库中去发现一条记录也没有添加

     

    我到底错在哪了?

     

    请大侠们指点

     

    今天一天我都在线,渴望得到大家的帮助
    2008年8月23日 0:51

全部回复

  •  

    调试和运行都没有报错

     

    可是就是添加不到数据库中

     

    我是用了BindingNavigator控件的添加按钮  参考了帮助,添加了this.Validate();
                this.bg1BindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(this.pzDataSet);代码

     

    结果也不行

     

    郁闷!!!!!~~~~~~

    2008年8月23日 0:57
  • 我按照你的试了一下,可以保存到Access,

    private void button1_Click(object sender, EventArgs e)
            {
              
                this.goodsInfoBindingSource.EndEdit();
                this.goodsInfoTableAdapter.Update(this.databaseDataSet);

            }

    这个是我试验时的Button事件,

    感觉你的问题可能是 数据库主键没有设置好。 特别是有自增列的那种,还要注意ID列不能有重复值。

    最好多放点代码,大家一起看看,讨论下。

     

    PS:刚又看了一下,你好像想用Insert语句完成数据库更新,但是你的button里用的是Adapter.Updata

    这个方法是直接用Excel工作表中的内容升级数据库,你表中的行数与参数数目不同。

    你试试把button里的   this.goodsInfoTableAdapter.Update(this.databaseDataSet) 换成Inset语句试验一下。

    2008年9月5日 8:40