如何连接两个可以在Lazarus中用作过滤器的DBLookUpCombobox

时间:2016-07-21 13:22:45

标签: delphi combobox lazarus

我有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;

感谢您的回答

1 个答案:

答案 0 :(得分:0)

Article_Number是文本字段还是(顾名思义)数字字段?如果是数字,则DBLkpCbo_Article.Text实际上是数字(即包含有效数字的字符串)?如果我怀疑Article_Number是一个文本字段,则省略了引号:

SQLQuery3.SQL.Text:='SELECT Article_Number FROM Article_Weights WHERE Article_Number='''+DBLkpCbo_Article.Text+'''';