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

j.mendes24

Pesquisa SQL [RESOLVIDO]

Recommended Posts

j.mendes24

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

Share this post


Link to post
Share on other sites
Tuntankamon

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

Share this post


Link to post
Share on other sites
malainhocf

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


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Share this post


Link to post
Share on other sites
Tuntankamon

@malainhocf

E os botões para andar para a frente para trás, para o inicio e o para o fim?  :)

Share this post


Link to post
Share on other sites
Xetly

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 :)

Share this post


Link to post
Share on other sites
j.mendes24

@malainhocf

desde já obrigado pel tentativa de ajud, mas o codigo que meteste, faz exactamente o mesmo que o meu XD o que vai fazer é que a txt fique com o ultimo registo e eu quero que fique com o primeiro :S

Share this post


Link to post
Share on other sites
j.mendes24

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()

Share this post


Link to post
Share on other sites
malainhocf

Olá, boa tarde,

Para ires buscar o 1º fazes o sql em que determinas qual o 1º registo com select min(idrazao)

Para navegar usas um dataGridView e seleccionado o registo podes ver os campos daquele registo

Estou a pensar mal ?


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Share this post


Link to post
Share on other sites
Tuntankamon

@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...

Share this post


Link to post
Share on other sites
Tuntankamon

Foi o que  foi postado pelo j.mendes24.

Do que eu disse ele só não utilizou o binding navigator, de resto está lá tudo.

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

×

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.