Re: [firebase-br] OFF: Migração de Banco
Paulo Henrique Mendes Martin
paulo.mendes87 em gmail.com
Qua Jul 5 08:44:13 -03 2006
Obrigado por terem me ajudado. Eduardo quanto ao Script de Migração eu já
fiz tanto que não sei se vem ao caso colocá-lo aqui, mas eu vou colocar
Public Access As DAO.Database
Public WS As DAO.Workspace
Public AccessRS As DAO.Recordset
Public Cn As New ADODB.Connection
Public Rs As New ADODB.Recordset
Public Reg As Integer
Public P As Integer
Public Sub Abre_Bco_Access() 'aqui abrimos o banco de dados do Access
Set WS = DBEngine.Workspaces(0)
Set Access = WS.OpenDatabase("D:\Projetos\Database
Firebird\CADSOCIO\CADSOCIO.mdb", False, False)
Exit Sub
End Sub
Public Sub Abre_Bco_Firebird() ' Abrindo agora o banco de dados do Firebird
Cn.ConnectionString = "DRIVER=Firebird/InterBase(r)
driver;UID=SYSDBA;PWD=masterkey;DBNAME=D:\Projetos\Database
Firebird\CADSOCIO\CADSOCIO.FDB"
Cn.Open
End Sub
Public Sub Adiciona_Firebird()
Dim SqlA As String
Dim SqlF As String
Dim cont As Integer
SqlA = "SELECT * FROM sócios" 'Aqui é o SQL da tabela do Access
Set AccessRS = Access.OpenRecordset(SqlA) ' Setamos o recorset para a tabela
do access com a devida consulta
AccessRS.MoveFirst 'movendo para o primeiro registro antes de começar o Loop
f = Array("REGSOC", "NOMSOC", "CODCAT", "CODSIT", "DTLIM", "DTNASC", "SEXO",
"CODCIV", "DTADM", "DTDEM", "TIPO", "RUA", "NUM", "COMPL", "BAIRRO", "CID",
"EST", "CEP", "FONE", "FONE2", "FONE3", "EXAME", "OBSERVACOES",
"TRANSFERENCIA", "CONTROVIA", "PROVISORIO", "ICARD", "CARNE", "VOTO",
"CONVITE", "CONVITE2", "CX", "CX2", "CT", "email", "PROMO", "CPF", "E",
"RG", "ESCOLARIDADE")
Do Until AccessRS.EOF
x = Array(AccessRS("REGSOC"), AccessRS("NOMSOC"), AccessRS("CODCAT"),
AccessRS("CODSIT"), AccessRS("DTLIM"), AccessRS("DTNASC"), AccessRS("SEXO"),
AccessRS("CODCIV"), AccessRS("DTADM"), AccessRS("DTDEM"), AccessRS("TIPO"),
AccessRS("RUA"), AccessRS("NUM"), AccessRS("COMPL"), AccessRS("BAIRRO"),
AccessRS("CID"), AccessRS("EST"), AccessRS("CEP"), AccessRS("FONE"),
AccessRS("FONE2"), AccessRS("FONE3"), AccessRS("EXAME"),
AccessRS("OBSERVAÇÕES"), AccessRS("TRANSFERÊNCIA"), AccessRS("CONTROVIA"),
AccessRS("PROVISORIO"), AccessRS("ICARD"), AccessRS("CARNÊ"),
AccessRS("VOTO"), AccessRS("CONVITE"), AccessRS("CONVITE2"), AccessRS("CX"),
AccessRS("CX2"), AccessRS("CT"), AccessRS("email"), AccessRS("PROMO"),
AccessRS("CPF"), AccessRS("E"), AccessRS("RG"), AccessRS("ESCOLARIDADE"))
For cont = 0 To 0
Cn.BeginTrans
SqlF = "Insert Into SOCIOS (" & f(cont) & ") values" & "('" &
x(cont) & "')" & ""
Cn.Execute (SqlF)
For cont2 = 1 To 38
If IsNull(x(cont2)) = True Then
GoTo proximo
End If
' If cont2 = 25 Then x(cont2) = 0
If cont2 = 4 Or cont2 = 5 Or cont2 = 8 Or cont2 = 9 Or cont2 =
21 Or cont2 = 37 Then
If IsNull(x(cont2)) = True Or x(cont2) = "" Then
GoTo proximo
Else
x(cont2) = Left(x(cont2), 2) & "." & Mid(x(cont2), 4, 2)
& "." & Right(x(cont2), 4)
End If
SqlF = "Update SOCIOS Set socios." & f(cont2) & "=" & "(' "
& x(cont2) & "')" & ""
Else
SqlF = "Update SOCIOS Set socios." & f(cont2) & "=" & "('" &
x(cont2) & "')" & ""
End If
Cn.Execute (SqlF)
proximo:
Next
Cn.CommitTrans
Next
Me.pb_main.Value = P + 1
Reg = Reg + 1
Me.Label1.Caption = Reg
AccessRS.MoveNext
Loop
Cn.Close 'Fechando o Banco de Dados do Firebird
End Sub
Private Sub Command1_Click()
P = 1
Reg = 1
Call Abre_Bco_Access
Call Abre_Bco_Firebird
Call Adiciona_Firebird
MsgBox ("Banco Exportado Com sucesso"), vbInformation, "AVISO"
End Sub
-----------------------
Certo, mas como falei quando ele chegava no campo tipo Blob ele dava uma
mensagem de erro (erro do Firebird) dizendo que o tipo String colocado na
variável do vetor X era incompatível com o campo Blob para o qual eu ia
migrar.
Agradeço ao Cantu pois eu consegui migrar PARTE dos dados com aquele
software mas as tabelas que tem campos MEMO no access dão uma mensagem de
erro assim quando vou abrir no Firebird (utilizo o IBExpert para fazer tal
acesso)
can't format message 13:198 - message file c:\HK-Software\firebird.msg
not found.
Atithimetic exception, numeric overflow, or string truncation.
Cannot transliterate character detween character sets
Gostaria de saber se alguém por favor poderia dizer, será problema com o
banco de dados em Access... Diga-se de passagem que estou trabalhando nesta
empresa a pouco tempo e não fui eu que montei a estrutura desse banco, que
na minha opinião está bem mal projetado (digo o banco em si).
Mais alguma informação é só pedirem... eu ainda sou Newbie em Firebird,
estou aprendendo com o tempo e com os erros e acertos.
Mais detalhes sobre a lista de discussão lista