Microsoft VBScript 実行時エラー エラー '800a000d' 型が一致しません。 というエラー発生します。 上手く参照できないフィールドがあるようです。 ODBC接続に問題があるかと思うのですが、 解決方法を教えていただけますか? ※詳細情報はコメントに書きます。
ログインして回答する
回答はまだありません
これ以上回答リクエストを送信することはできません。制限について
コメント(6件)
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を私の正常動作マシンから参照させると正常に動作する。
それを そのまま 文字列にしようとすると エラーになる。
たとえば シフトJISを UTF8にしたいときなどに 用いる。
文字列には なっていないから 型が一致していないという エラーが出たんだと 推測します。
CASTを 用いたら いいのかなぁ?
CONVERT関数で、「CHAR型」に【型変換】すると、フィールド値を上手くとれるんです。(しないと上手くとれない)
このような操作は不要と思うのですよね。
ソースは間違いないと思っていますし、できることなら改修したくないです。あっちもこっちもあるので、CONVERT関数なども付加したくないです。「character set sjis collate sjis_bin 」のフィールド取得もできなくて困っています。
同じような、いくつかの環境でOKで、この環境でダメというのが理解できません。
何か設定がおかしいか、ODBCドライバの不具合としか思えません。
誰か、たすけてぇ~!
もっとポイントをあげたいのですが、あまり手持ちが無くて・・・
test1項目も、
CONVERT(test1,CHAR) AS test1X
としてキャストすることにより、正常にとれました。
レコードセットのフィールド値の型がおかしくなっている模様。
解決600ptで再質問させていただきます。
こちらで再質問させていただきました。