2013-04-08 77 views
1
沒有默認值

我工作的程序使用if語句添加一行到SQL的另一個組合框組合框參數在德爾福

procedure TFmNewGarage.ComboBoxCountryEnter(Sender: TObject); 
begin 
    ADOQueryCountry.SQL.Clear; 
    ADOQueryCountry.SQL.Add('SELECT DISTINCT Country'); 
    ADOQueryCountry.SQL.Add(' FROM TblBaseCar'); 
    ADOQueryCountry.Open; 
    while not ADOQueryCountry.Eof do 
    begin 
    ComboBoxCountry.Items.Add(ADOQueryCountry['Country']); 
    ADOQueryCountry.Next; 
    end; 
end; 

procedure TFmNewGarage.ComboBoxCountryChange(Sender: TObject); 
begin 
    SelA:=True; 
    ComboBoxManufacturer.Show; 
    ComboBoxCountry.Hide; 
end; 

procedure TFmNewGarage.ComboBoxManufacturerEnter(Sender: TObject); 
begin 
    ADOQueryManufacturer.SQL.Clear; 
    ADOQueryManufacturer.SQL.Add('SELECT DISTINCT Manufacturer'); 
    ADOQueryManufacturer.SQL.Add(' FROM TblBaseCar'); 
    if SelA=true then 
    ADOQueryManufacturer.SQL.Add(' WHERE Country=(ComboBoxCountry.seltext)'); 
    ADOQueryManufacturer.Open; 
    while not ADOQueryManufacturer.Eof do 
    begin 
    ComboBoxManufacturer.Items.Add(ADOQueryManufacturer['Manufacturer']); 
    ADOQueryManufacturer.Next; 
    end; 
end; 

的內容在運行時,這導致錯誤ComboBoxCountry.seltext沒有默認值,任何人都可以幫我糾正這個問題嗎?

回答

1

SelText是不是你應該使用的財產。您需要爲選擇ItemIndex組合框Items值:

var 
Country: string; 
begin 
    ... 
    if ComboBoxCountry.ItemIndex <> -1 then 
    begin 
    Country := ComboBoxCountryItems[ComboBoxCountry.ItemIndex]; 
    ADOQueryManufacturer.SQL.Add('WHERE Country = ' + QuotedStr(Country)); 
    end; 
end; 
+0

似乎現在崩潰之前得到進一步的,但還是引發了異常的說法,例如,加拿大的參數沒有默認值 – 2013-04-08 17:50:38

+0

我稍微修改我的代碼;看看這個變化是否有幫助。您根本沒有在代碼中顯示任何「參數」的用法(根據您提供的代碼,您沒有在任何SQL語句中使用參數化查詢)。我無法解釋這個問題,因爲你沒有提供任何與之相關的信息。我懷疑它是因爲變量被添加到SQL沒有引號。 – 2013-04-08 18:00:25

+0

在我的代碼中沒有參數的用法,它會在後面添加所有這些到數據庫中,但我不確定這是否會影響它 – 2013-04-08 18:01:43