本人刚开始使用SQL SERVER数据库,现在遇到以下问题,请大家帮忙,并请告知使用远程数据库与桌面数据库之间的区别与该注意些什么。
1.为何我使用TTable组件执行delete语句时,当删除最后一条记录时,提示'Invalid variant type conversion'(但记录被删除)?
2.为何使用TQuery组件执行select语句查询时,当插入一条记录后,在执行
            SQL.Add('insert into tb(...)values(...)');
            ExecSQL();
            Close();
            SQL.Clear();
            SQL.Add('select * from tb');
之后,所查询到的记录比在插入记录之前所查到的记录少?与外键和主键有关吗(表‘tb’中的主键为另一表中的外键)?
多谢!

解决方案 »

  1.   

    1.为何我使用TTable组件执行delete语句时,
    DELHPI的TTABLE组在处理数据修改时
    常会有些意想不到的情况出现
    强烈建议不要对MSSQL使用TTABLE
    2。应该没有关系
       请查看一下实际的物理数据是不是加上了,
       如果是加上了的话
       你的QUERY还有FILTER等属性有内容吗?
      

  2.   

    1、你可以使用Try...except屏蔽掉
    2、这是事务没有被提交的结果!
      

  3.   

    1、我觉得问题不是在你删除时出现的,而是其他的地方,你使用断点跟踪一下看看问题出在哪。
    2、是不是因为没有调用commit的原因?
      

  4.   

    to  idilent(说错了别怪我):
    我调试了
    1.确实是在执行table1.delete时提示'Invalid variant type conversion'
    2.由于以前未做过调用远程数据库的程序,也未使用过SQL SERVER数据库,所以所知不多,使用QUERY操作后需要执行COMMIT吗?
      

  5.   

    2.由于以前未做过调用远程数据库的程序,也未使用过SQL SERVER数据库,所以所知不多,使用QUERY操作后需要执行COMMIT吗?COMMIT用于事务(TRANSACTION)的提交
    如果你没有START TRANSACTION当然不用COMMIT了