DOBON.NET DOBON.NETプログラミング掲示板過去ログ

キーワード検索の方法

分類:[.NET]

データベースはACCESSを使ってます。
バンド名  | ジャンル
----------------------------
GLAY   | ロック
モーニング娘| アイドルポップ
ELT   | pop

textBox1にバンド名のキーワードを入れるようにしてあり、
textBox1に入力したキーワードを含むバンド名をデーターベースから
検索するにはどうしたらいいのでしょうか?
■No1526に返信(マサヤンさんの記事)
> データベースはACCESSを使ってます。
> バンド名  | ジャンル
> ----------------------------
> GLAY   | ロック
> モーニング娘| アイドルポップ
> ELT   | pop
>
> textBox1にバンド名のキーワードを入れるようにしてあり、
> textBox1に入力したキーワードを含むバンド名をデーターベースから
> 検索するにはどうしたらいいのでしょうか?

fukuです、おはようです。
WEHRE区です

"SELECT * FROM テーブル名 WHERE (Like '*" & me.textBox1.text & "*')"

以上です。
■No1529に返信(fukuさんの記事)
> ■No1526に返信(マサヤンさんの記事)
>>データベースはACCESSを使ってます。
>>バンド名  | ジャンル
>>----------------------------
>>GLAY   | ロック
>>モーニング娘| アイドルポップ
>>ELT   | pop
>>
>>textBox1にバンド名のキーワードを入れるようにしてあり、
>>textBox1に入力したキーワードを含むバンド名をデーターベースから
>>検索するにはどうしたらいいのでしょうか?
>
> fukuです、おはようです。
> WEHRE区です
>
> "SELECT * FROM テーブル名 WHERE (Like '*" & me.textBox1.text & "*')"
>
> 以上です。
>
fukuです、まちがいました。
"SELECT * FROM テーブル名 WHERE (バンド名 Like '*" & me.textBox1.text & "*')"

以上です。
> "SELECT * FROM テーブル名 WHERE (バンド名 Like '*" & me.textBox1.text >>& "*')"

これってSQL文ですよね?
これをどこに入力すればよいのでしょうか?
初心者すぎてすいません。
■No1534に返信(マサヤンさんの記事)
>>"SELECT * FROM テーブル名 WHERE (バンド名 Like '*" & me.textBox1.text >>& "*')"
>
> これってSQL文ですよね?
> これをどこに入力すればよいのでしょうか?
> 初心者すぎてすいません。
>
>
fukuです。
どのようにAccessから読み込んでいるのかを教えてもらわないと
状況が分かりません。
状況次第では、DataViewのRowFilerでも可能になります。

もし、下記と同様であれば参考になるかも知れませんね。VB.NETですけど
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=1519&rev=&no=0


以上です。
■No1537に返信(fukuさんの記事)
> ■No1534に返信(マサヤンさんの記事)
> >>"SELECT * FROM テーブル名 WHERE (バンド名 Like '*" & me.textBox1.text >>& "*')"
>>
>>これってSQL文ですよね?
>>これをどこに入力すればよいのでしょうか?
>>初心者すぎてすいません。
>>
>>
> fukuです。
> どのようにAccessから読み込んでいるのかを教えてもらわないと
> 状況が分かりません。
> 状況次第では、DataViewのRowFilerでも可能になります。
>
> もし、下記と同様であれば参考になるかも知れませんね。VB.NETですけど
> http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=1519&rev=&no=0
>
>
> 以上です。

private void button1_Click(object sender, System.EventArgs e)
{
    oleDbDataAdapter1.Fill(dataSet1, "バンド名");
}

このようにボタンを押すとデータベースを読み込むようになっています
■No1539に返信(マサヤンさんの記事)
> private void button1_Click(object sender, System.EventArgs e)
> {
>     oleDbDataAdapter1.Fill(dataSet1, "バンド名");
> }
>
> このようにボタンを押すとデータベースを読み込むようになっています

fukuです、C#のサンプルです。
1、button1をクリックする前に、dataset1に"バンド名"が読み込まれている
ことを前提としています。

☆投稿時に言語を指定してください。

