起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 264|回复: 10

【结贴】[请求]请问如下错误代表什么意思。急!**

[复制链接]
发表于 2009-2-19 13:43:23 | 显示全部楼层 |阅读模式
报错代码如下:
    qryds.ConnectionString := 'DATABASEURL=Biz:OPERATIONOperationDB.Database';
    qryds.CommandText := 'select * from FACILITY_DETAIL WHERE bill_type = 0 AND bill_id='+id;
    qryds.Execute;
执行到Execute时报错

2222.jpg

18.17 KB, 下载次数: 130

回复

使用道具 举报

发表于 2009-2-19 13:44:30 | 显示全部楼层
qryds.Execute;
换成open
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 13:44:34 | 显示全部楼层
select 返回的结果不为空
回复 支持 反对

使用道具 举报

发表于 2009-2-19 13:51:21 | 显示全部楼层
2楼
回复 支持 反对

使用道具 举报

发表于 2009-2-19 13:54:20 | 显示全部楼层
open后的错误贴个图
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 14:20:38 | 显示全部楼层
Excute改Open之后不报错了,但还有个问题,代码如下
qryds.ConnectionString := 'DATABASEURL=Biz:\OPERATION\OperationDB.Database';
    qryds.CommandText := 'select * from FACILITY_DETAIL WHERE bill_type = 0 AND bill_id='+id;
    qryds.open;
    qryds.First;
    while not qryds.Eof do
    begin
      ds:= qryds.FieldByName('Remain_TotalMoney').AsString;
    end;
我想实现的是通过select出多条语句,然后循环显示这些数据的某一字段的值。
但是调试的时候发现ds每次取到的值都是0,而且qryds中只有一条数据的时候循环了三次。
回复 支持 反对

使用道具 举报

发表于 2009-2-19 14:24:09 | 显示全部楼层
while not qryds.Eof do
    begin
      ds:= qryds.FieldByName('Remain_TotalMoney').AsString;
      qryds.next;
    end
这样呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 14:33:49 | 显示全部楼层
啊,晕,忘记指向next了,Thank You!!
还有个问题请教,select出来的数据有很多字段,我想将这些数据的某些字段取反之后再插入回去,我现在的想法是先select,然后在insert into FACILITY_DETAIL values();比较麻烦,有没有其他简单的办法?
回复 支持 反对

使用道具 举报

发表于 2009-2-19 15:44:55 | 显示全部楼层
试试这样:
qryds.edit;
qryds.FieldByName('a').AsString := '';
qryds.Applyupdates;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-22 19:34:42 | 显示全部楼层
因为字段太多,并没有按您的提示来。我通过sql语句的循环拼接来完成的
    qryds.CommandText := 'select * from FACILITY_DETAIL WHERE bill_type = 0 AND bill_id='+id;
    qryds.open;
    qryds.First;
    qryin.ConnectionString := 'DATABASEURL=Biz:\OPERATION\OperationDB.Database';
    while not qryds.Eof do
    begin
      value:= IntToStr(parm.GetNewPK('FACILITY_DETAIL'));
      isql:='insert into FACILITY_DETAIL (id,bill_id';
      vsql:='values ('+value+','+nid;
      for i:=2 to 37 do
      begin
        if qryds.Fields.AsString <> '' then
        begin
          if (i=5)or(i=7)or(i=8)or(i=9)or(i=10)or(i=19)or(i=20)or(i=22)or(i=23)or(i=29) then
          begin
            isql:=isql+','+qryds.Fields.FieldName+'';
            vsql:=vsql+','''+qryds.Fields.AsString+'''';
          end
          else begin
            if(i=3)or(i=11)or(i=12)or(i=26)or(i=31)or(i=32)or(i=33)or(i=34)or(i=35)or(i=36) then
            begin
              isql:=isql+','+qryds.Fields.FieldName+'';
              vsql:=vsql+',0-'+qryds.Fields.AsString+'';
            end
            else
            begin
              isql:=isql+','+qryds.Fields.FieldName+'';
              vsql:=vsql+','+qryds.Fields.AsString+'';
            end;
          end;
        end;
      end;
        qryin.CommandText:= isql+') '+vsql+')';
        qryin.Execute;
      qryds.Next;
    end;
因为并不清楚数据集可以通过索引来定位字段名和字段值,所以一直走弯路,多谢贾经理提醒。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-27 18:27 , Processed in 0.045397 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表