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

manuelbarreto

problemas ao buscar dados á base de dados

Mensagens Recomendadas

manuelbarreto

 Private Sub bt_ant_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_ant.Click

        txt_nome_forne.Enabled = False
        tx_rua.Enabled = False
        contact_forn.Enabled = False

        Dim cod, max, min As Integer

        Dim x As Integer
       

        If x = 0 Then



            ' Texto de ligação à base de dados 
            Dim mmmyConnectionString As String = _
            "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Users\utilizador\AppData\Desktop\Pap_Project\Pap_economato\Pap_economato\economato.mdf';" & _
            ";Integrated Security=True;User Instance=True"

            ' Selecção à  tabela "fornecedores " 
            ' será passado através de parâmetros posteriormente 
            Dim ssSQL As String = "SELECT MAX(codfornecedor) AS codfornecedor FROM fornecedor"
            ' Cria uma nova ligação à base de dados 
            Dim ccconnection As New SqlConnection(mmmyConnectionString)

            ' Criação do comando indicando a instrução e a ligação 
            Dim cccommand As New SqlCommand(ssSQL, ccconnection)

            ' Indicação dos parâmetros da selecção 

            ' Abre a ligação 
            ccconnection.Open()

            ' Executa o comando colocando num SqlDataReader os resultados 
            Dim rrreader As SqlDataReader = cccommand.ExecuteReader()



            ' Caso existam rows (linhas) 
            If rrreader.HasRows Then

                ' Executa um ciclo nas linhas existentes mostrando o campo codfornecedor
                While rrreader.Read()
                    Debug.WriteLine(rrreader.Item("codfornecedor"))
                    'uma variavel toma o valor do que leuda tabela
                    max = (rrreader.Item("codfornecedor"))
                    cod = max
                    x = max
                End While




                ' Fecha a ligação e limpa as variáveis 
                ccconnection.Close()
                ccconnection = Nothing
                cccommand = Nothing



                If x <> 0 Then
                    ' Texto de ligação à base de dados 
                    Dim myConnectionString As String = _
                    "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Users\utilizador\AppData\Desktop\Pap_Project\Pap_economato\Pap_economato\economato.mdf';" & _
                    ";Integrated Security=True;User Instance=True"
                    'linha onde vola a executar o código caso não exista uma determinada linha na tabela da db
z:
                    cod = cod - 1

                    ' Selecção à  tabela "fornecedores com todos os campos" 
                    ' será passado através de parâmetros posteriormente 
                    Dim SQL As String = "SELECT * FROM fornecedor WHERE [codfornecedor] =" & cod & ""

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

                    ' Criação do comando indicando a instrução e a ligação 
                    Dim command As New SqlCommand(SQL, connection)

                    ' Indicação dos parâmetros da selecção 

                    ' Abre a ligação 
                    connection.Open()

                    ' Executa o comando colocando num SqlDataReader os resultados 
                    Dim reader As SqlDataReader = command.ExecuteReader()
                    'caso não exista uma determinada linha na coluna vai voltar a executar o código a seguir a z:
                    If reader.HasRows = False And cod <> 0 Then
                        GoTo z
                    End If

                    If reader.HasRows Then

                        ' Executa um ciclo nas linhas existentes mostrando o campo codfornecedor, nome, morada, contacto
                        While reader.Read()
                            Debug.WriteLine(reader.Item("numfiscal"))
                            txt_nif.Text = (reader.Item("numfiscal"))
                            Debug.WriteLine(reader.Item("nome"))
                            txt_nome_forne.Text = (reader.Item("nome"))
                            Debug.WriteLine(reader.Item("localidade"))
                            txt_localidade.Text = (reader.Item("localidade"))
                            Debug.WriteLine(reader.Item("codigo_postal"))
                            txt_codpostal1.Text = (reader.Item("codigo_postal"))
                            Debug.WriteLine(reader.Item("cod_localidade"))
                            txt_codlocalidade.Text = (reader.Item("cod_localidade"))
                            Debug.WriteLine(reader.Item("rua"))
                            tx_rua.Text = (reader.Item("rua"))
                            Debug.WriteLine(reader.Item("contacto"))
                            contact_forn.Text = (reader.Item("contacto"))
                            Debug.WriteLine(reader.Item("fax"))
                            txt_fax.Text = (reader.Item("fax"))
                            Debug.WriteLine(reader.Item("mail"))
                            txt_mail.Text = (reader.Item("mail"))


                        End While

                    End If


                    ' Fecha a ligação e limpa as variáveis 
                    connection.Close()
                    connection = Nothing
                    command = Nothing

                End If
            End If
        End If


    End Sub

ola amigos eu tenho este código e eu queria que ele guarda-se no x o valor do maximo mas quando volto a carregar no butao o x toma o valor de 0 e assim nao me deixa mostrar os anteriores só me mostra o fornecedor que registei antes.

Alguem me pode ajudar?

obg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino
maximo mas quando volto a carregar no butao o x toma o valor de 0

Mass quando tu declaras novamente a variável "x" ela fica a 0. Tens de declarar a variável fora do bt_ant_Click, e não dentro, do tipo: Private x As Integer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

vou explicar passo a passo.

eu abro o form

depois ao carregar no botao anterior ele vai a base de dados buscar o max de linhas e queria guardar isso na vairavel x

depois quando carregua-se no botao ele já tivesse armazenado o maximo no x para nao ir outra vex calcular o maximo

entendes-te?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ByMySlf

Então a variável x não pode ser declarada dentro do evento click do botão, tal como o jpaulino referiu. Ou seja, para o que pretendes e se bem entendi, tem que ser declarada global ao form.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

No topo, Public X as Integer

Private x As Integer

Não precisas declarar uma variável pública se é usada apenas dentro da classe.

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.