我有2个表:1。项目,2。 Article_Weights 。 表项目已连接到第一个DBLookUpCombobox DBLkpCbo_Projects 。 它有一列 项目 ,其中包含四位数字。 (1001,1004,1008,......)
表 Article_Weights 包含 项目 , Article_Number , <列em> Article_Weights 等。此表与DBLookUpCombobox DBLkpCbo_Articles 相关联。
我想要实现的是当我从第一个组合框选择某个项目时,第二个组合框将只显示属于该项目的文章编号。之后,当我从第二个组合框中选择一些文章编号时,有关这篇文章的信息将显示在DBGrid中。
过滤正在运行。我坚持到最后一点。当我选择一些文章编号时,我得到错误“数据类型在表达式标准中不匹配”
这是我的代码:
procedure TMainForm.DBLkpCbo_ProjectSelect(Sender: TObject);
begin
if DBLkpCbo_Project.ItemIndex <> -1 then begin
SQLQuery2.Active:=true;
//SQLQuery1.ApplyUpdates();
SQLTransaction1.Commit();
SQLQuery2.Close;
SQLQuery2.SQL.Text:='SELECT Article_Number FROM Article_Weights WHERE Project = '+DBLkpCbo_Project.Text+'';
SQLQuery2.Open;
end;
end;
procedure TMainForm.DBLkpCbo_ArticleChange(Sender: TObject);
begin
if DBLkpCbo_Article.ItemIndex <> -1 then begin
//DBGrid1.Enabled:=true;
SQLQuery3.Active:=true;
//SQLQuery1.ApplyUpdates();
SQLTransaction1.Commit();
SQLQuery3.Close;
SQLQuery3.SQL.Text:='SELECT Article_Number FROM Article_Weights WHERE Article_Number='+DBLkpCbo_Article.Text+'';
SQLQuery3.Open;
end;
end;
感谢您的回答
答案 0 :(得分:0)
Article_Number是文本字段还是(顾名思义)数字字段?如果是数字,则DBLkpCbo_Article.Text实际上是数字(即包含有效数字的字符串)?如果我怀疑Article_Number是一个文本字段,则省略了引号:
SQLQuery3.SQL.Text:='SELECT Article_Number FROM Article_Weights WHERE Article_Number='''+DBLkpCbo_Article.Text+'''';