后台:SQL2000,中间:datasetprovider,客户端:使用cliendataset
用applyupdates(-1)更新,原来很好的,添加,修改,删除都可以。因为
某些原因,我修改了数据库的一些字段,还添加了几个,现在怎么添加都不可以
数据写不进数据库,我在SQL2000上单独试过,直接写可以,不会有错,但通过
客户端,用applyupdates(-1)就不可以,apply点(0)也试过,为什么会这样
以前我遇到过这样,后来不知怎么,又可以拉,不过到现在我还没明白,什么原因造成的
因为,现在在数据库直接输入就可以,大家给点意见
还有,我想自己写把数据写入数据库,大家有什么好的方法,具体点,可以另外给分
谢谢

解决方案 »

  1.   

    这种问题如果是楼住的程序以前可以后来不行了,
    那么可能是的注册的COM+组建没有找到他相映的DLL
    有个办法可以检验楼住的COM+是否代码是否可以:
    1:在组建管理中把你的COM+干掉,然后重新编译你的
    COM+和客户段,注意COM+只要编译不要注册,然后
    运行你的客户段,看看。
      

  2.   

    To:snake_eye(★蛇眼★上帝派来灌水的人) 
    我不是用的com+和DLL的,
    那有没有可能是中间datasetprovider的问题,我重写一下试一下
      

  3.   

    你是不是在 ClientDataSet 或者是在和 DataSetProvider 相连的 DataSet中 使用了永久字段(Persistent field)?
      

  4.   

    To:leapmars(流铭) 我用的数据库是SQL,字段好像没有这个把
      

  5.   

    delphi 的“永久字段”跟后台数据库没关系。 你在对 ClientDataSet 或者和 DataSetProvider 相连的 DataSet 进行属性设置时,用过 Field Editor 没有?
      

  6.   

    我前几天也遇到过类似情况,不过是用的INTERBASE6.0 ,情况是只能添加,但不能删除.后来我用INTERBASE6.0打开数据库中的那张表把所有的数据删除后就正常了(当时只有5条记录)!你可以先把数据导出后把表清空再重新导入试一下,记住啊,先备份,要不我可没什么好的办法帮你啊!
      

  7.   

    或者是 你的查询中没有包括Key字段
      

  8.   


      你把 datasetprovider1.UpdateMode的可能取值upWhereAll, upWhereChanged, upWhereKeyOnly
    一个一个试一下,看看哪个行。比如:
    datasetprovider1.UpdateMode:=upWhereAll;
    不行就
    datasetprovider1.UpdateMode:=upWhereChanged;
    还不行就
    datasetprovider1.UpdateMode:=upWhereKeyOnly;
    仍不行,就要查别的原因了。祝你走运!
      

  9.   

    谢谢大家,问题解决,从sql直接加入的时候没有问题,但实际上,从客户端直接加入的话,还是有一个触发器有问题,改正后就可以拉,给分!!!!