2016-06-27 6 views
1
ADOQuerySelect.Close; 
    ADOQuerySelect.SQL.Add(' AND (дата_заказа between #'+dat+'# and #'+da+'#)'); 
    if ComboBox6.Text <> '' then 
    begin 
    ADOQuerySelect.Parameters.ParamByName('Name').Value := ComboBox6.Text ; 
     ADOQuerySelect.SQL.Add(' AND (Наименование = :Name)'); 
    end; 
ADOQuerySelect.Open; 

私はDelphi 2007、MS Accessを使用しています。そして、私は今どのようにパラメータで動作しないのですか?このコードでは、私はエラーがあります:パラメータ名が見つかりません。私はコードの他の多くの変形を試みましたが、それらはすべて動作しません。私はftstringのデータ型を持つGUIを介してパラメータNameを追加します。Delphi 2007 Adoqueryのパラメータが機能しない

答えて

1

オブジェクトインスペクタでは、ADOQuerySelectはパラメータのリストの中で '名前'を持つ必要があります。

あなたはまた、「名前」パラメータを作成するには、次のコードを使用することができます

with ADOQuerySelect.Parameters.AddParameter do 
begin 
    Name := 'Name'; 
    DataType := ftString; 
end; 
+0

オブジェクトインスペクタで –

+0

SQLテーブルの「名前」は? –

+0

いいえ、それはsqlテーブルにあるはずですか? –

3

は、あなたのコード内のSQLを変更しても、既存のパラメータをクリアしますので、あなたがしよう時点で「名前」と呼ばれるパラメータはありませんその値を設定します。 Nameパラメータを作成しますが、それは遅すぎます。

変更あなたの文の順序:

ADOQuerySelect.Close; 
ADOQuerySelect.SQL.Add(' AND (дата_заказа between #'+dat+'# and #'+da+'#)'); 
if ComboBox6.Text <> '' then 
begin 
    ADOQuerySelect.SQL.Add(' AND (Наименование = :Name)'); 
    ADOQuerySelect.Parameters.ParamByName('Name').Value := ComboBox6.Text ; 
end; 
ADOQuerySelect.Open; 

あなたはところで、すべてあなたの交換のためのパラメータを使用する必要があります。データベースドライバが変換と日付の形式と値の引用を処理し、そのすべてを処理します。

関連する問題