2011-12-27 1 views
0

PCOM 터미널 에뮬레이터에서 많은 정보를 복사하는 Access 97 VBA 프로그램이 있습니다. 이 데이터베이스를 원격 SQL 서버와 동기화하고 싶습니다. MS Access 97을 사용하여이 작업을 수행 한 사람을 찾을 수 없으므로 직접 수행하기로했습니다. !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 

문제점이 줄을 발생합니다 : 원격 데이터베이스 액세스 97 와 conected입니다되었습니다 이것은 내가 실행하는 데 노력하고있어 코드 qweMensagens mensagem = qweCont 런타임 오류 3163을 mensagem은 - 필드에 비해 너무 큰 데이터.

MS Access DB의 qweCont! mensagem 필드는 MEMO ~ 3000 Char입니다. 그리고 이미 MySQL DB의 qweMensagens! mensagem 필드를 LONGTEXT 및 LONGBLOB로 변경하려고했습니다.

This 전혀 도움이되지 않았습니다. 여전히 같은 오류가 발생합니다.

나는 텍스트 형식의 문제 일 수 있다고 설명했지만, here 솔루션은 전혀 도움이되지 못했습니다. 심지어 here 그들은 MEMO 유형에 LONGTEXT를 사용해야한다고 말했습니다.

여기에 뭔가가 있습니까? mysql 서버로 보내기 전에 MEMO 유형의 데이터 변환을 UTF-8 또는 ANSI로 강제 변환 할 수 있습니까?

편집 : 나는 메모 필드를 복사하고 잘 작동 MySQL의 워크 벤치를 사용하여 테이블에 붙여 넣을 경우

이상한 ... 어쩌면 내가 정보를 복사 할 수있는 변수를 설정해야합니까?

EDIT2 :

그건 작동하지 않았습니다. 그 분야는 많은 정보를 다룰 수 없다고 여전히 말합니다. 나는 이것이 접근이 sittuation을 다루는 방법에 대해 뭔가 있다고 생각하기 시작했다. 어쩌면이 정보를 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을에 전문가는 아니지만 그러나 당신은 당신이 새로운 컬럼으로 옮기고 문자의 길이를 제한 할 왼쪽 기능을 사용할 수 없습니다. 분명히 열에 들어갈 수있는 최대 값을 사용합니다.

메모 열에 더 긴 값을 가진 레코드가 있으면 결국 잘리고 결국 데이터가 손실됩니다.

또한 하나 이상의 열을 생성하고 첫 번째 열을 한 열에, 두 번째 열을 다른 열에 넣을 수 있습니다.

호프 도움이 되길 바랍니다.

+0

사실 방금 몇 가지 아이디어를 주었다. 최대한 빨리 시도해 보겠습니다. –

관련 문제