我有兩個表,結構如下
A表
ryID 案件編號 姓名 工具 開始時間 結束時間
B表
yqID 有效開始時間 有效結束時間 ryid
查詢條件:有效開始時間<=開始時間<=結束時間<=有效結束時間,也就是說“開始時間到結束時間”必須在“有效開始時間到有效結束時間”這個時間段內,請問這樣的結果我怎么查詢?
另外B表我用dbgrid顯示的時候如果不符合上面查詢條件的行,顏色有變化,這個怎么做到?
uj5u.com熱心網友回復:
1、先由表B讀取 有效開始時間 有效結束時間 值2、SQL:= select * A where (開始時間>=有效開始時間 ) and (結束時間<=有效結束時間) and (開始時間<=結束時間)
3、執行SQL,關聯DBGrid。
uj5u.com熱心網友回復:
DBGrid顏色有變化問題,就在DBGrid1DrawColumnCell事件中寫代碼。uj5u.com熱心網友回復:
我沒有太看明白,從b表讀取怎么讀uj5u.com熱心網友回復:
我現在就是想把不符合這個查詢條件:有效開始時間<=開始時間<=結束時間<=有效結束時間,也就是說“開始時間到結束時間”必須在“有效開始時間到有效結束時間”這個時間段內的結果,用dbgrid行顏色有變化uj5u.com熱心網友回復:
我是這么做的,看一下對嗎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事件
uj5u.com熱心網友回復:
DBGrid1DrawColumnCell事件DBGrid自動擊發。只要在DBGrid1DrawColumnCell事件中。寫入代碼即可。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/95898.html
標籤:數據庫相關
上一篇:海量客戶端的一種實作方法可行嗎
