有如下循环语句
while not ADOQuery1.Eof do
begin
Com_select_Id.Items.Add(trim(ADOQuery1.FieldByName('code').AsString));
Com_select_name.Items.Add(trim(ADOQuery1.FieldByName('Anwser').AsString));
ADOQuery1.Next;
end;
ADOQuery1.Close;
循环语句能成功执行。
但是当在ADOQuery1.Next;语句前加上如下语句
with Dm_query,Dm_Query.Ads_v_Record do
begin
Active := False;
CommandText := StrServer + ' where Answer1='''
+ Trim(ADOQuery1.FieldByName('Anwser').AsString) +'''';
Active := True;
end;
Amount:=Dm_Query.Ads_v_Record.RecordCount;
Memo1.Lines.Text := Memo1.Lines.Text + #13+'<<'+trim(ADOQuery1.FieldByName('Anwser').AsString)+'>>'+' 此选项的点击次数为:'+inttostr(Amount)+'人次';
这循环只执行第一次,也就是说ADOQuery1.Next;失效。
while not ADOQuery1.Eof do
begin
Com_select_Id.Items.Add(trim(ADOQuery1.FieldByName('code').AsString));
Com_select_name.Items.Add(trim(ADOQuery1.FieldByName('Anwser').AsString));
ADOQuery1.Next;
end;
ADOQuery1.Close;
循环语句能成功执行。
但是当在ADOQuery1.Next;语句前加上如下语句
with Dm_query,Dm_Query.Ads_v_Record do
begin
Active := False;
CommandText := StrServer + ' where Answer1='''
+ Trim(ADOQuery1.FieldByName('Anwser').AsString) +'''';
Active := True;
end;
Amount:=Dm_Query.Ads_v_Record.RecordCount;
Memo1.Lines.Text := Memo1.Lines.Text + #13+'<<'+trim(ADOQuery1.FieldByName('Anwser').AsString)+'>>'+' 此选项的点击次数为:'+inttostr(Amount)+'人次';
这循环只执行第一次,也就是说ADOQuery1.Next;失效。
begin
Active := False;
CommandText := StrServer + ' where Answer1='''
+ Trim(ADOQuery1.FieldByName('Anwser').AsString) +'''';
Active := True;
end;
有问题,不过不知道问题究竟出在那里啊?!
你把中间的那个with要不去掉,
在测试一下看看
建议你用TBookMark,在Active:=false之前先记下当前的位置(用myBookMark:=ADOQuery1.getBookMark()),然后在Active:=true之后,用ADOBookMark.gotoBookMark(myBookMark)函数到达原先的位置,然后在next.
with adoquery1 do
begin
while not Eof do
begin
Com_select_Id.Items.Add(trim(ADOQuery1.FieldByName('code').AsString));
Com_select_name.Items.Add(trim(ADOQuery1.FieldByName('Anwser').AsString));
Dm_query.close;
Dm_query.CommandText := StrServer + ' where Answer1='''+ Trim(ADOQuery1.FieldByName('Anwser').AsString) +'''';
Dm_query.open;
Amout:=Dm_Query.Ads_v_Record.RecordCount;
Memo1.Lines.Text := Memo1.Lines.Text + #13+'<<'+trim(ADOQuery1.FieldByName('Anwser').AsString)+'>>'+' 此选项的点击次数为:'+inttostr(Amount)+'人次';
Next;
end;
Close;
end;
CommandText := StrServer + ' where Answer1='''
+ Trim(ADOQuery1.FieldByName('Anwser').AsString) +'''';
因为ADOQuery1已经被关闭, 不再是可用的. 建议ADOQuery1循环里的再次查询不再重复使用ADOQuery1, 别外定义一个ADOQuery, 就象楼上说的一样
你的daodataset是哪个??dm_query?
重新Active := True;后,本地数据集是空的了;
不然你可以试一下:
begin
Active := False;
CommandText := StrServer + ' where Answer1='''
+ Trim(ADOQuery1.FieldByName('Anwser').AsString) +'''';
Active := True;
/////////////******************/////////////////
if (ADOQuery1.EOF = True)
then Showmessage('空了!');
else Showmessage('没空!');
/////////////******************/////////////////
end;