アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

Private Sub command1_Click ()

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

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

解決策,コメント等,お願いします。

A 回答 (3件)

Print.Debug Data1.Type


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

miya777様へ

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

ご迷惑をおかけしましたが,一応,「解決」をみました。
ありがとうございました。

お礼日時:2001/08/16 15:01

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


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

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

この回答への補足

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

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

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

以上,よろしくお願いします。

補足日時:2001/08/14 17:51
    • good
    • 0

Data1は、RecordSetオブジェクトですか?


Data1のデータ定義はどうなっていますか?
OpenResordSetは記述しました?

この回答への補足

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

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

以上,よろしくお願いします。

補足日時:2001/08/14 15:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!