【问题标题】:Converting MEMO Ms Jet DB Data type to MySql将 MEMO Ms Jet DB 数据类型转换为 MySql
【发布时间】:2012-01-28 14:04:42
【问题描述】:

我有一个 Access 97 VBA 程序,它可以从 PCOM 终端仿真器复制一堆信息。 我想将此数据库与我们拥有的远程 sql 服务器同步。 我找不到任何使用 MS Access 97 执行此操作的人,因此我决定按照我的方式进行操作。 远程数据库已与 Access 97 连接。 这是我要运行的代码:

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!mensagem 运行时错误 3163 - 数据对于字段来说太大。

MS Access DB 上的 qweCont!mensagem 字段是一个具有约 3000 个字符的 MEMO。 而且我已经尝试将 MySQL DB 上的 qweMensagens!mensagem 字段更改为 LONGTEXT 和 LONGBLOB。

This 根本没有帮助。它仍然给出同样的错误。

我意识到这可能是文本类型问题,但解决方案 here 根本没有帮助。甚至here 他们说我应该将 LONGTEXT 用于 MEMO 类型。

我在这里遗漏了什么吗?我可以在发送到mysql服务器之前强制将MEMO类型的数据转换为UTF-8或ANSI吗?

编辑:

奇怪,如果我复制 MEMO 字段并使用 MySql Workbench 将其粘贴到表格上,它工作正常...也许我应该设置一个变量来复制信息?

编辑2:

那没用。仍然说该领域无法处理那么多信息。我开始认为这与访问处理情况的方式有关……也许有办法将此信息附加到 MySql 中?

【问题讨论】:

    标签: mysql sql ms-access vba jet


    【解决方案1】:

    我不是 MySQL 方面的专家,但你能不能只使用 Left 函数来限制要放入新列的字符长度。显然使用的数字是适合该列的最大值。

    那么问题是,如果 memo 列中有任何值较长的记录,它们最终会被截断并且数据会丢失。

    您还可以创建多列并将第一半放在一列中,将第二半放在另一列中。

    希望这有帮助,谢谢马克

    【讨论】:

    • 其实你只是给出了一些想法。会尽快尝试的。
    【解决方案2】:

    试试吧!

    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
    

    【讨论】:

    • 编译错误:未定义用户定义的类型。它以“Set cnn = New ADODB.Connection”停止。我正在使用访问 97。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多