Ir para conteúdo
Fórum Script Brasil
  • 0

Conexao banco de dados


Wagner Alves Lopes

Pergunta

Pessoal, é a primeira vez que utilizo este fórum, estou começando a trabalhar com VB6 e access, e gostaria de uma ajuda no problema abaixo:

Toda vez que vou importar dados de uma tabela access(tabelas.mdb) para outra tabela (cadfun.dbf) ele dá a mensagem que o

Microsoft.Jet.Oledb não encontrou o objeto, segue abaixo a parte do fonte que chama o bd.

Quando eu compilo o programa ele dá erro na linha em negrito.

--------------------------------------------------------------------------------------------------

Private Sub Form_Load()

Me.Width = 4800

Me.Height = 3600

Set cnnTabelas = New ADODB.Connection

Set rsAlocacoes = New ADODB.Recordset ' (BAcili)

'Set rsContratos = New ADODB.Recordset 'bacili

'ABRINDO O BANCO DE DADOS TABELAS.MDB

cnnTabelas.OpeProvider=Microsoft.Jet.Oledb.4.0;Data Source='" & dbTabelas.Name & "'"n "

Set rsfuncionarios = dbTabelas.OpenRecordset("select * from Funcionarios order by Codigo_Empresa asc, Codigo_Funcionario asc")

Set rsContratos = dbTabelas.OpenRecordset("Contratos")

rsContratos.index = "Contratos_Codigo"

dtpInicio.Value = Date - 30

dtpFinal.Value = Date

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

note q o seu codigo esta errado, você não abre a aspa para a string, alem do mais, o q é aquele "n" no final??

o codigo q você precisa deve ser mais o menos assim:

cnnTabelas.OpeProvider = "Microsoft.Jet.Oledb.4.0;Data Source='" & dbTabelas.Name & "'"

mas o q esta em dbTabelas.Name?? note q onde esta dbTabelas.Name, você tem q passar o nome do banco de dados .mdb (e, caso esteja em outro diretorio, o caminho tb). outra coisa, o q é o objeto cnnTabelas??

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --wagner_alg --

Prezado Kuroi, obrigado pela ajuda, acontece que o "n" no final não existe a linha do fonte, apareceu aí só porque eu deixei a linha em negrito

dbTabelas é uma variável que mostra o caminho do meu banco de dados(isto esta funcionando)

cnnTabelas é uma variável responsável em fazer a conexão com o banco de dados,

Tentei colocar o caminho do bd no lugar do dbTabelas porem o erro continua.

A mensagem de erro na hora da execução é essa:

"The Microsoft Jet Database engine could not find the object 'cadfun' . Make sure the object exists and that you spell its name and the path name

correctly"

Qualquer ajuda é bem vinda

Link para o comentário
Compartilhar em outros sites

  • 0
cnnTabelas é uma variável responsável em fazer a conexão com o banco de dados,

mas o nome da propriedade é opeProvider ou Provider?? se você estiver usando Provider (e o "ope" tiver aparecido ai por erro na hora de postar), então você esta no caminho certo. se você estiver realmente usando opeProvider, então você esta usando um ADODB.Connection diferente do q eu conheco.

mas o erro esta aqui em negrito:

cnnTabelas.OpeProvider = "Microsoft.Jet.Oledb.4.0;Data Source= '" & dbTabelas.Name & "'"

não é pra passar o nome da tabela e sim o CAMINHO E O NOME DO BANCO DE DADOS .MDB.

certo??

se você estiver com dificuldades em usar ADO, recomendo q você de uma olhada nesse tutorial aqui ó: http://www.macoratti.net/ado.htm

e tb nos demais tutoriais sobre o assunto nessa pagina aqui: http://www.macoratti.net/indvb.htm

veja se ajudou, qualquer coisa poste.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Wagner Alves lopes

Kuroi, obrigado pela dica, o que esta no fonte é Provider mesmo, acabei descobrindo o que era aquele erro, o programa estava referenciando uma tabela chamada CadFun que não existia no local indicado, bem coloquei a tabela lá e passei por este erro.

Na verdade estou dando manutençao em um programa feito por outra pessoa, por isto estou apanhando um pouco,

quando mando o programa fazer a importaçao de dados de mdb para dbf, ele lê os registros, e ao copiar da uma mensagem de erro

Run time erro 3421, Erro na conversão do tipo de dados, porem verifiquei nas tabelas e ambas estao com tipo data/hora.

Abaixo segue a parte do fonte que esta dando erro, se você ver algum erro que não estou enxergando, agradeço

While Not dtDBF.Recordset.EOF

rsDBF.AddNew

For i = 0 To 115

If IsNull(dtDBF.Recordset.Fields(i)) Then

rsDBF.Fields(i) = 0

Else

