2012-04-04 20 views
2

ドロップダウンリストから選択できるようにしたいデータベースのいくつかのフィールドを一覧表示したコンボボックスに、検索条件を入力してからクエリに一致するすべての結果を入力しますdbgridに表示されます。私はどのようにSQLステートメントにComboBoxの現在の値をリンクするか分からない。私はこれを使用しようとしましたデータベース内の特定のフィールドを検索する方法

begin 
    with ADOQuery do begin 
     Close; 
     SQL.Clear; 
     SQL.Add ('SELECT * FROM List WHERE combobox1.text =' + QuotedStr (Asearchterm.Text)); 
     Open; 

それは動作しません。私が得るエラーは、 "パラメータcombobox1.textにデフォルト値がありません"です。何か案は?

+1

私は 'combobox1.text'を前提としていますような何かあなたのコンボボックスからの値です。その場合、文字列の一部である必要はありません。 –

+0

私はちょっと混乱しますが、そのSQL行の一部ではないという意味ですか?私はコンボボックス1を別の変数に設定しようとしましたが、そこに入れていましたが、まだ動作しませんでした。 – captiv

+0

*動作しません。*は良いエラーの説明ではありません。決して。データベースエンジンから取得した適切なエラーメッセージを追加してください。 – TLama

答えて

3

は、SQL文の一部としてComboBox1のテキスト値を使用することを希望している場合、あなたは

'SELECT * FROM List WHERE [' + combobox1.text + '] = ''' + QuotedStr(Asearchterm.Text) + '''' 

の線に沿って、SQL文字列を設定したいが、あなたが探しているものと考えられます。私はフィルタが常に数値ではないと推測しているので、QuotedStrの周りに余分な引用符を追加しました。これは数値と数値以外の値に対しても有効です。

+0

に追加しました。ありがとうございました! – captiv

+1

いいえ、それを答えとしてマークしてください。 –

+1

ユーザーが入力した値を追加してクエリを作成しないでください。 SQLインジェクションを防ぐには、パラメータ化されたクエリを使用します。 – mghie

1

'combobox1.text'ではなく、実際の列名を入力する必要があります。そして、LIKEキーワードといくつかのワイルドカードを使用することができます。検索のためだった

SELECT * FROM 'table WHERE 'column' LIKE '%YOUR_SEARCH_TEXT%'; 

あなたが正確な文字列を検索したい場合は...その後、あなたは=演算子を使用する必要が代わりにLIKE

More info here