線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1113
推到 Plurk!
推到 Facebook!

不好意思,為什麼只run一行資料。

 
y2464372001
一般會員


發表:6
回覆:7
積分:2
註冊:2007-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-23 10:20:55 IP:210.70.xxx.xxx 訂閱
s := Form4.ADOTable3.Fields[1].AsString;
Form4.ADOTable3.First;
while not Form4.ADOTable3.Eof do
begin
for i:= 1 to Form4.ADOTable3.RecordCount do begin
for j:= 1 to 6 do begin
if s = '每日' then begin
StringGrid6.Cells[j,i] := Form4.ADOTable3.Fields[j].AsString;
end;
end;

n := Form4.ADOTable3.Fields[0].AsString;
Form4.ADOTable1.First;
while not Form4.ADOTable1.Eof do begin
if Form4.ADOTable1.Fields[0].AsString = n then begin
StringGrid6.Cells[0,i] := Form4.ADOTable1.Fields[1].AsString;
end;
Form4.ADOTable1.Next;
end;
Form4.ADOTable3.Next;
end;
end;

pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-23 10:52:52 IP:60.248.xxx.xxx 未訂閱
因為您的s在迴圈之外,s值是固的,也就是判斷式只會有一次成立的情況,
試著把s := Form4.ADOTable3.Fields[1].AsString;移到迴圈內看看吧?
y2464372001
一般會員


發表:6
回覆:7
積分:2
註冊:2007-01-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-23 11:36:03 IP:210.70.xxx.xxx 訂閱
沒有辦法耶??
也是只能run一次...
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-23 12:25:12 IP:60.248.xxx.xxx 未訂閱
重點是您ADOTable的Cursor是否有移?

Form4.ADOTable3.First;

while not Form4.ADOTable3.Eof do

begin

for i:= 1 to Form4.ADOTable3.RecordCount do begin
s := Form4.ADOTable3.Fields[1].AsString;


for j:= 1 to 6 do begin

if s = '每日' then begin

StringGrid6.Cells[j,i] := Form4.ADOTable3.Fields[j].AsString;

end;

end;
if not Form4.AdOTable3.Eof then
Form4.AdOTable3.Next
......

y2464372001
一般會員


發表:6
回覆:7
積分:2
註冊:2007-01-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-01-23 13:41:45 IP:210.70.xxx.xxx 訂閱
歌曲清單編號
區域 開始時間 優先順序
每日 01:30 2 02:00 普通
每年 12/04 04:30 1 03:30
每月 " 17" 04:30 2 10:30 普通
你請我改的我都改了,應該要run 二筆的,但還是只能run第一筆。

y2464372001
一般會員


發表:6
回覆:7
積分:2
註冊:2007-01-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-01-23 16:18:50 IP:210.70.xxx.xxx 訂閱
case sRadioGroup1.ItemIndex of
0:begin
Form4.ADOTable3.First;
while not Form4.ADOTable3.Eof do begin
for i:= 1 to Form4.ADOTable3.RecordCount do begin
s := Form4.ADOTable3.Fields[1].AsString;
for j:= 1 to 6 do begin
if s = '每日' then begin
StringGrid6.Cells[j,i] := Form4.ADOTable3.Fields[j].AsString;
n := Form4.ADOTable3.Fields[0].AsString;
Form4.ADOTable1.First;
while not Form4.ADOTable1.Eof do begin
if Form4.ADOTable1.Fields[0].AsString = n then begin
StringGrid6.Cells[0,i] := Form4.ADOTable1.Fields[1].AsString;
end;
Form4.ADOTable1.Next;
end;
end;
end;
if not Form4.ADOTable3.Eof then
Form4.ADOTable3.Next;
end;
end;
StringGrid6.RowCount := i;
end;

我加入這一行的時後是可以了,可是他執行完後變成
工作排程
週期選項 日期 結束時間 1 01:00
每日 09:30 普通

pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-01-23 17:41:19 IP:60.248.xxx.xxx 未訂閱
不太懂您ADOTable3及ADOTable1的意思,而且手上沒有你的環境,不過,依您的程式碼,改成這樣,您得多定義一個x及match變數,做換行動作
ps:請您標題改成比較具有明確意思的標題,闡述內容或程式碼能儘量詳細一點
type
TForm4 = class(TForm)
ADOTable3: TClientDataSet;
ADOTable3Field: TStringField;
ADOTable3Field2: TStringField;
ADOTable3Field3: TStringField;
ADOTable3Field4: TStringField;
ADOTable3Field5: TStringField;
ADOTable3Field6: TStringField;
ADOTable3Field7: TStringField;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
StringGrid6: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form4: TForm4;

implementation
{$R *.dfm}
procedure TForm4.FormCreate(Sender: TObject);
begin
ADOTable3.Close;
AdOTable3.CreateDataSet;
AdOTable3.Append;
ADOTable3.FieldByName('歌曲清單').AsString:='1';
ADOTable3.FieldByName('週期選項').AsString:='每日';
ADOTable3.FieldByName('區域').AsString:=' ';
ADOTable3.FieldByName('日期').AsString:=' ';
ADOTable3.FieldByName('開始時間').AsString:='01:00';
ADOTable3.FieldByName('結束時間').AsString:='01:30';
ADOTable3.FieldByName('優先順序').AsString:='低';
AdOTable3.Append;
ADOTable3.FieldByName('歌曲清單').AsString:='2';
ADOTable3.FieldByName('週期選項').AsString:='每週';
ADOTable3.FieldByName('區域').AsString:=' ';
ADOTable3.FieldByName('日期').AsString:='" 星期一"';
ADOTable3.FieldByName('開始時間').AsString:='01:00';
ADOTable3.FieldByName('結束時間').AsString:='01:30';
ADOTable3.FieldByName('優先順序').AsString:='低';
AdOTable3.Append;
ADOTable3.FieldByName('歌曲清單').AsString:='2';
ADOTable3.FieldByName('週期選項').AsString:='每年';
ADOTable3.FieldByName('區域').AsString:=' ';
ADOTable3.FieldByName('日期').AsString:='';
ADOTable3.FieldByName('開始時間').AsString:='01:00';
ADOTable3.FieldByName('結束時間').AsString:='01:30';
ADOTable3.FieldByName('優先順序').AsString:='低';
AdOTable3.Append;
ADOTable3.FieldByName('歌曲清單').AsString:='2';
ADOTable3.FieldByName('週期選項').AsString:='每日';
ADOTable3.FieldByName('區域').AsString:=' ';
ADOTable3.FieldByName('日期').AsString:='';
ADOTable3.FieldByName('開始時間').AsString:='01:00';
ADOTable3.FieldByName('結束時間').AsString:='01:30';
ADOTable3.FieldByName('優先順序').AsString:='低';
end;

procedure TForm4.Button1Click(Sender: TObject);
var
i,j,x:Integer;
s,n:string;
Match:boolean;
begin
Form4.ADOTable3.First;
x:=1;
while not Form4.ADOTable3.Eof do
begin
for i:= 1 to Form4.ADOTable3.RecordCount do
begin
s := Form4.ADOTable3.Fields[1].AsString;
Match:=False;
for j:= 1 to 6 do
begin
if s = '每日' then
begin
StringGrid6.Cells[j,x] := Form4.ADOTable3.Fields[j].AsString;
n := Form4.ADOTable3.Fields[0].AsString;
Match:=True;
{ Form4.ADOTable1.First;
while not Form4.ADOTable1.Eof do
begin
if Form4.ADOTable1.Fields[0].AsString = n then
begin
StringGrid6.Cells[0,i] := Form4.ADOTable1.Fields[1].AsString;
end;
Form4.ADOTable1.Next;
end;}
end;
end;
if Match then Inc(x);
if not Form4.ADOTable3.Eof then
Form4.ADOTable3.Next;
end;
end;
StringGrid6.RowCount := i;
end;


系統時間:2024-05-07 4:29:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!