OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

テキストファイル形式データのレコード検索

  • 困ってます
  • 質問No.118539
  • 閲覧数177
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 64% (22/34)

Visual Basic初心者の質問です。
お分かりになった方,ご教示をお願いします。

VB6を用いたプログラミング環境でデータコントロールを用いてテキストファイル形式(CSVフォーマット)のデータベースファイルを読み込ませました。フィールドに見合ったテキストボックスを作成し,データコントロールと連結させたところ,フィールドデータを上手く表示できました(つまり,ここまでは問題なし)。

そこで,検索用のボタンを作成し,そのボタンがクリックされた時,Input boxを表示させて「検索したい文字列」を入力させ,検索結果をテキストボックスに表示させたいので,FindFirst methodを用いて次のようなコードを書きましたが,上手く動作しません。エラーメッセージは「このオブジェクトに対して,この操作は実行できません」でした。

Private Sub command1_Click ()

Data1.Recordset.MoveFirst
Data1.Recordset.FindFirst "検索Field名='取得した文字列の変数'""

FindFirst以下のcriteriaの記述の仕方に問題があるのでは,と思っていますが,現時点では問題の解決を見ていません。

解決策,コメント等,お願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル10

ベストアンサー率 31% (44/140)

Data1は、RecordSetオブジェクトですか? Data1のデータ定義はどうなっていますか? OpenResordSetは記述しました? ...続きを読む
Data1は、RecordSetオブジェクトですか?
Data1のデータ定義はどうなっていますか?
OpenResordSetは記述しました?
補足コメント
cholerae

お礼率 64% (22/34)

Data1はRecordSet Objectで間違いないと思います。
なぜなら,つぎのようなmethodは問題なく実行されます。
Data1.RecordSet.MoveLast

Data1のデータ定義に関わる部分(property window中)は次のように設定してあります。
connectはTxt;
Default typeは2-Jet
RecordSourceはファイル名#txt
です。
OpenRecordSetは特別に記述していません。

以上,よろしくお願いします。
投稿日時 - 2001-08-14 15:40:12
  • 回答No.2
レベル10

ベストアンサー率 31% (44/140)

Data1.Recordset.FindFirst "検索Field名='取得した文字列の変数'"" となっていますが最後の「""」は間違いですか? ""と記述すると「"」1文字の文字として判断してしまいます。 Data1.Recordset.FindFirst "検索Field名= ...続きを読む
Data1.Recordset.FindFirst "検索Field名='取得した文字列の変数'""
となっていますが最後の「""」は間違いですか?
""と記述すると「"」1文字の文字として判断してしまいます。
Data1.Recordset.FindFirst "検索Field名='取得した文字列の変数'"
であっていますか?

また、変数を使うなら、
Data1.Recordset.FindFirst "検索Field名='" & 取得した文字列の変数 & "'"
とすればOKかもしれません。
補足コメント
cholerae

お礼率 64% (22/34)

miya_777さん,コメントありがとうございます。

ご指摘の文字列変数の後の「""」は私のタイプミスです。
それと,解決策として提案頂いた内容ですが,すでに確認済みで「うまくいきません」でした。

私の「勘」で申し訳ありませんが,検索Field名のところが「おかしい」ように思います。
これまでのtrialでは,テキストファイルに示したフィールド名をそのままcriteriaの部分に記していますが,Data1.DataSourceのproperty windowでは,File名#txtを選んでいて(この記述はVBで「自動的に」出てきました),ここに個々のfield名は出てきません。アクセスデータファイルだと普通こんな形では出ないように思います。

以上,よろしくお願いします。
投稿日時 - 2001-08-14 17:51:10
  • 回答No.3
レベル10

ベストアンサー率 31% (44/140)

Print.Debug Data1.Type Print.Debug dbOpenTable をData1.Recordset.MoveFirst の直前に入れたら、デバッグウィンドウにいくつが表示されますか? 両方とも「1」が表示された場合、FindFirstは使用できません。 テーブルのタイプによって、使用可能なメソッドとプロパティがあります。 詳しくはVBのヘルプで「Recordsetオブ ...続きを読む
Print.Debug Data1.Type
Print.Debug dbOpenTable
をData1.Recordset.MoveFirst の直前に入れたら、デバッグウィンドウにいくつが表示されますか?
両方とも「1」が表示された場合、FindFirstは使用できません。
テーブルのタイプによって、使用可能なメソッドとプロパティがあります。
詳しくはVBのヘルプで「Recordsetオブジェクト Recordsetsコレクション」
を表示して、「プロパティ」や「メソッド」を見ていただくと、各タイプに合わせて使用可否が表示されると思いますので、そちらで使用可・不可を確認してください。
お礼コメント
cholerae

お礼率 64% (22/34)

miya777様へ

ご指摘の方法で検討してみました。
結果は「1」の表示でした。
そこで,Visual Basicのオンラインヘルプを精査しましたがFindFirst以外のMethodはありませんでした。
従って,もう一度基本に立ち返って,Active Controlのproperty windowの個々の設定の意味をチェックしました。
その結果,Recordsource TypeをDynaset(or Snapshot)にすることでFindFirstが使えることが分かりました。
それまで,ここの部分はTableになっていました。

ご迷惑をおかけしましたが,一応,「解決」をみました。
ありがとうございました。
投稿日時 - 2001-08-16 15:01:44
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