none
o meu banco de dados só atualiza quando fecho o programa RRS feed

  • Pergunta

  • Boa tarde,

    Tenho um formulario de Cadastro de empresas, ele ja está salvando, alterando e excluindo. Porém, quando eu 'salvo' uma nova empresa e logo apos tento consulta la ao informar o codigo dela e apertando enter( no qual chama a função que traz os dados do banco para o formulario). Diz que a empresa nao está cadastrada. 

    O meu banco so é atualizado quando eu fecho o meu executavel e abro ele novamente.

    Alguem pode me ajudar?

    quarta-feira, 2 de janeiro de 2013 14:44

Respostas

Todas as Respostas

  • Acho que você tem que fechar a conexao e abrir ela de novo.

    OleDbdataadapter.SelectCommand.CommandText = "select * from TSCASSES order by cd_assessor"
    OleDbdataadapter.Fill(DSassessor1)
    OleDbConnection1.Open()

    OleDbConnection1.close)

    quarta-feira, 2 de janeiro de 2013 14:58
  • pior que não da certo cara, ja tentei.

    Uso sql e vb.net.

    quarta-feira, 2 de janeiro de 2013 15:20
  • No meu caso estava acontecendo isso num datagridview que ficava na tela do cadastro, assim que eu dava ok pra gravar ele não atualizava o datagridview. Uma outra coisa que eu fiz nesse caso foi zerar o datasource do datagridview e depois voltava com ele.
    quarta-feira, 2 de janeiro de 2013 15:58
  • Fazia assim nesse caso

                DGretorno.DataSource = ""
                SqlConCQ.Open()
                DGretorno.DataSource = BSretorno
                DGretorno.Visible = True

    quarta-feira, 2 de janeiro de 2013 16:00
  • No datagridview ele atualiza normal.

    O problema ta sendo quando eu consulto ele com a função que fiz para a tecla ENTER. Pressiono enter e puxa os dados do banco para os text box. Assim: 

    Function Mostra_empresa(ByVal codigo As Integer) As Boolean
            Dim empresas As New DataTable
            Dim Strcon As String

            Strcon = "Data source=.\UBERCONTA;AttachDbFilename=C:\Arquivos de programas\Microsoft SQL Server\MSSQL10.UBERCONTA\MSSQL\DATA\simples.mdf;Integrated Security=True;User Instance=True"
            Dim con As New SqlConnection(Strcon)
            Dim sql = New SqlCommand("Select codigo, filial,razaosocial, numero, complemento, endereco, telefone, bairro, cidade, cep, uf, cgc, codatividade, inscricaomunicipal, cei, contratosocial, datacontrato, inscricaoestadual, notainicio, notafinal, iss, epp, industria, simples, selecao, principal, inicio, dapi, cae FROM empresas WHERE codigo=" + txtCodigo.Text + "AND filial=" + txtFilial.Text)

            Try
                con.Open()
                sql.ExecuteNonQuery()
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally

            End Try

            existe = True
            naoexiste = False
            sql.Connection = con
            Dim Dr As SqlDataReader = sql.ExecuteReader

            While Dr.Read
                txtCodigo.Text = Dr.GetValue(0).ToString()
                txtFilial.Text = Dr.GetValue(1).ToString()
                txtRazaosocial.Text = Dr.GetString(2).ToString()
                txtNumero.Text = Dr.GetValue(3).ToString()
                txtComplemento.Text = Dr.GetString(4).ToString()
                txtEndereco.Text = Dr.GetString(5).ToString()
                mskTelefone.Text = Dr.GetString(6).ToString()
                txtBairro.Text = Dr.GetString(7).ToString()
                txtCidade.Text = Dr.GetString(8).ToString()
                mskCep.Text = Dr.GetString(9).ToString()
                cboUf.Text = Dr.GetString(10).ToString()
                mskCnpj.Text = Dr.GetString(11).ToString()
                txtCodatividade.Text = Dr.GetString(12).ToString()
                mskMunicipal.Text = Dr.GetString(13).ToString()
                mskCei.Text = Dr.GetString(14).ToString()
                mskContrato.Text = Dr.GetString(15).ToString()
                mskDatacontato.Text = Dr.GetString(16).ToString()
                mskEstadual.Text = Dr.GetString(17).ToString()
                txtNotainicio.Text = Dr.GetString(18).ToString()
                txtNotafinal.Text = Dr.GetString(19).ToString()
                txtIss.Text = Dr.GetValue(20).ToString()
                cboEpp.Text = Dr.GetString(21).ToString()
                cboIndustria.Text = Dr.GetString(22).ToString()
                cboSimples.Text = Dr.GetString(23).ToString()
                txtSelecao.Text = Dr.GetString(24).ToString()
                txtPrincipal.Text = Dr.GetString(25).ToString()
                mskDataatividade.Text = Dr.GetString(26).ToString()
                txtDapi.Text = Dr.GetValue(27).ToString()
                txtCae.Text = Dr.GetValue(28).ToString()
            End While
            Return existe = False
        End Function

    Veja se isso te ajuda a me entender.

    Obrigado.

    quarta-feira, 2 de janeiro de 2013 16:55
  • Mas você pressiona o enter quando esta a onde?
    quarta-feira, 2 de janeiro de 2013 16:58
  • Ex: informei todos esses dados para a empresa de codigo 2, e salvei ela. Correto?

    Dai meu textbox recebe o focus, e se eu informar o codigo 2 e der enter. De acordo com essa função, teria que me retornar os dados que acabei de salvar.

    Mais o meu banco na atualiza, para os dados aparecer tenho que reiniciar meu executavel.

    Deu pra entender mais ou menos?

    quarta-feira, 2 de janeiro de 2013 17:06
  • Entendi, não sei se vou conseguir ti ajudar. Mas percebi que vc não esta usando dataset. No meu problema eu tive que fazer isso com um dataset OleDbdataadapter.Fill(DSassessor1). Como a base era grande ficava lento fazendo isso, ai tirei esse Fill. Mas também parou de atualizar o banco e só atualizava quando eu fechava o sustema, coloquei um TOP 1000 no select e voltei a usar o OleDbdataadapter.Fill(DSassessor1). Assim aqui resolveu.
    quarta-feira, 2 de janeiro de 2013 17:19
  • pode postar o trecho do codigo?
    quarta-feira, 2 de janeiro de 2013 17:49
  • SqlConCQ.Close()
                Dscq1.Clear()
                SqlDataCQ.SelectCommand.CommandText = "select TOP 300 * from retorno order by data"
                SqlDataCQ.Fill(Dscq1)
                SqlDataCQ.Update(Dscq1)
    
    
                txtcodass.Text = ""
                txtnm_assessor.Text = ""
                CBcategoria.Text = ""
                txtnomecli.Text = ""
                txtcontacli.Text = ""
                DTdata.Text = ""
                txtmotivo.Text = ""
                btngravar.Enabled = False
                btnexcluir.Enabled = False
                btnconsulta.Enabled = False
                btnnovo.Enabled = True
                btncancelar.Enabled = False
                btnbuscarreg.Enabled = True
               
                DGretorno.DataSource = ""
                DGretorno.Refresh()
                DGretorno.Update()
    
                SqlConCQ.Open()
    
                
                DGretorno.DataSource = BSretorno

    quarta-feira, 2 de janeiro de 2013 18:20
  • Você diz que o banco não atualiza, quando você salva e ANTES de reiniciar a aplicação consulta o banco de dados, o registro está la?
    quarta-feira, 2 de janeiro de 2013 18:58
  • Você diz que o banco não atualiza, quando você salva e ANTES de reiniciar a aplicação consulta o banco de dados, o registro está la?

    No datagridview sim.

    quarta-feira, 2 de janeiro de 2013 19:00
  • SqlConCQ.Close()
                Dscq1.Clear()
                SqlDataCQ.SelectCommand.CommandText = "select TOP 300 * from retorno order by data"
                SqlDataCQ.Fill(Dscq1)
                SqlDataCQ.Update(Dscq1)
    
    
                txtcodass.Text = ""
                txtnm_assessor.Text = ""
                CBcategoria.Text = ""
                txtnomecli.Text = ""
                txtcontacli.Text = ""
                DTdata.Text = ""
                txtmotivo.Text = ""
                btngravar.Enabled = False
                btnexcluir.Enabled = False
                btnconsulta.Enabled = False
                btnnovo.Enabled = True
                btncancelar.Enabled = False
                btnbuscarreg.Enabled = True
               
                DGretorno.DataSource = ""
                DGretorno.Refresh()
                DGretorno.Update()
    
                SqlConCQ.Open()
    
                
                DGretorno.DataSource = BSretorno

    Nada cara :s 
    quarta-feira, 2 de janeiro de 2013 19:00
  • Você está fechando a conexão antes de efetuar as operações e abrindo depois? não deveria ser ao contrário?
    sexta-feira, 4 de janeiro de 2013 12:52
  • Você está fechando a conexão antes de efetuar as operações e abrindo depois? não deveria ser ao contrário?

    Cara, nem tinha enxergado essa possibilidade.

    Obrigado, resolveu o meu problema.

    segunda-feira, 7 de janeiro de 2013 09:45