急急急急!Delphi中ComboBox的几个和数据库有关的问题
我的问题有点多,我尽量详细的描述,还请各位高手尽量耐心的帮我看看,我全部只有14分,请见谅!我的数据库中有两个表,一个省份表,一个学校表,省份表里有省份编号,省份名称,学...
我的问题有点多,我尽量详细的描述,还请各位高手尽量耐心的帮我看看,我全部只有14分,请见谅!
我的数据库中有两个表,一个省份表,一个学校表,省份表里有省份编号,省份名称,学校表里有省份编号,学校编号和学校名称。
有ComboBox1和ComboBox2,我想在ComboBox1中直接显示的是省份表里的省份号,然后ComboBox2显示学校表里省份编号等于ComboBox1中选中的省份编号的那些学校的编号,然后再将ComboBox1和ComboBox2里的内容放到新的数据库中。就是例如我选530,那么CombBox2,出现的就是在530这个代号下的学校号码,而其他省份号的学校就不出现在CombBox2中。
我写了ComboBox1中OnChange的代码,但是运行时出了问题,就是第一次点开下拉框里面是空白,然后要点了空白,再点开下拉框才出现编号,但是点以后那个值不会显示在ComboBox1的Text中,代码如下,还请大家帮我看看代码出了什么问题,还有教教我怎么实现ComboBox2里的功能。
procedure TForm9.ComboBox1Change(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select distinct provinceno from province');
adoquery1.Open;
combobox1.Items.Clear;
with adoquery1 do
while not eof do
begin
combobox1.Items.Add(fieldbyname('provinceno').AsString );
next;
end;
end; 展开
我的数据库中有两个表,一个省份表,一个学校表,省份表里有省份编号,省份名称,学校表里有省份编号,学校编号和学校名称。
有ComboBox1和ComboBox2,我想在ComboBox1中直接显示的是省份表里的省份号,然后ComboBox2显示学校表里省份编号等于ComboBox1中选中的省份编号的那些学校的编号,然后再将ComboBox1和ComboBox2里的内容放到新的数据库中。就是例如我选530,那么CombBox2,出现的就是在530这个代号下的学校号码,而其他省份号的学校就不出现在CombBox2中。
我写了ComboBox1中OnChange的代码,但是运行时出了问题,就是第一次点开下拉框里面是空白,然后要点了空白,再点开下拉框才出现编号,但是点以后那个值不会显示在ComboBox1的Text中,代码如下,还请大家帮我看看代码出了什么问题,还有教教我怎么实现ComboBox2里的功能。
procedure TForm9.ComboBox1Change(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select distinct provinceno from province');
adoquery1.Open;
combobox1.Items.Clear;
with adoquery1 do
while not eof do
begin
combobox1.Items.Add(fieldbyname('provinceno').AsString );
next;
end;
end; 展开
1个回答
展开全部
问题出现在 combobox1.Items.Clear 。
就是第一次点开下拉框里面是空白,因为你那时候还没有触发change,当然生成省份的代码页没有运行
“然后要点了空白,再点开下拉框才出现编号”这时候触发了change,因此就出现了编号...
其实按照你说的功能,CombBox1的items内容不用变.你可以在打开窗口例如在窗口show里面写入生成省份代号的代码。
procedure TForm9.show(Sender: TObject);
begin
combobox1.Items.Clear;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select distinct provinceno from province');
adoquery1.Open;
with adoquery1 do
while not eof do
begin
combobox1.Items.Add(fieldbyname('provinceno').AsString );
next;
end;
在ComboBox1的change写下面的代码
procedure TForm9.ComboBox1Change(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select 学校编号 from 学校表 where ');
adoquery1.SQL.Add('省份编号 = :A');
adoquery1.Parameters[0].Value:=combobox1.text
adoquery1.Open;
combobox2.Items.Clear;
with adoquery1 do
while not eof do
begin
combobox2.Items.Add(fieldbyname('学校编号').AsString );
next;
end;
end;
就是第一次点开下拉框里面是空白,因为你那时候还没有触发change,当然生成省份的代码页没有运行
“然后要点了空白,再点开下拉框才出现编号”这时候触发了change,因此就出现了编号...
其实按照你说的功能,CombBox1的items内容不用变.你可以在打开窗口例如在窗口show里面写入生成省份代号的代码。
procedure TForm9.show(Sender: TObject);
begin
combobox1.Items.Clear;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select distinct provinceno from province');
adoquery1.Open;
with adoquery1 do
while not eof do
begin
combobox1.Items.Add(fieldbyname('provinceno').AsString );
next;
end;
在ComboBox1的change写下面的代码
procedure TForm9.ComboBox1Change(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select 学校编号 from 学校表 where ');
adoquery1.SQL.Add('省份编号 = :A');
adoquery1.Parameters[0].Value:=combobox1.text
adoquery1.Open;
combobox2.Items.Clear;
with adoquery1 do
while not eof do
begin
combobox2.Items.Add(fieldbyname('学校编号').AsString );
next;
end;
end;
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询