Wagner Alves Lopes Postado Junho 6, 2008 Denunciar Share Postado Junho 6, 2008 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 = 4800Me.Height = 3600Set cnnTabelas = New ADODB.ConnectionSet 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 - 30dtpFinal.Value = Date Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Junho 6, 2008 Denunciar Share Postado Junho 6, 2008 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?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --wagner_alg -- Postado Junho 9, 2008 Denunciar Share Postado Junho 9, 2008 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 negritodbTabelas é 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 namecorrectly"Qualquer ajuda é bem vinda Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Junho 11, 2008 Denunciar Share Postado Junho 11, 2008 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.htme tb nos demais tutoriais sobre o assunto nessa pagina aqui: http://www.macoratti.net/indvb.htmveja se ajudou, qualquer coisa poste. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Wagner Alves lopes Postado Junho 12, 2008 Denunciar Share Postado Junho 12, 2008 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 erroRun 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Junho 12, 2008 Denunciar Share Postado Junho 12, 2008 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).Typee poste aqui o conteudo q ele retornar pra gente aqui saber o q esta acontecendo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Wagner Alves lopes Postado Junho 13, 2008 Denunciar Share Postado Junho 13, 2008 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 .dbfAbraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest WAGNER ALVES LOPES Postado Junho 16, 2008 Denunciar Share Postado Junho 16, 2008 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 SEIVALEUSub 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Junho 16, 2008 Denunciar Share Postado Junho 16, 2008 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?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Wagner Alves lopes Postado Junho 17, 2008 Denunciar Share Postado Junho 17, 2008 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 ajudeValeu Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Wagner Alves Lopes
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
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.