2011-12-27 4 views
0

私は、PCOMターミナルエミュレータから情報の束をコピーするAccess 97 VBAプログラムを持っています。 私はこのデータベースを私たちが持っているリモートSQLサーバと同期させたいと思っています。 MS Access 97を使用してこれを行った人物を見つけることができませんでしたので、自分のやり方で決めました。 リモート・データベースがこれは私が実行しようとしているコードでアクセス97 でconectedされています:MEMO Ms Jet DBデータ型をMySqlに変換する

Set qweMensagens = Mdb.OpenRecordset("SELECT * FROM AtualizarMensagens WHERE AtualizarMensagens.contrato_bb = '" & contratoVAR & "';") 
If qweMensagens.RecordCount > 0 Then GoTo MOVENEXTNOW3 
qweMensagens.AddNew 
qweMensagens!contrato_bb = qweCont!Contrato 
qweMensagens!mensagem = qweCont!mensagem 
qweMensagens!Data = data_padrao 
qweMensagens!Append = qweCont!Append 
qweMensagens!qweContratos = qweCont!qweContratos 
qweMensagens!men_data_evento = qweCont!men_data_evento 
qweMensagens!men_data_movimento = qweCont!men_data_movimento 
qweMensagens.Update 

問題は、この行で発生します: qweMensagens mensagem = qweCont 実行時エラー3163をmensagem - !フィールドのデータが大きすぎます。

MS AccessデータベースのqweCont!mensagemフィールドは、MEMO〜3000 Charです。 そして、すでにMySQL DBのqweMensagens!mensagemフィールドをLONGTEXTとLONGBLOBに変更しようとしました。

This全く助けませんでした。それでも同じエラーが発生します。

これはテキストタイプの問題である可能性がありますが、解決策hereはまったく役に立たなかったと思います。さらに、hereでも、私はLONG​​TEXTをMEMOタイプに使うべきだと言っていました。

ここに何か不足していますか? mysqlサーバに送信する前に、MEMOタイプのデータ変換をUTF-8またはANSIに強制することはできますか?

EDIT:

奇妙な、私はMEMOフィールドをコピーするとMySQL Workbenchを使用してテーブルの上に貼り付けた場合、それは正常に動作します...多分私は情報をコピーするための変数を設定する必要がありますか?

EDIT2:

これは機能しませんでした。それでも、この分野は多くの情報を扱うことができないと言われています。私はそれがアクセスがシートを処理する方法について何かだと思っています...多分、この情報をMySqlに追加する方法がありますか?

答えて

0

試してみてください!

Set cnn = New ADODB.Connection 
With cnn 
    .ConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=<SeuServidor>;Database=<nomeDoBanco>;User=<usuario>;Password=<senha>;Option=3;" 
    .CursorLocation = adUseClient 
    .Open 
End With 

While Not qweCont.EOF 
    ssql = vbNullString 
    ssql = ssql & "Insert into AtualizarMensagens Values ([contrato_bb],[Mensagem],[Data],[Append],[qweContratos],[men_data_evento],[men_data_movimento]) Values(" 
    ssql = ssql & "'" & qweCont!Contrato & "','" & qweCont!Mensagem & "','" & data_padrao & "','" & qweCont!Append & "','" & qweCont!qweContratos & "'," 
    ssql = ssql & "'" & qweCont!men_data_evento & "','" & qweCont!men_data_movimento & "'" 
    ssql = ssql & " where AtualizarMensagens.contrato_bb = '" & contratoVar & "'" 
    cnn.Execute ssql 
    qweCont.MoveNext 
Wend 
+0

コーリングエラー:ユーザー定義の種類が定義されていません。 'Set cnn = New ADODB.Connection'で停止します。私はアクセス97を使用しています。 –

+0

申し訳ありませんが、私はワンピースを忘れています – rogerio

0

私はMySQLのには専門家だが、あなたはちょうどあなたが新しい列に入れている文字の長さを制限する機能を使用することはできません。明らかに、列に収まる最大値である数値を使用します。

メモ列に長い値のレコードがあると、それらが切り捨てられ、データが失われてしまうという問題があります。

また、複数の列を作成し、最初の半分を1列に、後半を別の列に配置することもできます。

希望します。ありがとうございます。

+0

実際にあなたはちょうどいくつかのアイデアを出しました。できるだけ早く試してみよう。 –

関連する問題