我有两个表,结构如下
A表
ryID 案件编号 姓名 工具 开始时间 结束时间
B表
yqID 有效开始时间 有效结束时间 ryid
查询条件:有效开始时间<=开始时间<=结束时间<=有效结束时间,也就是说“开始时间到结束时间”必须在“有效开始时间到有效结束时间”这个时间段内,请问这样的结果我怎么查询?
另外B表我用dbgrid显示的时候如果不符合上面查询条件的行,颜色有变化,这个怎么做到?
A表
ryID 案件编号 姓名 工具 开始时间 结束时间
B表
yqID 有效开始时间 有效结束时间 ryid
查询条件:有效开始时间<=开始时间<=结束时间<=有效结束时间,也就是说“开始时间到结束时间”必须在“有效开始时间到有效结束时间”这个时间段内,请问这样的结果我怎么查询?
另外B表我用dbgrid显示的时候如果不符合上面查询条件的行,颜色有变化,这个怎么做到?
2、SQL:= select * A where (开始时间>=有效开始时间 ) and (结束时间<=有效结束时间) and (开始时间<=结束时间)
3、执行SQL,关联DBGrid。
procedure Tsjyqf.RzBitBtn2Click(Sender: TObject);
var
sqltxt,skssj,sjssj,syxks,syxjs:string;
i,j:integer;
begin
//判断案件结束时间是否大于有效结束时间
sqltxt := 'select * from a where ajbh like ''%'+rzedit1.Text+'%'' order by ryid desc' ;
openadoquery(dmf.ADOQuery5, sqltxt);
for i:=0 to dmf.ADOQuery5.recordCount-1 do
begin
skssj:=dmf.ADOQuery5.FieldByName('kssj').AsString;
sjssj:=dmf.ADOQuery5.FieldByName('jssj').AsString;
sqltxt := 'select * from yqb';
sqltxt :=sqltxt+' where ryid='+dmf.ADOQuery5.FieldByName('ryid').AsString+' ';
sqltxt :=sqltxt+' order by yqid' ;
openadoquery(dmf.ADOQuery6, sqltxt);
for j:=0 to dmf.ADOQuery6.recordCount-1 do
begin
syxks:=dmf.ADOQuery6.FieldByName('yxks').AsString;
syxjs:=dmf.ADOQuery6.FieldByName('yxjs').AsString;
if (skssj<syxks) or (skssj>syxjs) or (sjssj<syxks) or (sjssj>syxjs) then
begin
showmessage('时间有问题!');
end;
dmf.ADOQuery6.next;
end;
dmf.ADOQuery5.next;
end;
end;
怎么触发DBGrid1DrawColumnCell事件
DBGrid自动击发。只要在DBGrid1DrawColumnCell事件中。写入代码即可。