当前位置:主页>仓库管理软件> 列表

数据级联问题 找财务管理软件

销售管理软件版1楼: 我有三个窗体,frmmain,frmdm,frmsale,frmsale是进行销售的窗体,上面有控件suicombobox,现在通过frmdm窗体的adoconnection和数据库连接上了,有个库存表(品牌,产品,型号,数量),要在suicombobox1中加入所有的品牌,然后级联在suicombobox2中加入这个品牌所对应的所有产品,依次类推,suicombobox3中加入此产品的所有型号,下面是代码.但是有错误出现,就是当在suicombobox1的onchange事件执行的时候出现错误,
class EOleException with message ''列名'' 海尔无效,这个海尔就是在suicombobox1中选择的项,如何解决.
procedure Tfrmsale.FormCreate(Sender: TObject);

begin
DateTimePicker1.DateTime:=now();
if frmdm.ADOQuery1.active then frmdm.ADOQuery1.close ;
frmdm.ADOQuery1.sql.clear ;
frmdm.ADOQuery1.sql.text:=''select distinct 品牌 from 库存 order by 品牌 '' ;
frmdm.ADOQuery1.open ;
if frmdm.ADOQuery1.recordcount>0 then
begin
suiComboBox1.clear ;
frmdm.ADOQuery1.first ;
while not frmdm.ADOQuery1.Eof do
begin
suiComboBox1.Items.Add(Trim(frmdm.ADOQuery1.FieldByName(''品牌'').AsString));
frmdm.ADOQuery1.next ;
end ;


end ;

end;

procedure Tfrmsale.suiComboBox1Change(Sender: TObject);
var pp:string;
begin
pp:=suicombobox1.Text;
if frmdm.ADOQuery2.active then frmdm.ADOQuery2.close ;
frmdm.ADOQuery2.SQL.Clear;
frmdm.ADOQuery2.SQL.Text:=''select distinct 产品 from 库存 where 品牌='';
frmdm.ADOQuery2.SQL.Text:=frmdm.ADOQuery2.SQL.Text+pp;
frmdm.ADOQuery2.Open;
if frmdm.ADOQuery2.RecordCount>0 then
begin
suicombobox2.Clear;
frmdm.ADOQuery2.First;
while not frmdm.ADOQuery2.eof do
begin
suicombobox2.Items.Add(trim(frmdm.ADOQuery2.FieldByName(''产品'').AsString));
frmdm.ADOQuery2.Next;
end;

end;
end;

procedure Tfrmsale.suiComboBox2Change(Sender: TObject);
var cp:string;
begin
if frmdm.ADOQuery3.active then frmdm.ADOQuery2.close ;
frmdm.ADOQuery3.SQL.Clear;
cp:=suicombobox2.Text;
frmdm.ADOQuery3.SQL.Text:=''select distinct 型号 from 库存'';
frmdm.ADOQuery3.SQL.Text:=frmdm.ADOQuery3.SQL.Text+ ''where 产品=''+cp;
frmdm.ADOQuery3.Open;
if frmdm.ADOQuery3.RecordCount>0 then
begin
suicombobox3.Clear;
frmdm.ADOQuery3.First;
while not frmdm.ADOQuery3.eof do
begin
suicombobox3.Items.Add(trim(frmdm.ADOQuery3.FieldByName(''型号'').AsString));
frmdm.ADOQuery3.Next;
end;

end;
end;

end.

2楼: 粗略看了一下你的代码,就拿这句来说:
frmdm.ADOQuery2.SQL.Text:=''select distinct 产品 from 库存 where 品牌='';
你的品牌字段的类型是什么?如果是字符串的话应当这样写:
frmdm.ADOQuery2.SQL.Text:=''select distinct 产品 from 库存 where 品牌='''''';
frmdm.ADOQuery2.SQL.Text:=frmdm.ADOQuery2.SQL.Text+pp+'''''''';
字符串类型的字段条件要用引号引起来!!!!! 如财务软件下载

3楼: suiComboBox2Change事件估计也会出现类似问题。

4楼: 正如楼上所说,delphi里引用SQL语句注意引号使用方法,字符串中两个单引号表示一个单引号

5楼: 但是为什么不出现级联效果啊,产品没有对应内容,我确信数据库中有数据

6楼: 代码跟踪一下,看看是否走suicombobox2.Items.Add()这一步。

销售管理软件版7楼: 如果是错误的话应该是单引号的问题,楼上的就是正确解释了,但是你这样可能得不到数据

8楼: 没有查询到啊,根本就不能执行itesm.add啊!!!

9楼: 把frmdm.ADOQuery2.SQL.Text拿到查询分析器中执行,看看有没有纪录。

10楼: 有

11楼: 谢谢

12楼: 不会吧,闹妖了?


while not frmdm.ADOQuery2.eof do
begin
end
这个过程也进不去吗?你的Adoquery的filter中没什么东西吧? 如财务管理软件