2016-07-21 22 views
0

我有2個表格:1. 項目,2. Article_Weights。 表項目連接到第一個DBLookUpCombobox DBLkpCbo_Projects。 它有一列項目它包含四位數字。 (1001,1004,1008,...)如何連接兩個DBLookUpComboboxes,可用作Lazarus中的篩選器

Article_Weights含有列項目Article_NumberArticle_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

是Article_Number文本字段或(顧名思義)一個數字字段?如果它是一個數字,實際上是DBLkpCbo_Article.Text數字(即包含有效數字的字符串)?如果像我懷疑,Article_Number是一個文本字段,你省略了引號:

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

Article_Number是在MS Access設置爲短文本和示例如下:1004.001.0020。我嘗試了你的建議,但彈出錯誤消息:「確保不包含無效字符或標點符號」。當我嘗試將其重命名爲「10040010020」時,出現「參數太少」錯誤。 – Revan31

+0

對不起 - 我使用雙引號代替單引號 - 因爲我使用了SQL,所以一段時間。現在更正。 – Dsm

+0

它真的工作! :)我花了很多時間試圖解決這個問題。非常感謝你。 – Revan31

相關問題