procedure Tydxxgl.FormShow1;
begin
qry1.Close;
qry1.SQL.Text:='select a.*, zt as zhuangtai from ydxx a';
qry1.Open;
end;
procedure Tydxxgl.qry1CalcFields(DataSet: TDataSet);
begin
if qry1.FieldByName('zt').AsString='1' then
begin
qry1.FieldByName('zhuangtai').AsString:='預訂中';
end;
if qry1.FieldByName('zt').AsString='2' then
begin
qry1.FieldByName('zhuangtai').AsString:='已入住';
end;
if qry1.FieldByName('zt').AsString='3' then
begin
qry1.FieldByName('zhuangtai').AsString:='已取消';
end;
end;
我想實作從資料庫中查詢,然后賦值,再在dbgrid中顯示出來,比如資料庫中狀態是1,我想在dbgrid中顯示‘預訂中’,這是代碼,哪里出問題了,怎么還是顯示的是1啊?我是新手。。。。。
uj5u.com熱心網友回復:
你可以在sql里面創建個視圖,讓sql去轉化。uj5u.com熱心網友回復:
我用的是access資料庫啊uj5u.com熱心網友回復:
你這種方式不對,看SQL陳述句你的‘zhuangtai'欄位和’zt‘欄位其實是同一個欄位,自己變自己改沒用。你應該新增一個field,型別是計算欄位。再用這個新增的欄位來計算。
類似這樣吧:
var
newfield: TStringField;
begin
qry1.Close;
qry1.SQL.Text:='select a.* from ydxx a'; //不需要zt as zhuangtai 了
qry1.open;
.... ....
newfield := TStringField.create(qry1);
newfield.fieldname := 'ztcalc';
newfield.fieldtype := fCalcField; //可能是這個屬性吧,我也記不清了,你自己查
qry1.fields.add(newfield);
.....
自己去試試。
或者在設計時就在TQuery組件的欄位編輯器中把這個自定義欄位加上,這樣就不需要上面那些代碼了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/98979.html
標籤:數據庫相關
上一篇:一個關于sqlserver無故回滾的問題,大家幫忙看看!
下一篇:超級弱智問題 關于sql
