急!怎样用一个ComboBox1组件,去控制另一个ComboBox2的内容?

scp1980 2009-08-17 09:45:49
已有一程序,界面上有一个ComboBox1控件和一个ComboBox2控件。我想点击ComboBox1的某选值时,ComboBox2的会根据所选ComboBox1的内容去查询数据库中的某表,然后显示结果,该怎么编呢?这对高手们应该是小菜,可是我想了一天了也不知道怎么编,望大侠们解答~~~~
...全文
202 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
MYMGrub 2009-08-18
  • 打赏
  • 举报
回复
SORRY,不应该是疾病分类,应该是那个身体疾病应该是从COMBOBOX1里选出来的-_-!
MYMGrub 2009-08-18
  • 打赏
  • 举报
回复
这里这个只是个简单的例子,它能逐行读数据,楼主要根据自己的需要来修改一下呀:)
实际上这个应该是楼主上面说到的从数据库中读内容存到COMBOBOX2中的方法,那个“疾病分类”应该是COMBOBOX1里的内容吧。
scp1980 2009-08-18
  • 打赏
  • 举报
回复
上面的代码是放在
void __fastcall TForm4::ComboBox1Change(TObject *Sender)
{
}
吗?系统提示语法错误呢
MYMGrub 2009-08-18
  • 打赏
  • 举报
回复

ADOQuery1->Close();
ADOQuery1->SQL->Add("select * from shujubiao where 疾病分类 = '身体疾病'");
ADOQuery1->ExecSQL();
ADOQuery1->Active = true;
if (ADOQuery1->FindFirst())
{
ComboBox1->Items->Add(ADOQuery1->FieldByName("疾病名称")->AsString);
int n = 1;
int m = ADOQuery1->RecordCount;
while (n < m)
{
if (ADOQuery1->FindNext())
{
ComboBox1->Items->Add(ADOQuery1->FieldByName("疾病名称")->AsString);
}
n++;
}
}


上面这是我所知道的逐行读数据的代码,希望能对楼主有用,同样希望高人指出我的问题,共同进步:)
MYMGrub 2009-08-18
  • 打赏
  • 举报
回复
这主要应该是用循环通过ADOQUERY把查询的结果逐行读出来吧,用
ADOQUERY->FIELDBYNAME("疾病名称")->AsString;
可以把这行中“疾病名称”字段对应的内容读出来,之后再写到COMBOBOX2里不就可以了吗??
再想再DBGrid里显示出来的话就再查询一下呗...
scp1980 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mymgrub 的回复:]
首先要用ADOQUERY连接你想从中查询数据的数据库,然后其实你点击COMBOBOX1后它上面显示的数据就在
COMBOBOX1->TEXT里了,然后用你的ADO组件的QUERY方法去查询你想要的信息,最后再
COMBOBOX2->TEXT = ADOQUERY1->GETFIELDNAME(COMBOBOX1->TEXT)->ASSTRING;
COMBOBOX2->ITEMS->ADD(COMBOBOX1->TEXT);
是这个意思吗??
[/Quote]

我可能没有把问题说明白。举个例子,数据库的某表中有四个字段,分别是“疾病分类”、“疾病名称”、“药物治疗”、“饮食治疗”。疾病分类存放的是“身体疾病”和“心理疾病”,疾病名称存放的是“强迫症”、“抑郁症”、“自闭症”、“肝炎”、“肾炎“。我在界面的ComboBox1中加入了两个items(分别是 身体疾病 和心理疾病),现在我想点其中一项的时候,把对应的所有疾病名称在ComboBox2中列出。如:我用鼠标点ComboBox1的“身体疾病”这一项,则ComboBox2中出现“肝炎”、“肾炎”。我的最终目的是:实现了上述功能后,我在ComboBox1、ComboBox2中选择相应信息后,点“确定”按钮,则把该种疾病的四个字段值都在DBGrid中显示出来。该怎么编呢,郁闷中~~~~~
danielxu2010 2009-08-18
  • 打赏
  • 举报
回复
小菜路过帮顶
lhy 2009-08-17
  • 打赏
  • 举报
回复
ComboBox1的OnChange里根据当时ComboBox1的值,计算出ComboBox2的值,设置ComboBox2,然后查找数据库。
MYMGrub 2009-08-17
  • 打赏
  • 举报
回复
首先要用ADOQUERY连接你想从中查询数据的数据库,然后其实你点击COMBOBOX1后它上面显示的数据就在
COMBOBOX1->TEXT里了,然后用你的ADO组件的QUERY方法去查询你想要的信息,最后再
COMBOBOX2->TEXT = ADOQUERY1->GETFIELDNAME(COMBOBOX1->TEXT)->ASSTRING;
COMBOBOX2->ITEMS->ADD(COMBOBOX1->TEXT);
是这个意思吗??
MYMGrub 2009-08-17
  • 打赏
  • 举报
回复
这个功能为什么还要由COMBOBOX2来完成呢??它中间做了什么呀??你这不等于是直接从数据库中查询COMBOBOX1中选中的数据吗??

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