combobox循环读入数据库中字段的问题(50分)

  • 主题发起人 主题发起人 四毛
  • 开始时间 开始时间

四毛

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把数据库中一个字段不重复的读入到combobox中
with query1 do
begin
First;
TmpStr:=Copy(DataModule1.tikuTable.FieldByName('th').AsString,3,2);
ComboBox2.Items.Add('第'+TmpStr+'节');
While not Eof do
begin
if Copy(DataModule1.tikuTable.FieldByName('th').AsString,3,2)<>TmpStr then
begin
TmpStr:=Copy(DataModule1.tikuTable.FieldByName('th').AsString,3,2);
ComboBox2.Items.Add('第'+TmpStr+'节');
end;
Next;
end;
可是每次只有一项,比如第2节,数据库中明明有第1节的题目
帮忙看一下
 

query1和DataModule1.tikuTable是不是主从关系?
为何不直接从query1中读取?
 
这样行不行?

with DataModule1.tikuTable do begin
First;
TmpStr:=Copy(FieldByName('th').AsString,3,2);
ComboBox2.Items.Add('第'+TmpStr+'节');
While not Eof do begin
if Copy(FieldByName('th').AsString,3,2)<>TmpStr then begin
TmpStr:=Copy(DataModule1.tikuTable.FieldByName('th').AsString,3,2);
ComboBox2.Items.Add('第'+TmpStr+'节');
end;
Next;
end;
end;
 
是我搞错了
不是tikuTable,应该是query1
但是还是有问题
说query1中找不到th的字段

ComboBox2.Clear;
with DataModule1.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('Select th,bzcs,zccs From dbo.tiku');
SQL.Add('where th>=:NumberFirst and th<=:NumberLast');
SQL.Add('Order By th');
ParamByName('NumberFirst').AsString:=MyIntToStr(NumbZhang)+'00000';
ParamByName('NumberLast').AsString:=MyIntToStr(NumbZhang)+'99999';
Open;
First;
TmpStr:=Copy(DataModule1.Query1.FieldByName('th').AsString,3,2);
ComboBox2.Items.Add('第'+TmpStr+'节');
While not Eof do
begin
if Copy(DataModule1.Query1.FieldByName('th').AsString,3,2)<>TmpStr then
begin
TmpStr:=Copy(DataModule1.Query1.FieldByName('th').AsString,3,2);
ComboBox2.Items.Add('第'+TmpStr+'节');
end;
Next;
end;
end;
 
你的数据库是不是oracle?
我在oracle也遇到同样的情况,orderby 的字段告诉我说不存在
Tnnd
 
那一句出错?
Open出错是因为你的表有问题,如果是Oracle请把字段名的表名改成大写试一试
 
while not Query1.Eof do
begin
if ComboBox1.Count=0 then
ComboBox1.Items.Add(copy(Query1.FieldByName('jh').AsString,3,2))
else
begin
for j:=0 to ComboBox1.Count-1 do
begin
if ComboBox1.Items[j]=copy(Query1.FieldByName('jh').AsString,3,2) then
break
else
begin
if j=ComboBox1.Count-1 then
begin
ComboBox1.Itmes.Add(copy(Query1.FieldByName('jh').AsString,3,2));
break;
end;
end;
end;
end;
Qyert1.next;
end;
 
接受了答案
 
后退
顶部