MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Tempo de Conexão

    Compartilhe

    wesleymeim
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    Tempo de Conexão

    Mensagem  wesleymeim em Ter 21 Out 2014, 10:05

    Bom dia!

    Gostaria de daber se alguém saberia me tirar a seguinte dúvida?

    Tenho uma tabela em SQL e quando tento ler uma tabela com 41 colunas e 3.500.000 de registros o mesmo acusa o seguinte erro:

    Erro em Tempo de Execução '-2147217915(80040e05)':
    O objeto estava aberto.


    Alguém saberia me dizer como sair desse erro?


    Obrigado.

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Ter 21 Out 2014, 11:16

    Essa aplicação é compartilhada na rede?
    Se não, tente fechar o aplicativo e depois abra-o novamente e tente ler a tabela de novo.


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    wesleymeim
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    Tempo de Conexão

    Mensagem  wesleymeim em Ter 21 Out 2014, 11:41

    Tenho a aplicação em um Form na minha máquina e estou me conectando a um servidor da Rede com SQL para mostrar esses registros em um formulário de folha de dados.

    Meu código está assim:

    Private Sub Form_Load()

    Dim rss As New ADODB.Recordset
    Dim sql As String
    Dim cns As New ADODB.Connection

    cns.Provider = "SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=10.131.161.32;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DEBRBRG310F27X;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=teste"

    cns.ConnectionTimeout = 0
    cns.Open

    Set rss = New ADODB.Recordset
    Set rss.ActiveConnection = cns

    sqls = "select [Divisão], [Exercício], [Períodocontábil], [Organizaçãovendas], [Canaldistribuição], [Cliente],[Setordeatividade], [Escritóriodevendas], [Material], [Nºconta], [Centro], [Centrocusto], [Centrodelucro],[Tp doc faturamento], [Tipodedocumento], [Documentodevendas], [Nºdoc referên ], [Nºdocumento], [Oper doc refer ],[Operaçãoref ], [Texto], [Qtde(KG)], [Emmoedadecontabilização], [ItemdocumentoSD], [Ctg doc ref ], [Linhasdoc ref ],[Categoriadocumento], [Linhadelançamento], [Ledger], [Tiporegistro], [Versão], [Áreacontab custos], [Empresarecept ],[CenLcr p eliminação], [Cen lucroparceiros], [Denominação], [Índiceestatístico], [Cód débito crédito], [emmoedainternadocentrodelucro],[CódigomoedaMICtrLuc ] , [CódigomoedaMoed cont ]from detr"

    rss.CursorLocation = adUseClient
    rss.Open sqls, cns, adOpenStatic, adLockBatchOptimistic

    Set Me.Recordset = rss
    Set rss.ActiveConnection = Nothing

    rss.Close
    cns.Close

    End Sub

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Ter 21 Out 2014, 13:02

    Outras aplicações usam essa mesma tabela do SQL? Porque pode ser que a tabela esteja bloqueada no dependendo do modo de leitura que a outra estaria usando, por exemplo utilizando o adLockPessimistic na chamada de um registro para edição.

    Outra coisa que também pode ser, mesmo que não tenha nada a ver com a descrição do erro, é que essa quantidade de dados seja demais para o Access.
    Já vi muitos erros estranhos em relação a isso quando o arquivo de dados ultrapassava o tamanho crítico que é de 1,5GB +/-.
    Tente importar essa tabela para a sua aplicação (ou para um outro arquivo de dados do Access) e ver o tamanho que fica, e se você consegue abrir um recordset a partir dessa tabela.


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    wesleymeim
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    Tempo de Conexão

    Mensagem  wesleymeim em Ter 21 Out 2014, 13:18

    Estou fazendo a importação agora, logo do um retorno.

    Aproveitando.

    Você teria algum exemplo de barra de prograsso para a leitura de rgeistros em tabelas, em cima do exemplo de código que te mostrei acima.

    Lembrando que eu não tenho nenhuma tabela armazenada no meu Access.


    Private Sub Form_Load()

    Dim cns As New ADODB.Connection
    Dim rss As New ADODB.Recordset
    Dim rs_cliente As ADODB.Recordset
    Dim sqls As String

    cns.Provider = "SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Data Source=11.111.121.19;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DEBRBRG310F27X;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=teste"
    cns.Open


    Set rss = New ADODB.Recordset
    Set rss.ActiveConnection = cns

    'sqls = "select * from cliente"
    sqls = "SELECT cod_clien, canis, oend, tati, dec_cliente, pais_clien, uf_clien, cidade_clien, test FROM cliente order by cod_clien, desc_clien"

    rss.CursorLocation = adUseClient
    rss.Open sqls, cns, adOpenForwardOnly, adLockPessimistic 'adLockPessimistic (Permitir alteração)
    Set rs_cliente = rss
    Set rss = Nothing
    Set cns = Nothing
    Set Me.Recordset = rs_cliente

    End Sub


    Muito obrigado.

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Ter 21 Out 2014, 13:36

    Acho que você poderia ter uma tela de "Carregando..." ao invés de uma de progresso, pois até onde sei, não tem como você retornar a quantidade de dados que já foi preenchida no recordset para que pudesse comparar com a quantidade total de registros, para que então funcionasse uma barra de progresso.
    Acho que até prejudicaria o desempenho.


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    wesleymeim
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    Tempo de execução

    Mensagem  wesleymeim em Ter 21 Out 2014, 15:03

    Sabe me dizer como eu poderia adptar essa tela de carregando no meu código?

    Obrigado.

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Ter 21 Out 2014, 15:34

    Só criar um formulário com a propriedade popup definida como sim, com o layout que você deseja, colocando gif ou mensagem simples mesmo. Então abrir o formulário em qualquer lugar antes do trecho:

    Código:
    rss.Open sqls, cns, adOpenStatic, adLockBatchOptimistic

    E fechá-lo ao final de todo o procedimento.


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Ter 21 Out 2014, 15:36

    Outra coisa que só vi agora. Você colocou o adLockPessimistic no lugar do adLockBatchOptimistic, e isso não é a solução.
    Eu disse que caso alguma outra aplicação que acessa a mesma tabela que você está tentando acessar use esse tipo de acesso, ela irá impedir a sua leitura até que finalize o processo.


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    Avelino João
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Angola
    Mensagens : 257
    Registrado : 10/03/2012

    Re: Tempo de Conexão

    Mensagem  Avelino João em Qua 22 Out 2014, 08:23

    Marco Messa quando se trabalha com SQL SERVER o "Driver = {SQL Server Native Client 10.0}" é mais parido para se trabalhar.


    .................................................................................
    Proaccess - Angola

    wesleymeim
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    Tela Carregando

    Mensagem  wesleymeim em Qua 22 Out 2014, 09:03

    Bom dia Marco,

    Sabe me dizer como eu poderia colocar um gif animado nesse formulário de carregando, procurei e encontrei a solução de uma dll mas não funcionou creio que é pelo fato e eu está trabalhando com a versão 2001 do access.

    Saberia me dizer como posso fazer o gif animado rodar dentro desse formulário?


    Muito obrigado.

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Qua 22 Out 2014, 11:36

    Versão 2001? Shocked


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Qua 22 Out 2014, 11:38

    A propósito, seu problema inicial foi resolvido? Se sim você deve informar aqui no tópico para que outros que tenham o mesmo problema possam consultar caso surja a mesma situação.

    Seria legal abrir um novo tópico para a tela de carregando, assim aumenta a visibilidade para que outros participantes do fórum possam ajudar também.

    Abs


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    wesleymeim
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    Desculpe

    Mensagem  wesleymeim em Qua 22 Out 2014, 11:45

    Desculpe 2010....

    Mais já achei como fazer.

    Mais preciso de outra ajuda se você puder:

    Ao dar duplo clique no formulário que vai ler os registros eu gostaria que entrasse o form carregado que eu criei e ao sair ele seria fechado, mais a questão é que não estou conseguindo fazer isso acontecer:

    De uma olhada como eu estou fazendo o código:

    Private Sub Form_Load()

    DoCmd.OpenForm "frm_carregando_registros"

    Dim cns As New ADODB.Connection
    Dim rss As New ADODB.Recordset
    Dim rs_cliente As ADODB.Recordset
    Dim sqls As String

    cns.Provider = "SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Data Source=11.111.111.19;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DEBRBRG310F27X;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=teste"
    cns.Open


    Set rss = New ADODB.Recordset
    Set rss.ActiveConnection = cns

    sqls = "SELECT cod_clien, canis, orend, seti, desc_clien, pais_clien, uf_clien, cidade_clien, teste FROM cliente order by cod_clien, desc_clien"

    rss.CursorLocation = adUseClient

    rss.Open sqls, cns, adOpenForwardOnly, adLockPessimistic 'adLockPessimistic (Permitir alteração)

    Set rs_cliente = rss
    Set rss = Nothing
    Set cns = Nothing
    Set Me.Recordset = rs_cliente
       

    DoCmd.Close acForm, "frm_carregando_registros", acSaveYes


    End Sub


    Mais se eu coloco o código assim o mesmo funciona, mais aí eu que tenho que dá um clique no ok do msgbox para tirá-lo da tela.

    Private Sub Form_Load()



    Dim cns As New ADODB.Connection
    Dim rss As New ADODB.Recordset
    Dim rs_cliente As ADODB.Recordset
    Dim sqls As String

    cns.Provider = "SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Data Source=11.111.111.19;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DEBRBRG310F27X;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=teste"
    cns.Open

    DoCmd.OpenForm "frm_carregando_registros"

    msgbox ""

    Set rss = New ADODB.Recordset
    Set rss.ActiveConnection = cns


    sqls = "SELECT cod_clien, canis, orend, seti, desc_clien, pais_clien, uf_clien, cidade_clien, teste FROM cliente order by cod_clien, desc_clien"

    rss.CursorLocation = adUseClient

    rss.Open sqls, cns, adOpenForwardOnly, adLockPessimistic 'adLockPessimistic (Permitir alteração)

    Set rs_cliente = rss
    Set rss = Nothing
    Set cns = Nothing
    Set Me.Recordset = rs_cliente
       

    DoCmd.Close acForm, "frm_carregando_registros", acSaveYes

    End Sub

    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Qua 22 Out 2014, 12:58

    Ao postar um código, use o botão de formatação de código, melhora a visualização.

    Só pra entender a diferença, você simplesmente colocou um msgbox e o formulário aparece? Ou foi porque você mudou o DoCmd.OpenForm de lugar?
    O formulário de carregando está como popup e como janela restrita (modal)?


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    wesleymeim
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    Re: Tempo de Conexão

    Mensagem  wesleymeim em Qua 22 Out 2014, 13:12

    Você simplesmente colocou um msgbox e o formulário aparece?
    Sim
    Ou foi porque você mudou o DoCmd.OpenForm de lugar?
    Não, para quando eu coloco a msgbox, aí ele aparece.
    O formulário de carregando está como popup e como janela restrita (modal)?

    Popup = sim
    janela restrita = sim


    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 28/06/2010

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Qua 22 Out 2014, 13:17

    Tente o método Repaint do formulário logo após enviar o comando de abrir a tela de carregando.

    [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    wesleymeim
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    Abrir Form

    Mensagem  wesleymeim em Qua 22 Out 2014, 13:41

    É não funcionou.

      Data/hora atual: Qui 08 Dez 2016, 12:01