MySQL+ADO+ODBC+ASP(VBScript)で、 Microsoft VBScript 実行時エラー エラー '800a000d' 型が一致しません。 というエラー発生します。 上手く参照できないフィールドがあるようです。 ODBC接続に問題があるかと思うのですが、 解決方法を教えていただけますか? ※詳細情報はコメントに書きます。 ※良い回答が複数の場合はシェアになります。(^^;)
ログインして回答する
linuxをつかう。
http://tryasp.winscom.co.jp/faq.asp
こちらにそれ系のエラーについてのQ&Aがありましたので参考にしてみてください。
これ以上回答リクエストを送信することはできません。制限について
コメント(4件)
SELECT *, DATE_FORMAT(date,'%Y%m%d') AS Hizuke1,
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関数を使用した場合のフィールド取得がダメ。
・CONVERT(DATE_FORMAT(date,'%Y%m%d'),CHAR) AS Hizuke2 とキャストするとOK。
・「character set sjis collate sjis_bin 」のフィールド取得がダメ。
・CONVERT(test1,CHAR) AS test1X とキャストするとOK。
・ほぼ同じ環境(バージョン)の私のマシン(xp,2k)では正常に動作する。
・このMySQLを私の正常動作マシンから参照させると正常に動作する。
・レコードセットのフィールド値の型がおかしくなっている模様。
・rs("test1").valueとrs("Hizuke2").valueは、バイト型の配列になっている模様。
・とりあえずは、SQL中でキャストすれば回避できそうだが、ソースの改修は厳しい。
ODBCドライバ、もしくはADOの不具合でしょうか。ODBC接続文字列の不正?
誠に勝手ながら、
回答者1様
回答者2様
のオープンは見合わせたいと思います。
問題
特定のフィールドがバイト型の配列で取得されてしまう
回避策(ごまかし方)
1.SQLで対応
CONVERT関数でキャストする
CONVERT(<フィールド>,CHAR)
2.VBScriptで対応
StrConv関数で変換する
StrConv(rs(<フィールド>).value, vbUnicode)
なお、VBScriptにはStrConv関数はないので、
まっつんさんの
http://www.ac.cyberhome.ne.jp/~mattn/AcrobatASP/
を利用させていただきました。
※ソースの改修は厳しいです。
設定などの見直しで回避したいです。