指標Bof&Eof判斷問題 |
尚未結案
|
LearnDelphi
一般會員 發表:4 回覆:7 積分:2 註冊:2005-04-07 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
您好:
將4個Button的onclick都指向btnFirst
然後參考如下程試碼,隨手寫了一下,可能有誤,您試試.
btnFirst.Enabled:=true; btnPrior.Enabled:=true; btnNext.Enabled:=true; btnEnd.Enabled:=true; if (Sender=btnFirst) then begin Query.First(); btnFirst.Enabled:=false; btnPrior.Enabled:=false; end; if (Sender=btnPrior) then begin Query.Prior(); if (Query.Bof) then begin btnFirst.Enabled:=false; btnPrior.Enabled:=false; end; end; if (Sender=btnNext) then begin Query.Next(); if (Query.Eof) then begin btnNext.Enabled:=false; btnEnd.Enabled:=false; end; end; if (Sender=btnEnd) then begin Query.Last(); btnNext.Enabled:=false; btnEnd.Enabled:=false; end;發表人 - supman 於 2005/04/25 20:32:58 |
LearnDelphi
一般會員 發表:4 回覆:7 積分:2 註冊:2005-04-07 發送簡訊給我 |
謝謝supman您的方法,有大概了解在做判斷時要怎麼跑
剛忘了po我的程式碼
再請問我此程式要怎麼修改
續上述的功能要求 procedure BtnFirstClick(Sender: TObject);
procedure BtnPriorClick(Sender: TObject);
procedure BtnNextClick(Sender: TObject);
procedure BtnLastClick(Sender: TObject);
function ToRecord(QueryDataSet: TQuery; ActRecord: string):Boolean; implementation uses CUS01U2;
var CusNo : String;
{$R *.DFM} procedure TForm1.BtnFirstClick(Sender: TObject);
begin
ToRecord (CusDM.QueryCus,'First');
end; procedure TForm1.BtnPriorClick(Sender: TObject);
begin
ToRecord (CusDM.QueryCus,'Prior');
end; procedure TForm1.BtnNextClick(Sender: TObject);
begin
ToRecord (CusDM.QueryCus,'Next');
end; procedure TForm1.BtnLastClick(Sender: TObject);
begin
ToRecord (CusDM.QueryCus,'Last');
end; Function TForm1.ToRecord(QueryDataSet: TQuery; ActRecord: string):Boolean;
var CaseSet : Integer;
begin
If ActRecord= 'First' then CaseSet:= 1;
If ActRecord= 'Prior' then CaseSet:= 2;
If ActRecord= 'Next' then CaseSet:= 3;
If ActRecord= 'Last' then CaseSet:= 4; CusDM.QueryCus.Close;
CusDM.QueryCus.SQL.Clear;
Case CaseSet of 1:begin
CusDM.QueryCus.SQL.Add('select * from customer');
CusDM.QueryCus.SQL.Add('where CustNo = (select min(CustNo)from customer)');
end; 2:begin
CusDM.QueryCus.SQL.Add('select * from customer');
CusDM.QueryCus.SQL.Add('where CustNo =(select max(CustNo)from customer');
CusDM.QueryCus.SQL.Add('where CustNo <''' CusNo ''')');
end; 3:begin
CusDM.QueryCus.SQL.Add('select * from customer');
CusDM.QueryCus.SQL.Add('where CustNo =(select min(CustNo)from customer');
CusDM.QueryCus.SQL.Add('where CustNo >''' CusNo ''')');
end; 4:begin
CusDM.QueryCus.SQL.Add('select * from customer');
CusDM.QueryCus.SQL.Add('where CustNo = (select max(CustNo)from customer)');
end; end;
CusDM.QueryCus.Open;
CusNo := CusDM.QueryCus.FieldByName('CustNo').AsString; end;
end.
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
哇勒~
看到這段好眼熟,原來是之前我就有答過您了,您怎麼還是用這種寫法阿,上次就有示範一次給您看了耶.
而且您用單筆下SQL更本也沒有所謂的Bof,Eof,因為每一筆都是Eof,Bof...
如果硬要這樣寫的話,參考如下: 先得到MaxCustNo與LastCustNo
btnFirst.Enabled:=true; btnPrior.Enabled:=true; btnNext.Enabled:=true; btnEnd.Enabled:=true; 1:begin CusDM.QueryCus.SQL.Add('select * from customer'); CusDM.QueryCus.SQL.Add('where CustNo = (select min(CustNo)from customer)'); btnFirst.Enabled:=false; btnPrior.Enabled:=false; CustNo=CusDM.QueryCus.FieldByName('CustNo').AsString; end; 2:begin CusDM.QueryCus.SQL.Add('select * from customer'); CusDM.QueryCus.SQL.Add('where CustNo =(select max(CustNo)from customer'); CusDM.QueryCus.SQL.Add('where CustNo <''' CusNo ''')'); CustNo=CusDM.QueryCus.FieldByName('CustNo').AsString; if (CustNo=MaxCust) then begin btnFirst.Enabled:=false; btnPrior.Enabled:=false; end; end; 3:begin CusDM.QueryCus.SQL.Add('select * from customer'); CusDM.QueryCus.SQL.Add('where CustNo =(select min(CustNo)from customer'); CusDM.QueryCus.SQL.Add('where CustNo >''' CusNo ''')'); CustNo=CusDM.QueryCus.FieldByName('CustNo').AsString; if (CustNo=LastCust) then begin btnNext.Enabled:=false; btnLast.Enabled:=false; end; end; 4:begin CusDM.QueryCus.SQL.Add('select * from customer'); CusDM.QueryCus.SQL.Add('where CustNo = (select max(CustNo)from customer)'); CustNo=CusDM.QueryCus.FieldByName('CustNo').AsString; btnNext.Enabled:=false; btnLast.Enabled:=false; end; |
LearnDelphi
一般會員 發表:4 回覆:7 積分:2 註冊:2005-04-07 發送簡訊給我 |
|
LearnDelphi
一般會員 發表:4 回覆:7 積分:2 註冊:2005-04-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |