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

manuelbarreto

slql server/vb.net

Mensagens Recomendadas

manuelbarreto

Olá eu gostava de saber como posso ligar o vb.net a minha base de dados em mdf é que eu estou a utilizar data set mas está a dar-me muitos problem..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Geninha

ola

vê se este código ajuda

Imports System.Data.SqlClient - antes do public class

Private da As SqlDataAdapter
    Private ds As DataSet

Dim myConnectionString As String = "Data Source=" - aqui fazes a ligaçã, isto é colocas aqui o caminho da tua base de dados.
        Dim connection As New SqlConnection(myConnectionString)
Dim SQL As String = - aqui podes utilizar um select ou update depende do que queres
da = New SqlDataAdapter(SQL, connection)
        ds = New DataSet
da.Fill(ds, "nome da tabela")
        Me.DataGridView1.DataSource = ds.Tables("nome da tabela")
        connection = Nothing

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

ola amigos eu estou a ler de uma base de dados e queria colocar o campo nomecategorias na listbox mas nao estou a ser capaz de efectuar isso alguem me pode dar uma ajuda?

Código:

       ' 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"

        ' Selecção à  tabela "MyTable" em que o campo "username" 
        ' será passado através de parâmetros posteriormente 
        Dim SQL As String = "SELECT * FROM categorias "

        ' 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 
       ' command.Parameters.Add("@username", SqlDbType.VarChar).Value = "jpaulino"

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

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

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

            ' Executa um ciclo nas linhas existentes mostrando o campo “username” 
            While reader.Read()
                Debug.WriteLine(reader.Item("nomecategoria"))
                ListBox1.Items.Add(reader)
            End While

        End If

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
renafi

Porque na ListBox não estás a enviar o nome da categoria, mas sim o reader. Experimenta isto:

ListBox1.Items.Add(reader.Item("nomecategoria"))

Nota: mas podes definir o DataSource da Listbox logo com o reader.


Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

olá mais uma vez.

eu estou a colocar os dados numa listgridview e estou a utilizar este codigo:

While reader.Read()
                Debug.WriteLine(reader.Item("codcategoria"))
                cod = (reader.Item("codcategoria"))
                Debug.WriteLine(reader.Item("nomecategoria"))
                cat = (reader.Item("nomecategoria"))

                Dim SLVI1 As New ListViewItem.ListViewSubItem

                Dim LVI As New ListViewItem

                LVI.Text = cod
                SLVI1.Text = cat
                LVI.SubItems.Add(SLVI1)
                ver.Items.Add(LVI)
            End While

Mas ainda nao percebi o que é o LVI e o SLVI1.

Alguem me pode explicar e desculpai lá a minha ignorancai.. ehee

:wallbash:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

LVI representa um item da ListView. Na prática é uma linha completa.

SLVI é abreviatura para SubListViewItem. É uma maneira controlada de adicionar subitems ao ListViewItem.

Podes encarar subitems, na vista de detalhes, como as colunas que cada linha tem.

Se tiveres por exemplo 3 colunas, LVI.SubItems(0) é a primeira coluna, LVI.SubItems(1) é a segunda, etc.

Também obténs resultado semelhante com:

LVI.SubItems.Add("texto")


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

ola amigos mais uma vez.

eu estou a inserir os dados numa tabela mas queria por a aparecer uma msgbox se já ouvesse algum fornecedor com aquele código já registado.

já tentei fazer um select mas nao sonsegui por a dar.

alguem me pode dar uma explicaçao??

eu vou postar aqui o meu cod que utilizo para registar..

obg

        ' 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"

        ' Comando que irá inserir dados na tabela "MyTable" em que os campos
        ' "username" e "date" são passados através de parâmetros
        Dim SQL As String = "INSERT INTO fornecedor([codfornecedor], [nome],[morada],[contacto]) VALUES (@cod, @nome,@morada,@contacto);"

        ' 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 que serão inseridos
        command.Parameters.Add("@cod", SqlDbType.Int).Value = cod_forne.Text
        command.Parameters.Add("@nome", SqlDbType.VarChar).Value = nome_forne.Text
        command.Parameters.Add("@morada", SqlDbType.VarChar).Value = morada_for.Text
        command.Parameters.Add("@contacto", SqlDbType.VarChar).Value = contact_forn.Text


        ' Abre a ligação, executa o comando e guarda em "x" o número de registos inseridos
        connection.Open()

        Dim x As Integer = command.ExecuteNonQuery()
        If x < 1 Then
            MessageBox.Show("A operação efectuada não retomou qualquer resultado.")
        Else
            MessageBox.Show("Fornecedor registado com sucesso!!!")
        End If
        cod_forne.Text = ""
        nome_forne.Text = ""
        morada_for.Text = ""
        contact_forn.Text = ""

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Faz um Select count que tenha o código de fornecedor como condição.

Se a resposta for qualquer coisa que não seja zero, significa que já existe.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

olá eu gostava que me tirassem uma duvida.

eu estou a fazer um select á base de dados mas com base nos dados que estou a inserir numa texbox.

haver se só mais explicito.

eu por exemplo tenho duas textbox a textbox codfornecedor e a txt nomefornecedor e por exemplo sei o código do fornecedor que é 123 e ao estar a inserir os dados na textbox codfornecedor ele estar a fazer pesquisa na base de dados sem eu ter que carregar num botão e ao o código estar todo inserido aparecer o nome do fornecedor na txt nomefornecedor.

á alguma propriedade na textbox para estar sempre a fazer esta pesquisa??

obg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Evento TextChanged é disparado sempre que o texto é alterado.

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
'instrucções
    End Sub


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

olá estou com um problema aqui a fazer um select.

eu estou a fazer um select á base de dados quando carrego o formulario. com o seguinte código

 
        ' 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"

        ' Selecção à  tabela "MyTable" em que o campo "username" 
        ' será passado através de parâmetros posteriormente 
        Dim SQL As String = "SELECT * FROM fornecedor "

        ' 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 existam rows (linhas) 
        If reader.HasRows Then

            ' Executa um ciclo nas linhas existentes mostrando o campo “username” 
            While reader.Read()
                'lê os dados que estão na tabela codfornecedor
                Debug.WriteLine(reader.Item("codfornecedor"))
                'uma variavel toma o valor do que leuda tabela
                cod_forne.Text = (reader.Item("codfornecedor"))
                Debug.WriteLine(reader.Item("nome"))
                nome_forne.Text = (reader.Item("nome"))

                Debug.WriteLine(reader.Item("morada"))
                morada_for.Text = (reader.Item("morada"))
                Debug.WriteLine(reader.Item("contacto"))
                contact_forn.Text = (reader.Item("contacto"))


            End While

        End If

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

    Private Sub contact_forn_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles contact_forn.TextChanged
        If Not IsNumeric(Me.contact_forn.Text) Then

            If contact_forn.Text <> "" Then
                MsgBox("Insira apenas numeros no campo contacto.")
                contact_forn.Text = ""

            End If
        End If
    End Sub

    Private Sub nome_forne_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nome_forne.TextChanged
        If IsNumeric(Me.nome_forne.Text) Then

            If nome_forne.Text <> "" Then
                MsgBox("Insira apenas letras no campo nome.")
                nome_forne.Text = ""

            End If
        End If

mas depois no formulario queria colocar um botao para andar para o registo anterior e para o registo seguinte.

como é que posso fazer isso??

obg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

ola pessoal estou aqui com um problema grave.

eu tenho o seguinte código para percorrer os dados na base de dados na tabela fornecedor.

mas se apagar um fornecedor depois já nao consigo andar para a frente nem para trás..

vejam aqui o meu código e digam-me alguma coisa..

obrigado..

Private Sub bt_ant_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_ant.Click
        Dim cod As Integer
        cod = CInt(cod_forne.Text)
        cod = cod - 1

        ' 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"

        ' 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 existam rows (linhas) 
        If reader.HasRows Then

            ' Executa um ciclo nas linhas existentes mostrando o campo “username” 
            While reader.Read()
                'lê os dados que estão na tabela codfornecedor
                Debug.WriteLine(reader.Item("codfornecedor"))
                'uma variavel toma o valor do que leuda tabela
                cod_forne.Text = (reader.Item("codfornecedor"))
                Debug.WriteLine(reader.Item("nome"))
                nome_forne.Text = (reader.Item("nome"))

                Debug.WriteLine(reader.Item("morada"))
                morada_for.Text = (reader.Item("morada"))
                Debug.WriteLine(reader.Item("contacto"))
                contact_forn.Text = (reader.Item("contacto"))


            End While

        End If

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

    End Sub

este código é do botão para andar para tras..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
inginheiiro
Public Function RecordExists(ByRef _SqlConnection As System.Data.SqlClient.SqlConnection, ByVal _SQL As String) As Boolean
    Dim _SqlDataReader As System.Data.SqlClient.SqlDataReader = Nothing
    
    Try
        ' Pass the connection to a command object
        Dim _SqlCommand As New System.Data.SqlClient.SqlCommand(_SQL, _SqlConnection)
        
        ' get query results
            
        _SqlDataReader = _SqlCommand.ExecuteReader()
    Catch _Exception As Exception
        ' Error occurred while trying to execute reader
        ' send error message to console (change below line to customize error handling)
        Console.WriteLine(_Exception.Message)
        
        Return False
    End Try
    
    If _SqlDataReader IsNot Nothing AndAlso _SqlDataReader.Read() Then
        ' close sql reader before exit
        If _SqlDataReader IsNot Nothing Then
            _SqlDataReader.Close()
            _SqlDataReader.Dispose()
        End If
        
        ' record found
        Return True
    Else
        ' close sql reader before exit
        If _SqlDataReader IsNot Nothing Then
            _SqlDataReader.Close()
            _SqlDataReader.Dispose()
        End If
        
        ' record not found
        Return False
    End If
End Function


I used to have a life ... but i bought a programmable machine in 1982 ...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
manuelbarreto

alguem me pode dar uma ajuda que eu continuo com o problema de andar para a frente e para tras por causa de faltar a linha..

obg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Não me digas que tens a connectionstring em todas as funções da aplicação! :D

Podias usar o método do inginheiiro, mas não basta só meteres algo como cod_forne.Text=cod.ToString logo a seguir a cod = cod - 1 para tornar o retrocesso efectivo?

Da maneira que tens isso feito, à luz e à hora a que estou a ver isto, parece que a forma mais fácil para voltares lá cima, caso o HasRows devolva False, ainda é um GoTo (bárbaro!), correndo o risco de empanares isso se não tomares as devidas precauções.

EDIT: Melhor, agora que reparei: no If do HasRows, mete no else cod_forne.Text=cod.ToString para tornar o retrocesso efectivo mesmo que não encontre nada.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Se estiveres mesmo a considerar usar GoTo, eis um exemplo:

        MsgBox("Não volto mais aqui")
voltar:
        MsgBox("Mas isto vou repetir até me cansar!")
        GoTo voltar


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

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.