Jump to content
Sign in to follow this  
Chamuanza

Consulta que retorna

Recommended Posts

Chamuanza

Um bem aja pessoal

Tenho uma Form que abre com uma Datagridview com todos os dados da tabela que pretendo com este codigo

 'TODO: This line of code loads data into the 'GuardarResultadosDataSet.NumJogadosEuromilhoes' table. You can move, or remove it, as needed.
        Me.NumJogadosEuromilhoesTableAdapter.Fill(Me.GuardarResultadosDataSet.NumJogadosEuromilhoes)

        'Coloca cor nas colunas 9 e 10
        Dim Contalinhas As Integer = NumJogadosEuromilhoesDataGridView.RowCount - 1

        For X = 1 To Contalinhas
            NumJogadosEuromilhoesDataGridView.Columns(3).DefaultCellStyle.BackColor = Color.Coral

            NumJogadosEuromilhoesDataGridView.Columns(9).DefaultCellStyle.BackColor = Color.Aquamarine
            NumJogadosEuromilhoesDataGridView.Columns(10).DefaultCellStyle.BackColor = Color.Aquamarine

        Next

depois faço uma consulta com este codigo

  Private Sub MonthCalendar1_DateSelected(ByVal sender As Object, ByVal e As System.Windows.Forms.DateRangeEventArgs) Handles MonthCalendar1.DateSelected


        Dim DataJogados As Date = MonthCalendar1.SelectionStart.Date

        Dim da As SqlDataAdapter
        Dim ds As DataSet

        'DataJogados = Format(MonthCalendar1.Select, "yyyy/MM/dd")

        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
        "Data Source=.\SQLEXPRESS;AttachDbFilename='D:\ProjectoTotoMilhoes\TotoMilhões\GuardarResultados.mdf';" & _
          ";Integrated Security=True;User Instance=True"


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

        Dim SQL As String = "SELECT * FROM NumJogadosEuromilhoes WHERE Data = '" & DataJogados & "'"


        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, "NumJogadosEuromilhoes")

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

        ' 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


        Me.MonthCalendar1.Visible = False

        Button1.Enabled = True

        'Faz acontagem do select
        BindingNavigatorCountItem.Text = " de " & Me.NumJogadosEuromilhoesDataGridView.RowCount - 1 & "  Registos Encontrados"

        If NumJogadosEuromilhoesDataGridView.RowCount = 1 Then
            MsgBox("Consulta sem Resultados", MsgBoxStyle.Information, "Consulta ")
            Me.Close()
            Exit Sub
        End If

        Me.NumJogadosEuromilhoesDataGridView.Focus()




    End Sub

de seguida fecho a Form e quando retorno a Form a consulta ainda lá se encontra

Não era suposto retornar os dados da primeira abertura, ou seja todos os dados da tabela

Share this post


Link to post
Share on other sites
Chamuanza

Ola aesp

Obrigado pela atenção, mas no codigo que coloquei tenho "connection = Nothing"

De qualquer das maneiras testei com ds.clear() na linha abaixo e não me apresenta os dados da consulta,ou seja apaga logo a consulta.Terei que colocar o ds.clear() noutro evento?

Share this post


Link to post
Share on other sites
aesp

Vamos lá perceber a lógica disto que é para te poder ajudar, portanto tens um form que apresenta X dados, e tens um botão que realiza uma consulta, e quando fechas esse form da consulta e voltas abrir continua lá a última consulta e não a inicial correcto?

Share this post


Link to post
Share on other sites
aesp

 ' Cria um novo DataSet, ou seja, uma representação em memória da informação
ds = New DataSet

       

Experimenta colocar o ds.clear() aqui.

     

' Coloca a informação da tabela definida no DataSet
da.Fill(ds, "NumJogadosEuromilhoes")

Share this post


Link to post
Share on other sites
Chamuanza

Oi aesp

Desculpa este atraso em responder mas tive que jantar

de qualquer das maneiras não percebi bem a tua intenção

- coloquei ds.clear() a seguir a  ds = New DataSet que já existe no codigo e o resultado foi o mesmo ou seja a consulta retorna quando faço de novo o Load da Form

Share this post


Link to post
Share on other sites
aesp

O problema ai é que ele está a guardar o dataset, de certeza tenta colocar no Load do form o clear  🤔

Aqui tens um exemplo dumas consultas que fiz numa aplicação:

  Public Sub queryVeiculosInspecao()
        Dim query As String = "(Select * From auto WHERE auto.estado LIKE 'Inspecção');"
        Dim DataAdapter As New MySqlDataAdapter(query, ConnectionString)
        Dim MyData As New DataSet

        ConnectionString.Open()

        MyData.Clear()
        DataAdapter.Fill(MyData, "auto")
        FormVeiculos.DGVVeiculos.DataSource = MyData.Tables("auto")

        ConnectionString.Close()
    End Sub

    Public Sub queryVeiculosOficina()
        Dim query As String = "(Select * From auto WHERE auto.estado LIKE 'Oficina');"
        Dim DataAdapter As New MySqlDataAdapter(query, ConnectionString)
        Dim MyData As New DataSet

        ConnectionString.Open()

        MyData.Clear()
        DataAdapter.Fill(MyData, "auto")
        FormVeiculos.DGVVeiculos.DataSource = MyData.Tables("auto")

        ConnectionString.Close()
    End Sub

Share this post


Link to post
Share on other sites
Chamuanza

pelo que entendo ( e tenho poucos conhecimentos) a minha consulta não abre a connection com Open talvez por isso não consiga limpar o Dataset como no teu exemplo

Share this post


Link to post
Share on other sites
aesp

Já agora para tirar a prova dos 9, coloca o código assim,

connection.open()

ds.clear()


' Coloca a informação da tabela definida no DataSet
        da.Fill(ds, "NumJogadosEuromilhoes")

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

        ' 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.close()

Share this post


Link to post
Share on other sites
aesp

Coloca o ds.clear() antes do End Sub, só para testar.

Sinceramente se não funcionar não estou a ver como te ajudar  🤔

Share this post


Link to post
Share on other sites
Chamuanza

não, na mesma form tenho uma Datagridview que abre com todos os dados da tabela e no Bindingnavigator tenho um botão onde faço a consulta por data

Share this post


Link to post
Share on other sites
Chamuanza

Bem penso que resolvi a questão

- coloquei um novo botão no Binding navigator com um select que repoe todos os registos quando eu entender

- no botão "SAIR" da Form em causa coloquei " ToolStripButton2.PerformClick()"

- assim antes de fachar a Form vai activar o select que repoe todos os registos

Share this post


Link to post
Share on other sites
aesp

Então se neste caso está resolvido.

Coloca o tópico como solved.

Abraço  :cheesygrin:

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×
×
  • 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.