みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESSとMySQLとの連携 TEXT型取得で質問です。

MySQLの勉強を今年から始めておりますがAccessとの連携で詰まっ
てしまいました。

今MySQLをDBにし、Access2003をUIにして、運用しようと考えてお
ります。

■症状
VBAにてMyODBCドライバに接続を行い、MySQL内のデータベースに接
続し、テーブルの情報を取得する際に、int型やVarchar型は正常に
ACCESS側にて取得できるのですが、TEXT型が取得できません。
(文字列0の""が返されます。)

■情報は以下の通りです。
・WindowsXP SP2 (パッチ最新)
・MicroSoftAccess2003 (パッチ最新)
・MySQL 5.0.45-community-nt MySQL Community Edition (GPL)
・MyODBC5.01.01.00
※MySQL環境、PHP、Apache環境はXAMPP1.6.4のものです。
・MySQL文字コードは「UTF-8」にて統一
・VBAでのMyODBC接続はADOにて接続(ソース抜粋後述)

■試したこと
・TEXT型フィールドの値をVARCHAR型に変更するとACCESS側で取得
 可能
・VBAで接続制御を行わず、テーブルリンクを行うと取得可能
・Accessからのデータ投入は問題ありませんでした。
 (TEXT型フィールドへの反映も問題ありません。)
・データ自体はPhpMyAdminやPHP5、コマンドラインからは正常に
 取得可能
・取得判別フラグ

■ソース抜粋(ACCESS2003側です。)
Private Sub cmdSubmit_Click()
Dim adoDb As New ADODB.Connection
Dim adoRS As ADODB.Recordset
DimstrSQL As String
Dim blnFlgAs Boolean
Dim blnFlg = False
adoDb.Open "Driver={MySQL ODBC 5.1 Driver};" & _
"server=localhost; database=***; uid=***; pwd=***;"
'adoDb.Open "dsn=***; uid=***; pwd=***;"
strSQL = "select * from kanagawa where post = '" & Me.txtPost & "';"
Set adoRS = adoDb.Execute(strSQL)
Do Until adoRS.EOF
MsgBox adoRS!pref
blnflg = True
Exit Do
Loop
If blnflg = False Then
MsgBox "該当レコードはありません。"
End If
adoRS.Close
adoDb.Close
Set adoRS = Nothing
Set adoDb = Nothing
End Sub
※「***」は実際にはIDとパスワード等を入れております。
※コメントアウトしてある接続構文も試しましたが結果は
 変わりませんでした。
※HappyHappyIsland様のサイトを参考にさせて頂きました。

■MYSQLデータベース情報
DATABSE:zipcode
TABLE :kanagawa
カラム
id int(7) not null PRIMARY
post varchar(8) not null INDEX
k_pref text
k_area text
k_addr text
pref text
area text
addr text

今回はテストしたので、TEXT型をVARCHARに変更できましたが、
実運用では、255文字では対応できないフィールドが存在します
ので、VARCHAR対応は出来ません。

有効策が見出せない場合は、将来的にPHP5でのUI構築を考えてお
りましたので、前倒しで構築も考慮しておりますが、何卒ご教示
宜しくお願い致します。

投稿日時 - 2008-01-15 10:26:12

QNo.3681552

すぐに回答ほしいです

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

MySQL ODBC 5.1はβ版です。

http://dev.mysql.com/downloads/connector/odbc/5.1.html

引用
This is a Beta release of the new ODBC connector and has some bugs and lacks some features - please do not use in a production environment.


質問のプログラムを、5.1で試してみた所、
同様の不具合が発生しました。

3.51を使えば正常でしたので、5.1のバグではないでしょうか?

MySQL ODBC 3.51を試してみて下さい。

---------------------------------------------------------
確認した環境は下記です。

ADO 2.7
MySQL 5.0.45
MySQL ODBC 5.01.01.00
MySQL ODBC 3.51.23.00

投稿日時 - 2008-01-15 19:44:39

お礼

ありがとうございます。
帰り際にもしやと思い、3.51を組み込んでみたら無事動作しました。
ベータリリースのところを思いっきり見逃していたみたいです。
3.51も懸念していたUTF8での文字化け関連も見られないので、このま
まいこうと思います。

ありがとうございました。

投稿日時 - 2008-01-15 20:32:03

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問