• ベストアンサー

Rst.FindFirst "名称コード" & "=" & "'101'"

タイトルのコードでは問題ないのですが、 101 を文字変数にすると「抽出条件でデータ型が一致していません」のエラーになります。この場合シングルクオーテーションはどういう意味なのでしょうか。 どうすれば良いのでしょうか。 dim Vcode as string Vcode = "101" Rst.FindFirst "名称コード" & "=" & Vcode

質問者が選んだベストアンサー

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.4

FindFirst や、フォームの Filter プロパティで設定する場合は、SQL文のWHERE句の 内容を設定する必要があります。 フィールド名がテキスト型の場合は、 SELECT * FROM テーブル名 WHERE フィールド名 = "xxx" のようになります。 で、FindFirst メソッドなんかで使う場合は、 rst.FindFirst フィールド名 = "xxx" としたいところですが、条件の部分は文字列にしないといけません。 で、 rst.FindFirst "フィールド名 = "xxx"" こうすると、 フィールド名 = で、切れてしまいます。 そこで、 rst.FindFirst "フィールド名 = 'xxx'" このようにすればOKです。 次のステップとして、xxx の部分を変数を使ってやりたい場合。 単純に変数名に置き換えると、 rst.FindFirst "フィールド名 = '変数名'" ですが、変数を、"" の中に記述すると、文字列として扱われますので、"" の外に 出してやる必要があります。 その場合、文字列と変数をつなぐためには、& を使います。 rst.FindFirst "フィールド名 = '" & 変数名 & "'" で、このようになります。

noname#33277
質問者

お礼

度々すみませんでした。 前のNo.3さんの回答と今の回答で良くわかりました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

こんにちは。 >シングルクオーテーションがあるとどうなるのでしょうか。 この答えは、 >タイトルのコードでは問題ないのですが、 101 を文字変数にすると とご自分で書いてますよね。 (1)Rst.FindFirst "名称コード = " & "'101'" (2)Vcode = "101"    Rst.FindFirst "名称コード = " & Vcode 変数を ’(シングル)で囲まなければ、数値の比較とみなされます。 これを踏まえて、(1)(2)を比べてみると (1)では、'101'となってますから、文字列比較 (2)は、Vcodeの型は文字列になってますが、 ’(シングル)がありませんので Vcodeをそのまま使うと、101 の数値を比較してることになりエラーが出るのです。 で、Vcodeには'(シングル)も含めて、"'101'" と入れるとOKですが、 Vcodeはもとも文字型ですからふつうに、Vcode="101" と代入した後、 findFirstメソッドを使用する時に、'(シングル)を付けるのが一般的です。 (2)Vcode = "101"    Rst.FindFirst "名称コード = '" & Vcode & "'" 以上です。  

noname#33277
質問者

お礼

回答ありがとうございました。

すると、全ての回答が全文表示されます。
回答No.2

質問者の意図にそってコードを修正すると Vcode = "101" → Vcode = "'101'" となります。 これで理解できたでしょうか。

noname#33277
質問者

補足

>Vcode = "101" → Vcode = "'101'" すみません。上の2つの違いがわかりません。 "101"は101が数字でなく文字だという意味までわかるのですが。 タイトルのコードは本の丸写しです。意味が分からないものですから応用が利きません。シングルクオーテーションがあるとどうなるのでしょうか。

すると、全ての回答が全文表示されます。
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

せめて、環境面のことなども記載しましょう。 > Rst.FindFirst "名称コード" & "=" & Vcode Rst.FindFirst "名称コード='" & Vcode & "'" 対象フィールドが、テキスト型の場合、必要になります。 ちなみに、日付/時刻型であれば、# を使います。

noname#33277
質問者

お礼

早速ありがとうございました。VB6,WindowsXPです。 理解できないまま貼り付けて問題なく動きました。不思議な感じです。

すると、全ての回答が全文表示されます。

関連するQ&A