小弟用delphi 2007  dbexpress中的tsqlquery控件写了一段程序, 
  
  代码如下:
    sqlquery1.close;
    sqlquery1.sql.clear;
    sqlquery1.sql.add('select nm,age form userinfo');
    sqlquery1.sql.open;
    
    if sqlquery1.recordcount<0 then
       exit;
    while not sqlquery1.eof then
       str:='insert into userinfo_new (nm,age) values (' +''''+sqlquery1.filedbyname('nm').asstring+''''+','+''''+sqlquery1.filedbyname   
       ('age').asstring+'''');
        sqlquery2.close;
        sqlquery2.sql.clear;
        sqlquery2.sql.add(str);
        sqlquery2.sql.execsql(true);
        sqlquery1.next;
     end;
大概的中心代码就是这样的,异常处理省略没打上. 在写程序的机器上一切正常. 但就是在没装delphi中的机器上运行不了.
要么报 operation not surporet 要么就是地址访问错误. 但只要一装上delphi 2007就能运行了.请问下各位高手这应该是怎么回事呀, connecting连接也是没有问题的,我用的oracle ,net 服务名都配的好的.不会是delphi2007程序不能离开它的编译环境吧!  
     
  

解决方案 »

  1.   

    是一个配置参数的问题,大概是再Options中,你自己查一下
      

  2.   

    能说明白是哪个控件的吗,
    我用的是sqlconnection 和 sqlquery 连接的.
      

  3.   

    要用到的dll都有还是不能用呀,  我也觉得可能是这两个控件的某个参数有问题,但是就是找不出哪个参数.
      

  4.   

    问题已经解决,看来是没有人想要分呀.   if   sqlquery1.recordcount <0   then    把这个改成 if   sqlquery1.isempty   then    
    就可以在没有装DELPHI的机子上通过了,不过不知道为什么! 
    有人能说出来为什么分照样给.
      

  5.   

    庸人自扰!
    跟是否安装delphi没关系,你写的两个语句不一样啊。  if       sqlquery1.recordcount   <0       then         
    把这个改成  
      if       sqlquery1.isempty       then  好好看看那里不一样!!应该是  if       sqlquery1.recordcount   [size=24px]]=[/size0       then         
      

  6.   

    靠,没写对。应该是
       if               sqlquery1.recordcount       <0               then   
      

  7.   

    靠,又没写对应该是 
          if  sqlquery1.recordcount  = 0 then       
      

  8.   

    对于一些特定的数据库,sqlquery1.recordcount 可能没有正确的值。
      

  9.   

    if       sqlquery1.recordcount   <0 这句话就是多余的没必要写这句.
    控件用排除法看看是哪个有问题
      

  10.   

    楼上的解决方法思路不错.
    关键部分就是sqlquery1控件的recordcount这属性.在装有delphi的机子上可以直接判断它是否大于零.但是如果在没有装delphi的机子上就会报不支持访问错误.改成判断isempty这个属性的话就能在没有装delphi的机子上用了.现在就是想问下为什么会这样?
      

  11.   

    recordcount 和isempty是有点不同的。。如果是.dbf或paradox数据库外,基本没啥区别的若Dataset没有open, RecordCount造成Exception, IsEMpty則傳回True
    一般尽量量使用isEmpty
      

  12.   

    关键部分就是sqlquery1控件的recordcount这属性.在装有delphi的机子上可以直接判断它是否大于零.但是如果在没有装delphi的机子上就会报不支持访问错误. 你能确定你的错误就是因为引用RecordCount属性导致的?
    这个和是否安装delphi没关系的。如果和是否安装delphi有关,那么你那个SqlQuery1控件的其他属性、方法应该也会出错的。
    RecordCount和数据库类型有关,对于某些数据库,它可能返回不正确的信息。但绝不应该报错。