解決300pt MySQL+ADO+ODBC+ASP(VBScript)で、

Microsoft VBScript 実行時エラー エラー '800a000d'
型が一致しません。
というエラー発生します。
上手く参照できないフィールドがあるようです。
ODBC接続に問題があるかと思うのですが、
解決方法を教えていただけますか?

※詳細情報はコメントに書きます。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2007/06/06 15:41:17
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答0件)

回答はまだありません

  • id:llusall
    SQL
    SELECT *, DATE_FORMAT(date,'%Y%m%d') AS Hizuke,
    CONVERT(DATE_FORMAT(date,'%Y%m%d'),CHAR) AS Hizuke2,
    date As Dt
    FROM hogetable;

    テーブル
    CREATE TABLE `hogetable` (
    `id` int(11) NOT NULL default '0',
    `test1` varchar(10) character set sjis collate sjis_bin default NULL,
    `test2` varchar(10) default NULL,
    `date` datetime default NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=sjis;

    'データ
    id test1 test2 date
    1 test1 test2 2007/05/30

    '接続文字列
    "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;PORT=3306;DATABASE=<DBNAME>; USER=<USR>;PASSWORD=<PWD>;OPTION=2;STMT=set names sjis;"
    ※OPTIONは、2,3,16834,16387を試行しましたがダメ。

    'ソース
    Response.Write(CStr(rs("id").value) & "<br>")
    Response.Write(CStr(rs("test1").value) & "<br>") '文字化け
    Response.Write(CStr(rs("test2").value) & "<br>") 'OK
    Response.Write(CStr(rs("date").value) & "<br>")
    Response.Write(CStr(rs("Hizuke1").value) & "<br>")
    Response.Write(CStr(rs("Hizuke2").value) & "<br>") '文字化け
    ※上記は、CStrでキャストしている為、「文字化け」して表示されるが、
     CStrを付けないと「型が一致しません。」でエラーになる。

    '環境
    レンタルサーバ
    Win2003(たぶん)
    MySQL 4.1.21
    MySQL ODBC 3.51 Driver

    'その他
    ・DATE_FORMAT関数を使用した場合、キャストしないとダメ。
    ・「character set sjis collate sjis_bin 」のフィールド取得がダメ。
    ・ほぼ同じ環境(バージョン)の私のマシン(xp,2k)では正常に動作する。
    ・このMySQLを私の正常動作マシンから参照させると正常に動作する。
  • id:taknt
    CONVERTって 文字コードを 変えるだけだから
    それを そのまま 文字列にしようとすると エラーになる。

    たとえば シフトJISを UTF8にしたいときなどに 用いる。

    文字列には なっていないから 型が一致していないという エラーが出たんだと 推測します。

    CASTを 用いたら いいのかなぁ?
  • id:llusall
    taknt さん、こんにちは。
    CONVERT関数で、「CHAR型」に【型変換】すると、フィールド値を上手くとれるんです。(しないと上手くとれない)

    このような操作は不要と思うのですよね。
    ソースは間違いないと思っていますし、できることなら改修したくないです。あっちもこっちもあるので、CONVERT関数なども付加したくないです。「character set sjis collate sjis_bin 」のフィールド取得もできなくて困っています。

    同じような、いくつかの環境でOKで、この環境でダメというのが理解できません。
    何か設定がおかしいか、ODBCドライバの不具合としか思えません。

    誰か、たすけてぇ~!
    もっとポイントをあげたいのですが、あまり手持ちが無くて・・・
  • id:llusall
    「character set sjis collate sjis_bin 」のフィールドである、
    test1項目も、
    CONVERT(test1,CHAR) AS test1X
    としてキャストすることにより、正常にとれました。

    レコードセットのフィールド値の型がおかしくなっている模様。
  • id:llusall
    どこのどなたか存知ませんが、のっかり有難うございました。ちょっとグッときてしまいました。(T_T)
    解決600ptで再質問させていただきます。
  • id:llusall
    http://q.hatena.ne.jp/1180520622
    こちらで再質問させていただきました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません