Visual Basic初心者の質問です。
お分かりになった方,ご教示をお願いします。
VB6を用いたプログラミング環境でデータコントロールを用いてテキストファイル形式(CSVフォーマット)のデータベースファイルを読み込ませました。フィールドに見合ったテキストボックスを作成し,データコントロールと連結させたところ,フィールドデータを上手く表示できました(つまり,ここまでは問題なし)。
そこで,検索用のボタンを作成し,そのボタンがクリックされた時,Input boxを表示させて「検索したい文字列」を入力させ,検索結果をテキストボックスに表示させたいので,FindFirst methodを用いて次のようなコードを書きましたが,上手く動作しません。エラーメッセージは「このオブジェクトに対して,この操作は実行できません」でした。
Private Sub command1_Click ()
Data1.Recordset.MoveFirst
Data1.Recordset.FindFirst "検索Field名='取得した文字列の変数'""
FindFirst以下のcriteriaの記述の仕方に問題があるのでは,と思っていますが,現時点では問題の解決を見ていません。
解決策,コメント等,お願いします。
No.3ベストアンサー
- 回答日時:
Print.Debug Data1.Type
Print.Debug dbOpenTable
をData1.Recordset.MoveFirst の直前に入れたら、デバッグウィンドウにいくつが表示されますか?
両方とも「1」が表示された場合、FindFirstは使用できません。
テーブルのタイプによって、使用可能なメソッドとプロパティがあります。
詳しくはVBのヘルプで「Recordsetオブジェクト Recordsetsコレクション」
を表示して、「プロパティ」や「メソッド」を見ていただくと、各タイプに合わせて使用可否が表示されると思いますので、そちらで使用可・不可を確認してください。
miya777様へ
ご指摘の方法で検討してみました。
結果は「1」の表示でした。
そこで,Visual Basicのオンラインヘルプを精査しましたがFindFirst以外のMethodはありませんでした。
従って,もう一度基本に立ち返って,Active Controlのproperty windowの個々の設定の意味をチェックしました。
その結果,Recordsource TypeをDynaset(or Snapshot)にすることでFindFirstが使えることが分かりました。
それまで,ここの部分はTableになっていました。
ご迷惑をおかけしましたが,一応,「解決」をみました。
ありがとうございました。
No.2
- 回答日時:
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名は出てきません。アクセスデータファイルだと普通こんな形では出ないように思います。
以上,よろしくお願いします。
No.1
- 回答日時:
Data1は、RecordSetオブジェクトですか?
Data1のデータ定義はどうなっていますか?
OpenResordSetは記述しました?
この回答への補足
Data1はRecordSet Objectで間違いないと思います。
なぜなら,つぎのようなmethodは問題なく実行されます。
Data1.RecordSet.MoveLast
Data1のデータ定義に関わる部分(property window中)は次のように設定してあります。
connectはTxt;
Default typeは2-Jet
RecordSourceはファイル名#txt
です。
OpenRecordSetは特別に記述していません。
以上,よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Visual Basic(VBA) excel vba でユーザーフォーム入力ができない 2 2022/12/12 14:42
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MFCでbitmapを背景にしてstatic...
-
DataGridViewで行の展開みたい...
-
リストコントロールのデータの...
-
テキストボックス(VBA)でEnter...
-
Excelのワークシートでのコンボ...
-
DataGridで左詰め、右...
-
エクセルの画像にツールチップ...
-
VB.NETで縦書表示をしたいので...
-
Wordテキストコントロールが未...
-
C# アプリ終了時に設定を記憶...
-
TreeViewでToolTipTextを表示し...
-
Enabled=Falseのテキストボック...
-
VBで、tableの列を動的に増やす...
-
VB2005 コードでのコントロー...
-
ADOのCursorLocationプロパティ
-
PictureBoxの背景色変更(VB.NET)
-
C# TEXTが空白であるLABELは何...
-
コンボボックスの高さを変更し...
-
ACCESS2010 ActiveXコントロー...
-
ユーザーフォームに日付を表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
ADOのCursorLocationプロパティ
-
Wordテキストコントロールが未...
-
エクセルの画像にツールチップ...
-
ACCESS2010 ActiveXコントロー...
-
ユーザーフォームに日付を表示...
-
コンボボックスの高さを変更し...
-
C# TEXTが空白であるLABELは何...
-
VB.NETで縦書表示をしたいので...
-
VBからエクセルのテキストボ...
-
エクセル入力規制リスト行数
-
DataGridViewで行の展開みたい...
-
チェックボックスの文字色の変え方
-
デザインモードを解除すると消...
-
VB6でLabelの最前面にText Box...
-
Enabled=Falseのテキストボック...
-
C# アプリ終了時に設定を記憶...
-
PictureBoxの背景色変更(VB.NET)
-
checkbox付きListViewで デフ...
-
VC++のエディットボックスの非表示
おすすめ情報