如何连接两个可用作 Lazarus 过滤器的 DBLookUpComboboxes
How to connect two DBLookUpComboboxes that can be used as filter in Lazarus
我有 2 个 table:1.项目,2.Article_Weights。
Table Projects 连接到第一个 DBLookUpCombobox DBLkpCbo_Projects。
它有一列 Project,其中包含四位数字。 (1001, 1004, 1008,...)
Table Article_Weights 包含列 Project, Article_Number,Article_Weights等等。这个 table 与 DBLookUpCombobox DBLkpCbo_Articles.
连接
我想要实现的是当我从第一个组合框中选择某个项目时,第二个组合框将只显示属于该项目的文章编号。之后当我从第二个组合框中选择一些文章编号时,关于这篇文章的信息将显示在 DBGrid 中。
正在过滤。我坚持最后一点。当我选择一些商品编号时,出现错误 "Data types do not match in the expression criteria"
这是我的代码:
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;
感谢您的任何回答
Article_Number 是文本字段还是(顾名思义)数字字段?如果它是一个数字 DBLkpCbo_Article.Text 实际上是数字(即包含有效数字的字符串)?如果正如我所怀疑的那样,Article_Number 是一个文本字段,则您省略了引号:
SQLQuery3.SQL.Text:='SELECT Article_Number FROM Article_Weights WHERE Article_Number='''+DBLkpCbo_Article.Text+'''';
我有 2 个 table:1.项目,2.Article_Weights。 Table Projects 连接到第一个 DBLookUpCombobox DBLkpCbo_Projects。 它有一列 Project,其中包含四位数字。 (1001, 1004, 1008,...)
Table Article_Weights 包含列 Project, Article_Number,Article_Weights等等。这个 table 与 DBLookUpCombobox DBLkpCbo_Articles.
连接我想要实现的是当我从第一个组合框中选择某个项目时,第二个组合框将只显示属于该项目的文章编号。之后当我从第二个组合框中选择一些文章编号时,关于这篇文章的信息将显示在 DBGrid 中。
正在过滤。我坚持最后一点。当我选择一些商品编号时,出现错误 "Data types do not match in the expression criteria"
这是我的代码:
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;
感谢您的任何回答
Article_Number 是文本字段还是(顾名思义)数字字段?如果它是一个数字 DBLkpCbo_Article.Text 实际上是数字(即包含有效数字的字符串)?如果正如我所怀疑的那样,Article_Number 是一个文本字段,则您省略了引号:
SQLQuery3.SQL.Text:='SELECT Article_Number FROM Article_Weights WHERE Article_Number='''+DBLkpCbo_Article.Text+'''';