private void button1_Click(object sender, System.EventArgs e)
{
OleDbCommand myOleDbCommand;
int intReccount;
string strSQL;
//日付抽出用
strSQL = "SELECT * FROM テーブル名 WHERE (バンド名 Like '*" + textBox1.Text + "*')";
myOleDbCommand = new OleDbCommand(strSQL, oleDbConnection1);

//SELECT用のOleDbCommandを設定
oleDbDataAdapter1.SelectCommand = myOleDbCommand;
//読み込む前にテーブルをクリア
dataSet1.Tables["バンド名"].Clear();

//DataSetへ再読み込み
intReccount = oleDbDataAdapter1.Fill(dataSet1, "バンド名");

myOleDbCommand.Dispose();

}

以上です。
OleDbCommandってところでエラーになちゃうのはなぜでしょうか?
何回も質問してすいません。
■No1556に返信(マサヤンさんの記事)
> OleDbCommandってところでエラーになちゃうのはなぜでしょうか?
> 何回も質問してすいません。

fukuです、おはようです。
自分の環境では、問題なく動いてますよ。
マサヤンさん、エラーの内容を記述しないと分からないですよ。
質問時は、細かく書かないと伝わらないですよ。

OleDbCommandは、System.Data.OleDb名前空間を使用していますので、
ファイルの先頭に
using System.Data.OleDb;
を宣言するか
OleDbCommandオブジェクトの定義を
System.Data.OleDb.OleDbCommand myOleDbCommand;
とするかで単純なOleDbCommandのエラーはなくなると思います。

以上です。
ビルドエラーは、なくなりましたが、アプリケーション実行中に
エラーがでました
//読み込む前にテーブルをクリア
dataSet1.Tables["バンド名"].Clear();
の所で
オブジェクト参照がオブジェクト インスタンスに設定されていません。
ってエラーがでちゃいました・・・。
なんででしょうか?
■No1570に返信(マサヤンさんの記事)
> ビルドエラーは、なくなりましたが、アプリケーション実行中に
> エラーがでました
> //読み込む前にテーブルをクリア
> dataSet1.Tables["バンド名"].Clear();
> の所で
> オブジェクト参照がオブジェクト インスタンスに設定されていません。
> ってエラーがでちゃいました・・・。
> なんででしょうか?

fukuです、おはようです。
自分のサンプルは、
> 1、button1をクリックする前に、dataset1に"バンド名"が読み込まれている
> ことを前提としています。
ですのでForm_Loadで
intReccount = oleDbDataAdapter1.Fill(dataSet1, "バンド名");
を実行し、DataSetにバンド名を読み込んでいます。
もし、上記の処理を行っていないのであれば、dataSet1に"バンド名"
テーブル定義が設定されていないのでエラーがでます。

また、SQL文ですが、マサヤンさんのデータベースとテーブル名、
フィールド名が異なっているかも知れませんので、自分の環境に
合わせて修正してください。

以上です。
private void Form4_Load(object sender, System.EventArgs e)
{
int intReccount;
intReccount = odaKeihin.Fill(dsKeihin1, "バンド名");

}
Form_Loadのプログラムはこれでいいんですよね?

//DataSetへ再読み込み
intReccount = odaKeihin.Fill(dsKeihin1, "バンド名");
の所で
'System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。っていうエラーがまだでます・・。

intReccount = odaKeihin.Fill(dsKeihin1, "バンド名");
のところの【バンド名】はテーブル名じゃないですよね?
■No1581に返信(マサヤンさんの記事)
> //DataSetへ再読み込み
> intReccount = odaKeihin.Fill(dsKeihin1, "バンド名");
> の所で
> 'System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。っていうエラーがまだでます・・。
>
fukuです、こんにちは。

odaKeihinは、oleDbDataAdapterですよね?
Formに貼り付けてある、odaKeihinの設定がされていないと思います。
FormのodaKeihinを右クリックしメニューからデータアダプタの構成を実行
します。ウィザード画面でデータベースの接続を設定した後に
SQLステートメントを使用するを選択し、クエリビルダで読み込みデータを
設定した後に実行してみてください。
これをやることにより、データベースとの接続とテーブルからの初期読み込みを
コントロールがやってくれます。

あと、エラーが発生した場合は、Breakポインタを設定しStep実行
で原因を探ってみてください。

> intReccount = odaKeihin.Fill(dsKeihin1, "バンド名");
> のところの【バンド名】はテーブル名じゃないですよね?
そうです、dsKeihin1内でユニークなテーブル名で実際のテーブル名では
ありません。

以上です。
できました☆
ご迷惑掛けてすいませんでした

DOBON.NET | プログラミング道 | プログラミング掲示板