ucx 0 Denunciar post Postado Agosto 28, 2009 Olá pessoal. Estou criando uma aplicação que usa banco de dados access. Em certo momento, tenho um algoritmo que faz o seguinte: insert no banco select do banco Não necessariamente uma instrução logo após a outra.. enfim.. O problema é que as instruções estão sendo executadas ao mesmo tempo. Explicando melhor, ao fazer o insert e logo após um select, o select não trás os dados do insert, pois o banco não foi atualizado ainda.. Mas se eu esperar mais um pouquinho no tempo de execução.. Lá estão os dados do insert! Pensei na gambiarra de fazer o sistema "dormir" entre uma query e outra.. o que não adiantaria mto, pois cara query tem um tempo de resposta diferente.. Amigos, preciso de uma solução pra isso. Algo que faça o access processar uma consulta de cada vez, e me traga no select as informações do insert anterior. Obrigado pela atenção. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Agosto 28, 2009 Poste seu código se o insert ja foi executado não banco não tem erro, ele tratá os dados. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
ucx 0 Denunciar post Postado Agosto 29, 2009 Poste seu código se o insert ja foi executado não banco não tem erro, ele tratá os dados. Abraços... Não tem erro algum... o código é algo como... select -> retorna todas as linhas da tabela (10) insert -> insere uma nova linha select -> retorna todas as linhas da tabela (10 de novo! deveria ser 11) então, passado alguns segundos... ... select -> retorna 11 linhas entenderam? a instrução insert tá demorando pra executar.. o select tá sobrepondo.. não sei bem oq acontece.. mas tem esse comportamento.. nada de peculiar no código.. penso que talvez possa ser algum atributo da conexão com o banco.. mas como não tem nada setado aqui além do básico... obrigado pela resposta! Compartilhar este post Link para o post Compartilhar em outros sites
scorpio 7 Denunciar post Postado Agosto 29, 2009 Nâo tem essa de demorar, quando passar para a proxima linha, já vai ter executado. Posta o código. Compartilhar este post Link para o post Compartilhar em outros sites
ucx 0 Denunciar post Postado Agosto 29, 2009 há dois botões para mover entre os registros da tabela. quando clico em voltar_registro, ele faz o seguinte: idClienteAtual = 10; 'por exemplo Dim comando As OleDbCommand comando = New OleDbCommand("UPDATE TabCli SET " &_ "Nome='" & txtNome.Text & "'," & _ '"... = ..." "WHERE Controle=" & idClienteAtual, ConectaBancoAccess) idClienteAtual = idClienteAtual - 1 carregaCliente(idClienteAtual) O carregaCliente faz o seguinte: Dim consulta As OleDbDataReader = querySelect("Select * from TabCli where Controle = " & idClienteAtual & "") Try While (consulta.Read) txtNome.Text = consulta.Item("Nome").ToString '... End While Finally consulta.Close() End Try Então clico em voltar, e o programa dá update no cliente 10 e em seguida, carrega o cliente 9. se eu rapidamente voltar o registro para o 10, os valores recarregam mas não aparecem atualizados. já, se eu demorar um pouquinho mais pra voltar pro registro 10, os valores aparecem corretamente. galera, já quebrei a cabeça com tudo aqui.. rs.. please, help! valeu! Compartilhar este post Link para o post Compartilhar em outros sites
scorpio 7 Denunciar post Postado Agosto 29, 2009 o que tem no querySelect ? Utiliza em vez de Compartilhar este post Link para o post Compartilhar em outros sites
ucx 0 Denunciar post Postado Agosto 29, 2009 o que tem no querySelect ? opa, desculpe.. passou.. rs Public Function querySelect(ByVal query) As OleDbDataReader Dim dataReader As OleDbDataReader Dim cmd As New OleDbCommand cmd.Connection = ConectaBancoAccess() cmd.CommandText = query dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection) Return dataReader End Function obrigado pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
scorpio 7 Denunciar post Postado Agosto 30, 2009 Se vocÊ tirar essa linha, idClienteAtual = idClienteAtual - 1, ele vai carregar com os novos dados ?? Compartilhar este post Link para o post Compartilhar em outros sites
ucx 0 Denunciar post Postado Agosto 30, 2009 Se vocÊ tirar essa linha, idClienteAtual = idClienteAtual - 1, ele vai carregar com os novos dados ?? Carrega, mas se comportando ainda com aquele Delay.. Engraçado que, se eu debugo, a instrução é executada corretamente.. (como vou lentamente de um passo pro outro, dá tempo do query ser processado). Já, se eu rodo direto, tem esse Delay.. O update não acontece na hora.. Ele é processado, mas o banco de dados permite que algum select seja executado antes do update ser concluido.. Ainda se o BD fosse online... Mas é local! o.O Valeu cara! =] Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Agosto 31, 2009 Gostaria de ver o método que faz a inserção no banco de dados. Não encontrei nenhum que tenha um ExecuteNonQuery. Poste aqui sua conexão também. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites