- 締切済み
テキストの通りにやってるのに、エラー発生。
VB5.0 のテキストを使って、VB6.0 でプログラミングしています。 テキスト内のサンプルプログラムを組んでいるのですが、検索がうまくいきません。 prompt$ = "******" SearchStr$ = InputBox(prompt$, "Search") 1 datBiblio.Recordset.Index = "Title" 2 datBiblio.Recordset.Seek "=", SearchStr$ If datBiblio.Recordset.NoMatch Then datBiblio.Recordset.MoveFirst End If とコードが書かれています。 1 の "Title" を Title とすると、とりあえずそのエラーはクリアできるのですが、 2 で「カレントインデックスを指定してください。」とエラーになります。 何が間違っているのかイマイチ分かりません。 補足はいたしますので、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
テキストでサンプルに使用しているMDBファイルはVBに付属してくるサンプル用MDBだと思います。 VB5.0に付属するMDBとVB6.0に付属するMDBは別物じゃないですかねぇ、普通に考えて。 「="Title"」だとその行でエラーが出るっていうのは、「="Title"」だと、サンプルMDBの中に「Title」という名前のIndexが存在していないとダメなんです。 「=Title」でエラーが回避できるようですが、これはIndexに対してTitleという名前の変数の値を入れてるからですね。 おそらくTitleなんて変数は使ってないでしょうから変数の中身は空っぽです。 なので「=""」ってしてるのと同じ。 「Seek」の行でエラーになるのは、Indesに指定した名前が存在しないからでしょうね。 -------------------- 以下蛇足です。 「"Title"」と「Title」は大違いです。 「"Title"」は「Title」という文字を表します。 「Title」は「Title」という名前の変数を表します。変数の中身はその時の状況で変化します。 コードを見る限り「変数の宣言を強制する」のオプションを使っていないようです。 この場合、初めて登場してきた「VBが知らない意味不明な文字」はすべて変数だと認識され、その行を実行する直前にメモリ上に変数が作成されます。 当然中身は空っぽの初期値です。 現在のモジュールの先頭行に「Option Explicit」とだけ書いて実行すると新しいエラー体験ができることでしょう。 ヒントは[ツール]-[オプション]-[変数の宣言を強制する]です。 --------------------
お礼
先輩に聞いたところ、解決しました。 ありがとうございました。
補足
回答、ありがとうございます。 >VB5.0に付属するMDBとVB6.0に付属するMDBは別物じゃないですかねぇ、 もちろん分かっています。MDBは自分で別に作り直しています。 テーブルの内容も同じように作りました。 >サンプルMDBの中に「Title」という名前のIndexが存在していないとダメなんです。 これも分かりますし、Titleもちゃんとあります。 >「Seek」の行でエラーになるのは、Indesに指定した名前が存在しないからでしょうね。 存在するんですよ。これは何度も確認したので間違いありません。 >コードを見る限り「変数の宣言を強制する」のオプションを使っていないようです。 今のところ、使わないという設定でしています。 他に何かあれば、教えていただきたいのですが。 よろしくお願いします。