我现在已经把注意力转移到了执行一个条件为if true的查询循环上。我知道我的代码很乱,我甚至不确定我是否做对了。结果是我可以得到第一条记录,但不能得到满足循环条件的其他记录。
以下是我到目前为止所做的:
procedure TAddressListForm.LoadMCListbox();
Var
GetID : Integer;
Begin
GetID := strtoint(ContactUnit.ContactForm.IDLabel.caption);
ALMCListBox.Items.Clear;
ContactForm.RootsDB.Connected := True;
AddListQuery.close;
AddListQuery.SQL.Clear;
AddListQuery.sql.text := 'SELECT * FROM AddAddress WHERE [ContactID] = :CID';
AddListQuery.ParamByName('CID').Value := GetID;
AddListQuery.open;
AddListQuery.first;
while not AddListQuery.eof and AddListQuery.ParamByName('CID').Value = GetID do
begin ALMCListbox.items.add(inttostr(AddListQuery.FieldByName('AddID').AsInteger) + ';'
+ inttostr(AddListQuery.fieldbyname('ContactID').asinteger) + ';' + AddListQuery.FieldByName('AddStreet').AsString
+ ' ' + AddListQuery.FieldByName('AddCity').AsString);
next;
AddListQuery.Close;
End;
结束;
很抱歉,如果这真的是基本的,我正在努力理解这一点。
谢谢你
1条答案
按热度按时间zvokhttg1#
如果表达式的计算结果为false,则while循环终止。因此,第一个不满足ID条件的记录将终止它。尝试如下操作:
请记住,while循环在执行其内容之前检查条件,并在布尔检查表达式中使用括号以避免不必要的结果,fe: