Jump to content

Recommended Posts

Posted

Boas a todos,

tenho um dilemas na aplicação que é muito estranho.

A aplicação tem 2 tabelas em forms diferentes, 1 serve para fazer alterações e a outra é so de consulta. O codigo é o mesmo para as 2 tabelas. O que não percebo é que uma tabela vai buscar os dados que estão correcto mas a outra vai buscar dados de outra tabela que não tem nada haver com a bd que estou a usar. ?

Codigo da 1ª tabela para realizar alterações:

Public Class tabela
    Private da As SqlDataAdapter
    Private ds As DataSet
    Private Sub tabela_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'ligação à base de dados 
        Dim myConnectionString As String = _
           "Data Source=.\SQLEXPRESS; Initial Catalog=Parque; Integrated Security=SSPI;"
        ' Cria uma nova ligação à base de dados 
        Dim connection As New SqlConnection(myConnectionString)
        ' Cria um novo SqlDataAdapter que servirá para actualizar o DataSet 
        Dim SQL As String = "SELECT * FROM gest_ao"
        da = New SqlDataAdapter(SQL, connection)
        'Cria um DataSet, ou seja, uma representação em memória da informação
        ds = New DataSet
        ' Coloca a informação da tabela definida no DataSet
        da.Fill(ds, "gest_ao")
        ' Define que a fonte de dados da DataGridView é a nossa DataSet
        ' criando automáticamente as colunas e linhas de dados
        Me.Lista.DataSource = ds.Tables("gest_ao")
        ' Limpa a ligação à base de dados. Não é necessário fechar a ligação
        ' porque esta não foi aberta através do comando .Open()
        connection = Nothing
    End Sub

    Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
        ' conecção á base de dados
        Dim objConnection As New SqlConnection _
             ("Data Source=.\SQLEXPRESS;Initial Catalog=Parque;Integrated Security=SSPI;")
        Dim query As String
        Select Case cbxFiltagem.SelectedIndex
            Case 1 'utilizador
                query = "SELECT * FROM gest_ao WHERE utilizador LIKE '%" & txtProcurar.Text & "%'"
            Case 2 ' empresa
                query = "SELECT * FROM gest_ao WHERE empresa LIKE '%" & txtProcurar.Text & "%'"
            Case 3 'departamento
                query = "SELECT * FROM gest_ao WHERE departamento LIKE'%" & txtProcurar.Text & "%'"
        End Select
        Dim da As New SqlDataAdapter _
                    (query, objConnection)
        Dim ds As New DataSet

        da.Fill(ds, "gest_ao")
        Lista.DataSource = ds.Tables(0)

        If Lista.Rows.Count = 0 Then
            MessageBox.Show("A pesquisa não devolveu qualquer resultado.", "Sem resultados", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    End Sub
    Private Sub btnGravar_Click(sender As System.Object, e As System.EventArgs) Handles btnGravar.Click
        Dim SQL As String = "Update  FROM gest_ao"
        ' Cria automaticamente o comando para permite actualizar a DataSet
        Dim cb As New SqlCommandBuilder(da)
        ' Actualiza na DataSet, e por sua vez na tabela, as alterações efectuadas
        da.Update(ds, "gest_ao")
        ' actualiza a tabela
    End Sub

Como podem reparar,este código tem o evento para gravar as alterações.

Codigo da tabela só para consulta: Esta vai buscar dados a outra bd que não pertence á aplicação.

Private Sub tabela2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'ligação à base de dados 
        Dim myConnectionString As String = _
           "Data Source=.\SQLEXPRESS; Initial Catalog=Parque; Integrated Security=SSPI;"
        ' Cria uma nova ligação à base de dados 
        Dim connection As New SqlConnection(myConnectionString)
        ' Cria um novo SqlDataAdapter que servirá para actualizar o DataSet 
        Dim SQL As String = "SELECT * FROM gest_ao"
        da = New SqlDataAdapter(SQL, connection)
        'Cria um DataSet, ou seja, uma representação em memória da informação
        ds = New DataSet
        ' Coloca a informação da tabela definida no DataSet
        da.Fill(ds, "gest_ao")
        ' Define que a fonte de dados da DataGridView é a nossa DataSet
        ' criando automáticamente as colunas e linhas de dados
        Me.Tabela.DataSource = ds.Tables("gest_ao")
        ' Limpa a ligação à base de dados. Não é necessário fechar a ligação
        ' porque esta não foi aberta através do comando .Open()
        connection = Nothing
    End Sub

    Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
        ' conecção á base de dados
        Dim objConnection As New SqlConnection _
             ("Data Source=.\SQLEXPRESS;Initial Catalog=Parque;Integrated Security=SSPI;")
        Dim query As String
        Select Case cbxFiltagem.SelectedIndex
            Case 1 'utilizador
                query = "SELECT * FROM gest_ao WHERE utilizador LIKE '%" & txtProcurar.Text & "%'"
            Case 2 ' empresa
                query = "SELECT * FROM gest_ao WHERE empresa LIKE '%" & txtProcurar.Text & "%'"
            Case 3 'departamento
                query = "SELECT * FROM gest_ao WHERE departamento LIKE'%" & txtProcurar.Text & "%'"
        End Select
        Dim da As New SqlDataAdapter _
                    (query, objConnection)
        Dim ds As New DataSet

        da.Fill(ds, "gest_ao")
        Tabela.DataSource = ds.Tables(0)

        If Tabela.Rows.Count = 0 Then
            MessageBox.Show("A pesquisa não devolveu qualquer resultado.", "Sem resultados", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    End Sub

Agradeço a ajuda.

Posted

Estás a dizer que estás a ir a BD's difrentes mas a tua ConnectionString é exactamente a mesma..

O objectivo é mesmo ir a duas BD's diferentes?

Pedro Martins

Não respondo a duvidas por PM

Posted

E está-te a dar dados diferentes?

Correcto.

No entanto estive a rever a aplicação desde o inicio e verifiquei que as alterações que realizei,não surgiram efeito.

Ou seja,vou comentar uma alteração:

Num dos eventos de um botão eu queria que em vez de sair da aplicação, queria voltar ao menu principal da aplicação. Depois de corrar a aplicação as alterações são surgiram efeito,nem no codigo,nem na alteração ao nome do botão.

Antes tinha o evento Sair, uso o codigo "End". Alterei para : Nome do botão: Voltar e o codigo era: Me.Hide()  inicio.show() .

Daí pensar que o problema tenha a haver com a aplicação e não com o codigo, porque não está a aceitar as alterações feitas.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.