• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Chamuanza

Consulta não responde na segunda busca

2 mensagens neste tópico

Oi Pessoal Bem aja

Tenho uma consulta com este codigo apos abertura do form que funciona bem:

Try
            Me.Table1TableAdapter.ValorDespesa(Me.ReceitaDespesaDataSet.Table1, CType(Param2ToolStripTextBox.Text, Decimal))
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)

        End Try

depois faço com este código a reposição de todos os registos, e funciona

'Faz a exibição de todos os registos
        If Param2ToolStripTextBox.Text <> " " Then
            Me.Table1TableAdapter.FillBy(Me.ReceitaDespesaDataSet.Table1)

            Me.Param2ToolStripTextBox.Text = ""
        End If

só que quando faço nova consulta (introduzo novo valor em "Param2ToolStripTextBox.Text") não me aparecem os registos na datagrid, embora apareça a contagem dos mesmos no BindingNavigatorCountItem

Obrigado pela atenção

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oi Pessoal

Já vi o porquê do meu assunto "Consulta não responde na segunda busca", agora preciso de uma dica

No mesmo Form tenho um consulta a um valor especifico com este cógigo:

 Private Sub ValorDespesaToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ValorDespesaToolStripButton.Click


        Try
            Me.Table1TableAdapter.ValorDespesa(Me.ReceitaDespesaDataSet.Table1, CType(Param2ToolStripTextBox.Text, Decimal))
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)

        End Try

        ''Coloca o nº de registos na label
        'Label2.Text = "Este Filtro Encontrou - " & Me.Table1DataGridView.RowCount & " Registos"

        Call SomarDespesa()

    End Sub

e reponho todos os registos com o código:

 Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click


        'Faz a exibição de todos os registos
        Me.Table1TableAdapter.FillBy(Me.ReceitaDespesaDataSet.Table1)
        Me.Param2ToolStripTextBox.Text = ""


        Call SomarDespesa()

    End Sub

e tenho outra consulta mais alargada as categorias com este código:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'SELECT sobre Despesas

        ' Declaração de variáveis privadas
        Dim da As SqlDataAdapter
        Dim ds As DataSet

        If DateTimePicker1.Value > DateTimePicker2.Value Then
            MsgBox("A Data Inicial não pode ser Superior a Data Final", MsgBoxStyle.Information, "Data Inicial Maior que Data Final")
            DateTimePicker1.Focus()
            Exit Sub
        End If


        Dim DataInicio As New DateTime(DateTimePicker1.Value.Year, DateTimePicker1.Value.Month, DateTimePicker1.Value.Day, 0, 0, 0)
        Dim DataFim As New DateTime(DateTimePicker2.Value.Year, DateTimePicker2.Value.Month, DateTimePicker2.Value.Day, 23, 59, 59)

        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
        "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\Utilizador\" & _
        "My Documents\ReceitaDespesa.mdf;" & _
        "Integrated Security=True;Connect Timeout=30;User Instance=True"


        ' Cria uma nova ligação à base de dados
        Dim connection As New SqlConnection(myConnectionString)


        Dim SQL As String = "SELECT Id, Data, Despesa, Designacao, Categoria, SubCategoria, Familiar From Table1 WHERE Data BETWEEN '" & DataInicio & "' AND '" & DataFim & "' AND Categoria Like '" & TextBox1.Text.ToString & "%' AND SubCategoria Like '" & TextBox2.Text.ToString & "%' AND Familiar Like '" & TextBox3.Text.ToString & "%'"


        da = New SqlDataAdapter(SQL, connection)

        ' Cria um novo 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, "Table1")

        ' Define que a fonte de dados da DataGridView é a nossa DataSet
        ' criando automáticamente as colunas e linhas de dados
        Me.Table1DataGridView.DataSource = ds.Tables("Table1")

        ' 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


        Call SomarDespesa()

        BindingNavigatorCountItem.Text = Me.Table1DataGridView.RowCount
        
    End Sub

e reponho todos os registos com o código

Private Sub ExibirTodos()

        'Exibir todos os registos depois de umaconsulta

        ' Declaração de variáveis privadas
        Dim da As SqlDataAdapter
        Dim ds As DataSet

        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
        "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\Utilizador\" & _
        "My Documents\ReceitaDespesa.mdf;" & _
        "Integrated Security=True;Connect Timeout=30;User Instance=True"

        ' Cria uma nova ligação à base de dados
        Dim connection As New SqlConnection(myConnectionString)


        Dim SQL As String = "SELECT Id, Data, Despesa, Designacao, Categoria, SubCategoria, Familiar From Table1 "


        da = New SqlDataAdapter(SQL, connection)

        ' Cria um novo 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, "Table1")

        ' Define que a fonte de dados da DataGridView é a nossa DataSet
        ' criando automáticamente as colunas e linhas de dados
        Me.Table1DataGridView.DataSource = ds.Tables("Table1")

        ' 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


        Call SomarDespesa()



    End Sub

Sucede que se fizer uma consulta as categorias e depois de repor todos os registos quiser fazer uma consulta a um valor especifico os registos não aparecem na Datagrid embora no BindingNavigatorCountItem apareça a contagem da consulta.

O que e q tenho mal, ou me falta ?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora