- ベストアンサー
VarChar型をINT型に変換するには
SQL文の抽出条件にフォームのオプション値をいれているのですがエラーがでます「VarChar型をINT型に変換できません」 なぜでしょう。 = CONVERT (int, 'Forms ! MainCommunication_F ! Frm_1')でグリッドに設定しています。
- みんなの回答 (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)
フォームのMainCommunicationにあるFrm_1のオブジェクトには何が書かれているのでしょう。 Verchar型の文字列が書かれているのでしょうか。 アクセスならば =Cint(Forms![MainCommunication_F]![Frm_1]) で強制的に数値型に変更できますが、オブジェクトの内容によってはエラーになります。 数値以外の文字列が入っている場合は変換できません。
- tak2003
- ベストアンサー率32% (174/540)
SQLSERVERじゃないですよね。アクセスでしょうか? ここで間違っているところはForms!MainComminication_F!Frm_1がリテラルで囲まれていて文字列として認識されているところです。 Forms![MainComminication_F]![Frm_1]としたらフォームの値を取ってくると思いますよ。
お礼
ありがとうございます。 参考にさせていただきます。
補足
Forms![MainComminication_F]![Frm_1]のように記入すると「式にデータ型エラーがあります」とエラーがでてクエリーを保存できません
補足
ありがとうございます。 書かれてくるのはトグルボタンのオプション値です。 ディフォルトは数字の1です。 あと、ACCESSのADP(プロジェクト)です。 ADPもACCESSもフォームの取り扱いは同じですか?