zoukankan      html  css  js  c++  java
  • DBGRID在ADO+SQL环境中的Lookup问题(转)

        在进销存系统中,经常会将商品信息放在一个数据表中,把销售明细(采购明细)放在另一个表中,两个表通过商品的编号相联,于是经常会遇到要在销售明细(采购明细表中显示商品名称、规格等信息,就在DBGrid中采用Lookup的方法显示。但是当新插入数据时就提示“发生未知错误”的信息。解决办法:

        例:一个ADOQuery1,包含了“商品编号”,“数量”等字段,然后再新建立“商品名称”,“规格”等几个临时Lookup字段,以“商品编号”为索引字段,从另一个ADOQuery2中取值。之后,用一个DBGrid连接ADOQuery1。

        程序运行时,在DBGrid中修改,删除数据都没有问题。但添加记录时出现“发生未知错误”的信息。

        检查后发现问题出在Lookup字段,同样的设置在BDE+SQL 7.0和ADO+Access   2000中可以通过。问过一些朋友也说有这种情况。

        请问谁知道怎样解决?  

        1:在ADO中将Lookup字段的LookupCache设为True就可以了;可以通过。不过用这种方法以后,DBGrid的速度非常慢,我的商品资料表并不多,只有大约  
      2-3万条记录。有什么办法可以提高一下速度。(※试过此办法,可以解决出错的问题,但是速度问题没有试)。

        2:把LOOKUP字段所对应的表用LEFT   JOIN连在SQL中不就完了。(※还没有试)。

        3:有人也遇到过此问题,关闭“出错停止”就没有问题,原因他也找到了,是记录的Lookup字段对应的字段的值在lookup的数据库中没有找到相应的记录。可我一直没有找到解决方法,本以为是delphi的一个Bug。(※原因是,但是肯定不是Bug,从网上得知:是Lookup会发两条插入记录导致出错的,一条是本ADO的,一条是对Lookup字段的)。

    //以下是一个Delphi用户给borland公司的一封相关内容的邮件

    这是我写给borland公司的一封信,可惜他们并未回复。但其内容提供了错误原因和解决办法。
    邮件正文:
    我是个DELPHI的忠实爱好者
    有个问题我一直弄不明白。关于ADO数据集控件中的Lookup类型字段,在其Lookupkeyfields属性指向的字段中存在NULL值的,就会出现'EOleException with message '发生未知错误',这个提示。经过调试后验证只有以下3种办法可以解决:

    1.把lookup字段所在的DataSet的AutoCalcField设为False
    2.把lookup字段所在的DataSet的Append时给lookupkeyfield字段先赋一个值
    3.把lookup字段的LookUpCache设为True(速度受到很大的影响)

    象这种应该算是Delphi的bug吧?如果算是bug,为什么在delphi5到现在都没有做出修正呢?
    如果不算是BUG,那种情况难道就正常吗?
    希望贵公司的技术人员能给予解答,谢谢


    ps:我们公司是delphi的正版用户,热切的希望borland公司能越做越强.   引自:http://blog.csdn.net/happy_david/article/details/249336

  • 相关阅读:
    Jenkins发布遇到的问题
    js相关问题总结
    代码洁癖症轻度患者-页面显示状态判断解决方案
    eclipse没有打断点,项目确仍然要进入断点的问题。
    liunx新装tomcat之后,tomcat不能识别新发布的项目
    phpstorm+xdebug单步调试的配置
    laravel 路由前缀,路由名称前缀区别
    Specified key was too long ... 767 bytes
    postman 自动化测试
    Linux top输出st 的值过高导致系统负载过高
  • 原文地址:https://www.cnblogs.com/bingege/p/2336588.html
Copyright © 2011-2022 走看看