CREATE TRIGGER cljcupdate ON [dbo].[材料进仓明细表] 
AFTER   UPDATE 
AS
if update(数量) or update(开票数量)
begin
    update 材料进仓明细表 set 已开票=1 
       where 材料进仓明细表.数量=材料进仓明细表. 开票数量
end
如果加了这个触发器,那在delphi编译后的程序中更改数量或开票数量均会出现如上错误,但在sql企业管理器中批量更新'材料进仓明细表'却无此问题.这是什么原因.我的操作环境:
delphi7 update2
ado2.7
sql2000

解决方案 »

  1.   

    我也碰到过这个错误,当时是access数据库,后来换成BDE就没有问题了不知道是不是delphi使用ado的问题
      

  2.   

    数据库中有设关键字.BDE是没有问题呀.为什么ADO不行.还有奇怪的问题.我的表有十几个字段,ado能全部显示出来,bde只能显示6个字段,这是为什么呀.
      

  3.   

    你的表中有默认值的字段吧。另外可以设置一下ADO的光标属性。
      

  4.   

    你看看bde没有的行是不是都是所有字段都是重复的,把他们删掉,在试,另外一定要加关键字
      

  5.   

    我的表是这样的.
    CREATE TABLE [dbo].[材料进仓明细表] (
    [进仓明细ID] [int] IDENTITY (1, 1) NOT NULL ,
    [进仓单号] [nvarchar] (12) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [材料编码] [nvarchar] (18) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [材料名称] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
    [规格] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [单位] [nvarchar] (4) COLLATE Chinese_PRC_CI_AS NULL ,
    [数量] [float] NOT NULL ,
    [单价] [float] NOT NULL ,
    [金额] [float] NOT NULL ,
    [已开票] [bit] NULL ,
    [开票数量] [float] NULL ,
    [备注] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    但在BDE中只能显示六个
    [进仓明细ID] [int] IDENTITY (1, 1) NOT NULL ,
    [数量] [float] NOT NULL ,
    [单价] [float] NOT NULL ,
    [金额] [float] NOT NULL ,
    [已开票] [bit] NULL ,
    [开票数量] [float] NULL ,
    好像字符型的统统不能显示.ADO的光标属性应该设为什么,有效吗.
      

  6.   

    用Query也不行,
    select  进仓明细ID,
    进仓单号 ,
    材料编码 ,
    材料名称 ,
    规格 ,
    单位 ,
    数量 ,
    单价,金额,
    已开票,
    开票数量,
    备注 
     from 材料进仓明细表
    能显示的只有上面六个.
    其它表也一样哦.都是字符不能显示.是不是DELPHI有问题呀.