rsDBF.Fields(i) = dtDBF.Recordset.Fields(i) O ERRO ESTA NESTA LINHA

End If

''Debug.Print dtDBF.Recordset.Fields(i).Size & " - " & rsDBF.Fields(i).Name & " - " & i

Next

pbar.Value = dtDBF.Recordset.PercentPosition

lblprogresso.Caption = "Copiados: " & Format(dtDBF.Recordset.PercentPosition, "##0"" %")

rsDBF.Update '

''''''''''''''''''''dtDBF.Recordset.Delete 'deleta o arquivo que foi copiado

dtDBF.Recordset.MoveNext

lblprogresso.Refresh

Wend

Link para o comentário
Compartilhar em outros sites

  • 0

se ele esta como data, tente isso:

If rsDBF.Recordset.Fields(i).Type = adDate Then
    rsDBF.Fields(i) = CDate(dtDBF.Recordset.Fields(i))
Else
    rsDBF.Fields(i) = dtDBF.Recordset.Fields(i)
End If[/code] caso isso não funcione, volte ao codigo antigo. ai quando der de novo aquele erro, faca o seguinte, abra o Immediate Window (Ctrl + G). la digite:
[code]? rsDBF.Recordset.Fields(i).Type & "/" & dtDBF.Recordset.Fields(i).Value & " - " & dtDBF.Recordset.Fields(i).Type

e poste aqui o conteudo q ele retornar pra gente aqui saber o q esta acontecendo.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Wagner Alves lopes

Kuroi, acabei alterando o tipo de dados pelo access mesmo, eram vários campos que estavam com diferença de tipo,

simplesmente coloquei nas tabelas.mdb o mesmo tipo que estava na tabela .dbf

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Guest WAGNER ALVES LOPES

KUROI,

VEJA SE PODE ME AJUDAR, ESTOU CRIANDO UMA ROTINA PARA FAZER UM BACKUP DE UMA TABELA (CADFUN.DBF), E PARA ISTO CRIEI UM ARQUIVO CHAMADO TMPASPLAN.BAT EM C:, POREM QUANDO RODO O PROGRAMA ,O ARQUIVO TMPASPLAN É CRIADO MAS não FAZ A COPIA DO ARQUIVO QUE EU QUERO.

SOMENTE QUANDO EXECUTO ESTE ARQUIVO VIA MENU INCIAR/EXECUTAR É QUE ELE FUNCIONA.]

ABAIXO SEGUE A FUNCAO, POR FAVOR ME FALE O QUE ESTA ERRADO , ACHO QUE PODE SER O SHELL NÃO SEI

VALEU

Sub Cria_bk()

Dim tt As String

tt = Year(Date)

tt = tt & Month(Date)

tt = tt & Day(Date)

tt = tt & Mid(Time(), 1, 2) & Mid(Time(), 4, 2)

Open "c:\tmpAsplan2.bat" For Output As #1

Print #1, "cd\"

Print #1, "cd\"

Print #1, "cd\"

Print #1, "cd\"

Print #1, "c:"

Print #1, "cd backup"

Print #1, "copy \\alfa\asplan\asplan\aplc\folpag\CADFUN.dbf /Y"

Print #1, "ren cadfun.dbf " & tt & ".dbf"

Print #1, "cd\"

Print #1, "cd\"

Print #1, "del c:\tmpAsplan2.bat"

Close #1

' Shell "c:\tmpAsplan.bat", vbHide

Shell ("Command.com /c c:\tmpAsplan2.bat")

'Shell ("cmd c:\tmpAsplan.bat"), vbHide

'Shell (" c:\tmpAsplan2.bat"), vbHide

'Shell (" command.com c:\tmpAsplan2.bat"), vbHide

'shell = ("c:\tmpAsplan.bat"), vbHide

MsgBox " Cópia da tabela CADFUN.dbf gerada em c:\backup"

End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

wagner, não vi problema com seu codigo não. o Visual Basic esta mesmo executando o bat??

tipo, a ultima linha do bat da um del nele mesmo certo?? então, se o arquivo bat estiver em c: depois q você rodar o programa, o problema deve estar no proprio bat, já q o seu codigo do shell esta certo, testei aqui e ele funcionou.

sera q não tem algum caminho digitado errado no bat ou coisa assim??

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Wagner Alves lopes

Kuroi, o programa cria o arquivo .bat em c:, mas não faz a copia necessaria, ele deveria pegar a tabela cadfun.dbf que esta no caminho \\alfa\asplan\asplan\aplc\folpag\ e fazer um backup em c:\backup o caminho é este não há erro, tentei outras maneiras de escrever o comando shell, mas nenhum deu certo.

Vou tentando aqui, se conseguir eu posto falando a soluçao, e caso você lembre de algo por favor me ajude

Valeu

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...