起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: huixiangtao

【结帖】为什么记录集总是空呀?**

[复制链接]
 楼主| 发表于 2008-3-26 11:17:48 | 显示全部楼层
SELECT PBMXB.*, PBB.ID, PBB.DUTYDATE, PBB.LEADER, PBB.PHONE
  FROM PBMXB, PBB
  WHERE PBB.ID = PBMXB.PID and PBB.DUTYDATE = :_3A637B4438044B349F636219DE8C1C1F  and PBMXB.DUTY_PERSON = :_0A85BC912AA84AC8B12316E657CBEBAA
这样的不可能执行呀。觉得问题就是在这儿,是不是业务参数这时还没有值,但这是我在窗体出现后打印的sql。

SELECT PBMXB.*, PBB.ID, PBB.DUTYDATE, PBB.LEADER, PBB.PHONE
  FROM PBMXB, PBB
  WHERE PBB.ID = PBMXB.PID and PBB.DUTYDATE = '2008-3-25'  and PBMXB.DUTY_PERSON = 'ZengBo'
则sql查询分析器中如图:

sql_duty.jpg

60.33 KB, 下载次数: 106

回复 支持 反对

使用道具 举报

发表于 2008-3-26 11:44:00 | 显示全部楼层
sql语句的问题
DUTYDATE = :_3A637B4438044B349F636219DE8C1C1F  
DUTYDATE这是时间字段吧。
但传给它的值可不是时间类型的。
回复 支持 反对

使用道具 举报

发表于 2008-3-26 11:44:46 | 显示全部楼层
执行下这个看看
==============
select PBMXB.PID, PBMXB.STARTTIME, PBMXB.ENDTIME, PBMXB.DUTY_PERSON, PBMXB.TASK, PBMXB.WORK_CONTENT, PBMXB.UNFINISHED_WORK, PBMXB.SIGN_TIME, PBMXB.LEAVE_TIME, PBMXB.SIGN_STATUS, PBB.ID, PBB.DUTYDATE, PBB.LEADER, PBB.PHONE, PBMXB.ID from PBMXB, PBB where PBB.ID = PBMXB.PID and PBB.DUTYDATE = '2008-03-25 00:00' and PBMXB.DUTY_PERSON = 'ZENGBO'
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-26 14:54:20 | 显示全部楼层
sql语句的问题
DUTYDATE = :_3A637B4438044B349F636219DE8C1C1F  
DUTYDATE这是时间字段吧。
但传给它的值可不是时间类型的。
我DUTYDATE是业务参数,用表达式DayOf(ServerTime()),设置的,该是时间类型吧。
N013楼,那样执行一定会是正确的。
先不管它了,我现在用
procedure TZBB_new.BizFormCreate(Sender: TObject);
var sSqlstr:String;
begin
  LOperaterId:=GetOperatorID;// 字符串
  LServerDate:=GetServerDate;//字符串,函数返回当前时间
  sSqlstr:='SELECT PBMXB.*, PBB.DUTYDATE, PBB.LEADER, PBB.PHONE '+
            'FROM PBMXB, PBB  WHERE PBB.ID = PBMXB.PID';
   sSqlstr:=sSqlstr+' and PBB.DUTYDATE = '''+LServerDate+'''  and PBMXB.DUTY_PERSON = '''+LOperaterId+'''' ;
  //jsDialogs.ShowMsg(sSqlstr,'sql');
  dsb_DutyDetail.DataSet.Close;//
  TSQLDataSet(dsb_DutyDetail.DataSet).SQL.Text :=sSqlstr ;
  dsb_DutyDetail.DataSet.Open;

end;
窗体能够正确出来今天上班的情况了。但是
在签到或下班时,  dsb_DutyDetail.DataSet.ApplyUpdates;会出错。

function TZBB_new.CalcuLogoutStatus:String;
var
   tEndTime,tLogoutTime:TDateTime;
   judge_time_minute:Integer;
   flag:ShortInt;//
   signStatus,signTemp:String;
begin
   judge_time_minute:= JUDGE_TIME_M;
   dsb_DutyDetail.DataSet.Open;
   dsb_DutyDetail.DataSet.First;
   tEndTime:=dsb_DutyDetail.DataSet.FieldByName('ENDTIME').AsDateTime;
   tEndTime:=DateUtils.TimeOf(tEndTime);
   signStatus:=dsb_DutyDetail.DataSet.FieldByName('SIGN_STATUS').AsString;
//
   dsb_DutyDetail.DataSet.Edit;
   dsb_DutyDetail.DataSet.FieldByName('LEAVE_TIME').AsDateTime:=SysUtils.Now();
   dsb_DutyDetail.DataSet.Post;
   dsb_DutyDetail.DataSet.ApplyUpdates;
//比较时间

是不是因为是两个表,数据集是相当于视图的原因??若是,有好办法处理么?

error3-26.jpg

16.43 KB, 下载次数: 103

回复 支持 反对

使用道具 举报

发表于 2008-3-26 15:04:12 | 显示全部楼层
最初由 fpj 发布
[B]sql语句的问题
DUTYDATE = :_3A637B4438044B349F636219DE8C1C1F  
DUTYDATE这是时间字段吧。
但传给它的值可不是时间类型的。 [/B]

我看了楼主传上来的日志,参数是对的,确实是日期类型的,而且日期是 2008-3-25
回复 支持 反对

使用道具 举报

发表于 2008-3-26 15:05:49 | 显示全部楼层
最初由 caoyeziqq  发布
[B]N013楼,那样执行一定会是正确的。
以下省略...... [/B]

建议楼主还是执行一下13楼的语句
回复 支持 反对

使用道具 举报

发表于 2008-3-26 15:06:25 | 显示全部楼层
14楼的错误图,请设置数据集的更新选项
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-26 15:54:03 | 显示全部楼层
13楼执行正确,我更新设为允许更新到多条记录,所有字段,
签到,退出时,错误如图,
更新如何设呢?不是我设错了,

updateerror.jpg

14.26 KB, 下载次数: 124

回复 支持 反对

使用道具 举报

发表于 2008-3-26 16:11:43 | 显示全部楼层
有重名的字段,请搂住修改选出来的字段,重名的字段只选出来一个
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-26 16:38:56 | 显示全部楼层
SELECT PBMXB.ID,PBMXB.PID, PBMXB.STARTTIME, PBMXB.ENDTIME, PBMXB.DUTY_PERSON, PBMXB.TASK, PBMXB.WORK_CONTENT, PBMXB.UNFINISHED_WORK, PBMXB.SIGN_TIME, PBMXB.LEAVE_TIME, PBMXB.SIGN_STATUS, PBB.ID,PBB.DUTYDATE, PBB.LEADER, PBB.PHONE '+
            'FROM PBMXB, PBB  WHERE PBB.ID = PBMXB.PID

相同的只有PBMXB.ID,PBB.ID呀,是不是这原因? 我想把表重建,总是失败,因为是主键。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-9 14:54 , Processed in 0.037434 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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