新しく質問する

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

役に立った:0件
  • 質問者:noname#33277
  • 投稿日時:2007/03/15 23:57
  • 困り度:困ってます
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

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

dim Vcode as string
Vcode = "101"
Rst.FindFirst "名称コード" & "=" & Vcode

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.4ベストアンサー20pt

  • 回答者:Gin_F
  • 回答日時:2007/03/16 23:47

FindFirst や、フォームの Filter プロパティで設定する場合は、SQL文のWHERE句の
内容を設定する必要があります。

フィールド名がテキスト型の場合は、

SELECT * FROM テーブル名 WHERE フィールド名 = "xxx"

のようになります。
で、FindFirst メソッドなんかで使う場合は、

rst.FindFirst フィールド名 = "xxx"

としたいところですが、条件の部分は文字列にしないといけません。
で、

rst.FindFirst "フィールド名 = "xxx""

こうすると、

フィールド名 =

で、切れてしまいます。
そこで、

rst.FindFirst "フィールド名 = 'xxx'"

このようにすればOKです。
次のステップとして、xxx の部分を変数を使ってやりたい場合。
単純に変数名に置き換えると、

rst.FindFirst "フィールド名 = '変数名'"

ですが、変数を、"" の中に記述すると、文字列として扱われますので、"" の外に
出してやる必要があります。
その場合、文字列と変数をつなぐためには、& を使います。

rst.FindFirst "フィールド名 = '" & 変数名 & "'"

で、このようになります。

通報する

この回答へのお礼

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

  • 参考になった:0件

No.3ベストアンサー10pt

  • 回答者:onlyrom
  • 回答日時:2007/03/16 12:07

こんにちは。

>シングルクオーテーションがあるとどうなるのでしょうか。
この答えは、
>タイトルのコードでは問題ないのですが、 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 & "'"

以上です。
 

通報する

この回答へのお礼

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

  • 参考になった:0件
  • 回答者:sugao_chib
  • 回答日時:2007/03/16 09:30

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

通報する

この回答への補足

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

  • 参考になった:0件
  • 回答者:Gin_F
  • 回答日時:2007/03/16 00:15

せめて、環境面のことなども記載しましょう。

> Rst.FindFirst "名称コード" & "=" & Vcode

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

対象フィールドが、テキスト型の場合、必要になります。
ちなみに、日付/時刻型であれば、# を使います。

通報する

この回答へのお礼

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

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter