Jump to content

Pesquisa SQL [RESOLVIDO]


j.mendes24
 Share

Recommended Posts

Boas Pessoal.

Eu tenho uma tabela (TBRazoes) que contem apenas dois campos, codrazao e razao.

o que quero fazer é o seguinte: ao abrir o form quero que estes dados sejam lidos automaticamente, depois que o primeiro registo seja colocado nos objectos txtcod e txtrazao. ou seja o txtcod fica com o texto 1 e o txtrazao fica com o texto Razao1. o codigo que tenho é o seguinte:

Dim SQL As String = "SELECT * FROM TBRazoes"
        Dim Conn As New SqlConnection(ConnStr)
        Dim Cmd As New SqlCommand(SQL, Conn)

        Conn.Open()

        Dim reader As SqlDataReader = Cmd.ExecuteReader

        While reader.Read()
            codigo = reader.GetInt32(0)
        End While

        Conn.Close()
        Conn = Nothing
        Cmd = Nothing

        txtcod.Text = codigo

mas este codigo coloca o ultimo registo nos objectos e eu quero o primeiro.

depois o que quero fazer é: tenho 4 botoes (primeiro, anterior, seguinte, ultimo) que vao servir de pesquisa.

          ao clicar no botao primeiro ele vai para o primeiro registo

          ao clicar no botao anterior ele vai para o registo anterior ao selecionado

          ao clicar no botao seguinte ele vai para o registo a aseguir ao selecionado

          ao cliecar no botao ultimo ele vai para o ultimo registo

mas nao sai qual o codigo a usar, ja pesquisei e nao encontro nada :S

Link to comment
Share on other sites

O que tu queres é um binding navigator...

Precisas de seguir os seguintes passos:

1º - Preencheres uma datatable com os dados

2º - Fazeres o binding das textboxs aos campos correspondentess

3º - Fazer o bind da datatable ao bindingsource

4º - Fazer o bind do bindingsource ao bindingnavigator

Ou então se utilizares os wizards do VS ele faz-te o trabalho todo...

Link to comment
Share on other sites

Porque não fazes isso com código a unha que é muito mais fácil

Vou te dar um exemplo

Private Sub frmAltFornecedor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim conn As New SqlConnection(connstring)

        conn.Open()
        ' Aqui inicia a interação com a base de dados

        Dim sql As String
        sql = "select descricao, contacto from me_fornecedores where idfornecedor=@id"

        Dim cmd As New SqlCommand(sql, conn)
        cmd.Parameters.Add("@id", SqlDbType.Int).Value = Me.numero

        Dim dr As SqlDataReader

        dr = cmd.ExecuteReader

        While dr.Read()
            txtFornecedor.Text = dr.Item("descricao")
            txtContacto.Text = dr.Item("contacto")
        End While
        

        ' Aqui termina
        conn.Close()
        conn = Nothing
        cmd = Nothing
        dr = Nothing
    End Sub

Espero ter ajudado

Link to comment
Share on other sites

na propria tabela tu consegues fazer a linha SQL que precisas ( se tiveres dificuldades) tem la uma opção que diz " New Query"!

Assim facilita na pesquisa que precisas efectuar.. depois para chamar  a funçao é usar a funções e chamar normalmente para o sitio onde quer apontar.

Se puder ajudar mais terei o maior gosto 🙂

Link to comment
Share on other sites

bem pessoal, depois de muita pesquisa consegui resolver o meu probelma.

antes de tudo temos que criar um bindingsource:

Dim BN As New BindingSource

o seguinte codigo, ele vais buscar os dados á tabela e coloca o primeiro nas texts:

Dim Conn As New SqlConnection(ConnStr)
        Dim SQL As String = "SELECT * FROM TBRazoesPerda"
        Dim Cmd As New SqlCommand(SQL, Conn)

        Dim DA As New SqlDataAdapter(Cmd)
        Dim DT As New DataTable

        DA.Fill(DT)
        BN.DataSource = DT

        Me.TXTCodRazao.DataBindings.Add("text", Me.BN, "CodRazao", True)
        Me.TXTRazao.DataBindings.Add("text", Me.BN, "DescrRazao", True)

depois nos botoes, seguinte, anterior, primeiro e ultimo é só, consoante o botao, por:

Me.BN.MoveFirst()
Me.BN.MovePrevious()
Me.BN.MoveNext()
Me.BN.MoveLast()
Link to comment
Share on other sites

@j.mendes24

"Quem procura sempre alcança"  🙂

@malainhocf

O objectivo é teres um form, onde tens os dados de um registo visiveis mas só um de cada vez e teres os botões para andares a saltar de registo em registo, isto sem utilizar datagrids nem nada que se assemelhe...

Link to comment
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
 Share

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