小弟用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程序不能离开它的编译环境吧!
代码如下:
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程序不能离开它的编译环境吧!
我用的是sqlconnection 和 sqlquery 连接的.
就可以在没有装DELPHI的机子上通过了,不过不知道为什么!
有人能说出来为什么分照样给.
跟是否安装delphi没关系,你写的两个语句不一样啊。 if sqlquery1.recordcount <0 then
把这个改成
if sqlquery1.isempty then 好好看看那里不一样!!应该是 if sqlquery1.recordcount [size=24px]]=[/size0 then
if sqlquery1.recordcount <0 then
if sqlquery1.recordcount = 0 then
控件用排除法看看是哪个有问题
关键部分就是sqlquery1控件的recordcount这属性.在装有delphi的机子上可以直接判断它是否大于零.但是如果在没有装delphi的机子上就会报不支持访问错误.改成判断isempty这个属性的话就能在没有装delphi的机子上用了.现在就是想问下为什么会这样?
一般尽量量使用isEmpty
这个和是否安装delphi没关系的。如果和是否安装delphi有关,那么你那个SqlQuery1控件的其他属性、方法应该也会出错的。
RecordCount和数据库类型有关,对于某些数据库,它可能返回不正确的信息。但绝不应该报错。