• ベストアンサー

VarChar型をINT型に変換するには

SQL文の抽出条件にフォームのオプション値をいれているのですがエラーがでます「VarChar型をINT型に変換できません」  なぜでしょう。 = CONVERT (int, 'Forms ! MainCommunication_F ! Frm_1')でグリッドに設定しています。

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

  • ベストアンサー
  • kikaida-
  • ベストアンサー率69% (37/53)
回答No.3

まずVBAとSQLの2つのプログラムコードがあることを理解してください。 Forms!・・・はVBAの記述、convertはSQLの記述ですよね。SQLのconvert関数の中にVBAの記述をしても理解できません。SQLにわたすとき、つまりSQL文の変数を作るときにそのへんを考慮します。 具体的には sql = "項目名 = " & forms("MainCommunication_F").controls("Frm_1") とすればいけるんじゃないでしょうか。

その他の回答 (2)

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.2

フォームのMainCommunicationにあるFrm_1のオブジェクトには何が書かれているのでしょう。 Verchar型の文字列が書かれているのでしょうか。 アクセスならば =Cint(Forms![MainCommunication_F]![Frm_1]) で強制的に数値型に変更できますが、オブジェクトの内容によってはエラーになります。 数値以外の文字列が入っている場合は変換できません。

akaricyan
質問者

補足

ありがとうございます。 書かれてくるのはトグルボタンのオプション値です。 ディフォルトは数字の1です。 あと、ACCESSのADP(プロジェクト)です。 ADPもACCESSもフォームの取り扱いは同じですか?

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.1

SQLSERVERじゃないですよね。アクセスでしょうか? ここで間違っているところはForms!MainComminication_F!Frm_1がリテラルで囲まれていて文字列として認識されているところです。 Forms![MainComminication_F]![Frm_1]としたらフォームの値を取ってくると思いますよ。

akaricyan
質問者

お礼

ありがとうございます。 参考にさせていただきます。

akaricyan
質問者

補足

Forms![MainComminication_F]![Frm_1]のように記入すると「式にデータ型エラーがあります」とエラーがでてクエリーを保存できません

関連するQ&A