写了个小程序,往SYBASE的TEXT字段插入数据。
开发环境2003/D7/CTLIB for7 另一个机器都是一样的。
目标数据库是同一个。
为什么我开发环境的机器运行就成功可以写入长字符串,
换个机器长字符串就失败了(字符串短可以成功)??????
代码:    with sqlrecord do
  begin
     close;
     sql.Clear;
     sql.Add('insert into OperRecords (IP,SQL) values (:IP,:SQL)');
     ParamByName('IP').AsString:= NetGetLocalIP ;
     ParamByName('SQL').AsString:=trim(memo1.Text);
     execsql;
  end;
出错报SQL字段不能为空(SQL字段建表时设计NOT NULL)。
我也试着把源码全部复制到另外一台机器执行,还是不能成功,但我的就是可以。
第一次撞见这么怪的事情。   求解释~~~

解决方案 »

  1.   

    你输出IP  SQL 看看是否为空?
      

  2.   

    C:\WINDOWS\system32 下是否有  midas.dll 
      

  3.   

    输出肯定不为空了,现在的问题情况是
    别人机器SQL字符串长的报错,短的可以写入。
    而我自己的机器不管SQL字符串长短都可以写入。 
      

  4.   

    我用字符串,传入TEXT类型的数据库字段。
      

  5.   

    有midas.dll,
    数据库连接正常,我也怀疑SQL插入的时候是不是数据不匹配的问题,
    但是我开发的机器就能插入,太邪了。
      

  6.   

    你查下微软的MDAC版本,两台机是否相同。因为我碰到过因为MDAC版本低而产生数据库操作不可解释的问题。
      

  7.   

    被你猜中了,就是把SQL语句写入数据库中。
    SQL里面有单引号,后来试过替换为双引号就可以执行成功了。
    但为什么我的机器,单引号不报错呢?
      

  8.   

    这个我用CTlib连sybase和MDAC有关系吗??
    不过确实我的机器装的是office2007,他们装的是office2003。
    明天去试试