MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

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, 13: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.
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Ter 21 Out 2014, 14: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, 14: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
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Ter 21 Out 2014, 16: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, 16: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.
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Ter 21 Out 2014, 16: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, 18:03

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

    Obrigado.
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Ter 21 Out 2014, 18: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.]
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Ter 21 Out 2014, 18: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.]
    avatar
    Avelino João
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Re: Tempo de Conexão

    Mensagem  Avelino João em Qua 22 Out 2014, 11: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, 12: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.
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Tempo de Conexão

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

    Versão 2001? Shocked


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

    Respeito às Regras 100%

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

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Qua 22 Out 2014, 14: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, 14: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
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Qua 22 Out 2014, 15: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, 16: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

    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Tempo de Conexão

    Mensagem  Marco Messa em Qua 22 Out 2014, 16: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, 16:41

    É não funcionou.

      Data/hora atual: Dom 23 Jul 2017, 19:51