- - PR -
頭文字で抽出。
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-04 05:59
VS.NETを使用して、プログラムの勉強をしているのですが、
ドロップダウンリストにア〜ワという頭文字を入れて、それを元にテーブルからデータを抽出したいのですが、データアダプタの抽出条件に = 'LIKE ?%' と書いたら、うまくいきませんでした。 参考になるサイトや、抽出条件の指定をお分かりの方、よきアドバイスを宜しくお願いいたします。 [ メッセージ編集済み 編集者: NAOKO 編集日時 2004-01-04 07:34 ] | ||||||||||||
|
投稿日時: 2004-01-04 09:34
こんにちわ。諸農です。
述語が文字列として認識されていませんか? -編集補足- 抽出条件が変ですよね(^^; 頭文字が指定されていませんよね。
どううまくいかなかったのでしょうか? うまくいかなかった現象と、再現できる最小限のコードはどんなものでしょうか?
簡単なSQLの書籍などから始めてみてはいかがでしょうか。 ではでは(^^)/ _________________ 諸農和岳 Powered by Borland Delphi/C++Builder & Microsoft VS.NET [ メッセージ編集済み 編集者: Jubei 編集日時 2004-01-04 09:40 ] | ||||||||||||
|
投稿日時: 2004-01-04 17:50
da_kasiramoji.SelectCommand.Parameters["シメイ"].Value=kasira.Items.Tostring();
da_kasiramoji.Fill(ds_kasiramoji1,"会員名簿マスタ"); という形でコーディングしてあります。 kasira.Items.Tostring()には頭文字のア〜ワのうち指定したものが入ります。 エラー内容は以下のようなものです。 ParameterName 'シメイ' を持つ OleDbParameter は、この OleDbParameterCollection に含まれていません。 SQLを調べたところ、抽出条件を"シメイ LIKE '?*'"としたのですが、同上のエラーが発生してしまいました。 [ メッセージ編集済み 編集者: NAOKO 編集日時 2004-01-04 17:51 ] | ||||||||||||
|
投稿日時: 2004-01-04 18:47
こんにちわ。諸農です。
エラーの内容は調べられましたか? エラーの意味はわかりますか? エラー文を単純に解読すると、「'シメイ'」というパラメータが 「OleDbParameterCollection」に「存在していない」と言うことだと思いますが。 ご自分で書かれている、
このコードの意味は、把握されていますか?
上記で発生しているエラーの内容だと、「SQLを調べる」というよりもSDKのドキュメントを良く見れば解決できそうですよね。 「OleDbDataAdapter.SelectCommand プロパティ [C#]」 ms-help://MS.NETFrameworkSDKv1.1.JA/cpref/html/frlrfSystemDataOleDbOleDbDataAdapterClassSelectCommandTopic.htm に掲載されている「使用例」のコードをよく見てみることをお薦めします。 デバッグについて、過去ログには色々なコメントがアップされていますが、 「日経ソフトウェア」の縮刷版や、「dot NETマガジン」のバックナンバー(最近では バックナンバーのPDFが収録されたCDが付録されています)など、コンピュータプ ログラミングの基本部分を解説した雑誌などを参考にするのもいいかもしれません。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2004-01-04 19:44
ご指摘ありがとうございます。
ヘルプの方を参照してみます。 もしでき次第、御報告させていただきます。 | ||||||||||||
|
投稿日時: 2004-01-05 09:34
最初に全部一括してDataTableに持ってきておいて、
とか。 また、OleDbということですが、ターゲットのDBMSは何でしょう?'*'をワイルドカードとして使用しようとしているということは、Microsoft系? 「kasira」が頭文字を入れたドロップダウンリストだと思いますが、kasira.Items.ToString()としたら、どんな値がでるか、ご存じですか?少なくとも、「ア」とか「カ」とかではない値が返ってきますよ。 ん?ドロップダウンリスト?Webアプリケーションですか? | ||||||||||||
|
投稿日時: 2004-01-05 16:43
ご返信ありがとうございます。
ドロップダウンではなく、コンボボックスです・・・。すいません。 DBMSは御察しの通り、ACCESSです。 kasira.Items.ToString()→kasira.SelectedItem.toString()ですね・・・。 シメイ LIKE '{0}*の{0}というのは1文字目ということでしょうか? | ||||||||||||
|
投稿日時: 2004-01-05 17:14
Windowsアプリケーション、C#、Accessを使用して、コンボボックスで頭文字('ア'や'カ'など)を指定して、前方一致するデータを取得する方法、ですね。
OleDbParameterを使うには、
とします。OleDbCommandを、検索ごとに作り直すならこれでOk。1度だけ作り、パラメータ値を入れ替えて使うなら、適切な場所でダミー値空文字列でパラメータを作っておき、
とします。「2004-01-04 17:50」分のエラーメッセージは、この『ダミー値を入れてパラメータを作っておく』ことをしなかったためのものです。すでに定義してあるかどうかわからない場合は、Containsで確認することができます。
>> シメイ LIKE '{0}*の{0}というのは1文字目ということでしょうか? これはString.Format(format string, argument array)で、「0番目の引数の値を入れる」です。詳しくはMSDNのトピック「書式設定の概要」と、そこで参照としてあげられているトピックを参照してください。 |