Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

j.mendes24

Pesquisa SQL [RESOLVIDO]

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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()

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.