问个查询方面的常识问题『实在汗颜』
大家好,请问:
我的数据库里有一个“No”的字段,内容为:1,1,1,2,2,2,3,3,3。我在写程序时想把“No”字段的内容倒进一个combobox里,如下(已成功)
ADOTable1->Active=false;
ADOTable1->TableName="tablename";
ADOTable1->Active=true;
ADOTable1->First();
while(!ADOTable1->Eof)
{
cbNo->Items->Add(ADOTable1->FieldByName("No")->Value);
ADOTable1->Next();
}
ADOTable1->Active=false;可想而知,combobox里一定出现了3个1,3个2,3个3,我现在想让重复的
记录只出现一次,即combobox里只出现一个1,一个2,一个3。怎么实现?
问题点数:50、回复次数:6Top
1 楼TeiTM()回复于 2005-12-21 11:00:25 得分 0
哦!那个cbNo就是comboboxTop
2 楼wf2091139(峰子)回复于 2005-12-21 11:13:40 得分 12
有2中方法,
1、
while(!ADOTable1->Eof)
{
AnsiString aa = ADOTable1->FieldByName("No")->Value;
int index = cbNo->Items->IndexOf(aa);
if(index == -1)//没有则增加
cbNo->Items->Add(aa);
ADOTable1->Next();
}
2、对数据集进行筛选。选取不重复的记录。
或换数据集控件,在SQL里面做
Select distinct(No) from tablename
Top
3 楼constantine(飘遥的安吉儿)回复于 2005-12-21 11:16:06 得分 12
if(cbNo->Items->Indexof(ADOTable1->FieldByName("No")->Value)==-1)
cbNo->Items->Add(ADOTable1->FieldByName("No")->Value);
这样判断一下,你自己注意一下写法,可能大小写之类的我写错了Top
4 楼guzhutt(浪迹天涯)回复于 2005-12-21 11:16:55 得分 2
设置一个唯一查询条件,重复的不再产生
查询下SqiServer 我一下也不记得了Top
5 楼G66606495(键疯)回复于 2005-12-21 11:57:17 得分 12
while(!ADOTable1->Eof)
{
AnsiString aa =Trim(ADOTable1->FieldByName("No")->Value);
int index = cbNo->Items->IndexOf(aa);
if(index == -1
cbNo->Items->Add(aa);
ADOTable1->Next();
}
Top
6 楼songhtao(三十年孤独)回复于 2005-12-21 12:03:27 得分 12
可以事先设置TComboBox的内容为1、2、3
然后
while(!ADOTable1->Eof)
{
switch (ADOTable1->FieldByName("No")->Value) {
case 0:
cbNo->ItemIndex = 0;
}
ADOTable1->Next();
}Top





