Jump to content

Query


viegasss
 Share

Recommended Posts

Bom dia,

já andei a investigar e ainda não encontrei um exemplo que me ajudasse,

o meu problema é o seguinte,

queria saber como fazer um (SELECT) ou seja fazer uma QUERY que vá à minha base de dados buscar e que guarde isso numa textbox.

se alguém souber que diga sff,

Este é o meu código para funcionar

 Public Sub Conectar()
conecta.Close()
conecta.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Luis\Desktop\ESTÁGIO - CAMARA MUNICIPAL\CM-CANTINA-MUNICIPAL\cm_cantina_1.accdb;")
conecta.Open()
comando.Connection = conecta
End Sub

este é o código que utilizo para testar a ligação, e neste momento está OK

' Procedimento para testar conexão da base de dados
Public Sub testaconexao()
 Try
   Conectar()
   MsgBox("Conexão realizada com sucesso!!!")
   Catch ex As Exception
   MsgBox("Não foi possível ligar à base de dados")
   Desconectar()
 End Try

End Sub

atentamente,

Luis Viegas

Link to comment
Share on other sites

  • Replies 75
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Public Sub CreateReader(ByVal connectionString As String, _
ByVal queryString As String)

Using connection As New OleDbConnection(connectionString)
Dim command As New OleDbCommand("SELECT nome FROM refeicao WHERE cod_butao=1", connection)

connection.Open()

tipo_refeicao(0) = command

End Using
End Sub

o tipo_refeicao(0) é um array onde vai guardar os valores e por sua vez coloca-o numa textbox.

o código não dá erro,

mas não apresenta valores

Link to comment
Share on other sites

 Public Sub CreateReader(ByVal connectionString As String, _
ByVal queryString As String)

Using connection As New OleDbConnection(connectionString)
Dim command As New OleDbCommand(queryString, connection)

queryString = ("SELECT nome FROM refeicao WHERE cod_butao=1")
connection.Open()

Dim reader As OleDbDataReader = command.ExecuteReader()

tipo_refeicao(0) = reader(0)

End Using

Coloquei assim mas não esta a funcionar, podes-me fazer um exemplo ?

Link to comment
Share on other sites

Repara bem na ordem do que estás a fazer.

Estás a atribuir o conteudo à variavel queryString depois de a associares ao command.

E já agora, depois de atribuires o reader ao resultado do command.ExecutReader, tens de fazer o reader.Read(), para ler o primeiro registo

Link to comment
Share on other sites

Pegando neste exemplo teu, vou fazer como eu faria.

Public Sub CreateReader(ByVal connectionString As String, ByVal queryString As String)

Using connection As New OleDbConnection(connectionString)
Dim Rs as OleDbDataReader
Dim command As New OleDbCommand(queryString, connection)

queryString = ("SELECT nome FROM refeicao WHERE cod_butao=1", connectionString) -- Aqui deves referir que comando queres executar no SQL e por a tua ligação --
Rs = command.Executereader -- Aqui tens de abrir um reader, não usando o Open, mas sim o Execute Reader. Caso pretendesses alterar dados, usa-se o ExecuteNonQuery --

If Rs.HasRows Then -- Aqui vê se os dados do SQL existe "Linhas" --
    if Rs.Read Then -- Aqui vai ver se o teu DataReader está aberto (sim, porque usou-se um ExecuteReader) --
        if Not isDBNull(Rs.Item("nome") Then
               --Aqui será código que queres fazer o teu select para um controlo, por exemplo, uma label--
        end if
    end if
end if

End Sub

E pronto, se algum admin puder editar e por a parte de código em código do fórum, agradecia que esta formatação do fórum é um pouco maluca lol

www.pedropcruz.pt - Website Pessoal

Link to comment
Share on other sites

Public Sub CreateReader(ByVal connectionString As String, ByVal queryString As String)

Using connection As New OleDbConnection(connectionString)
Dim Rs As OleDbDataReader
Dim command As New OleDbCommand(queryString, connection)

queryString = ("SELECT nome FROM refeicao WHERE cod_butao=1")(connectionString) ' Aqui deves referir que comando queres executar no SQL e por a tua ligação --
Rs = command.ExecuteReader ' Aqui tens de abrir um reader, não usando o Open, mas sim o Execute Reader. Caso pretendesses alterar dados, usa-se o ExecuteNonQuery --

If Rs.HasRows Then ' Aqui vê se os dados do SQL existe "Linhas" --
If Rs.Read Then ' Aqui vai ver se o teu DataReader está aberto (sim, porque usou-se um ExecuteReader) --
If Not IsDBNull(Rs.Item("nome")) Then
tipo_refeicao(0) = queryString 'Aqui será código que queres fazer o teu select para um controlo, por exemplo, uma label--
End If
End If
End If
End Using
End Sub

Eu devo estar a fazer alguma coisa mal, porque ele nao esta a dar

eu quero guardar o select no array e por sua vez o array envia para a textbox ou label

Public Sub CreateReader(ByVal connectionString As String, ByVal queryString As String)

Using connection As New OleDbConnection(connectionString)
Dim Rs As OleDbDataReader
Dim command As New OleDbCommand(queryString, connection)

queryString = ("SELECT nome FROM refeicao WHERE cod_butao=1")(connectionString) ' Aqui deves referir que comando queres executar no SQL e por a tua ligação --
Rs = command.ExecuteReader ' Aqui tens de abrir um reader, não usando o Open, mas sim o Execute Reader. Caso pretendesses alterar dados, usa-se o ExecuteNonQuery --

If Rs.HasRows Then ' Aqui vê se os dados do SQL existe "Linhas" --
If Rs.Read Then ' Aqui vai ver se o teu DataReader está aberto (sim, porque usou-se um ExecuteReader) --
If Not IsDBNull(Rs.Item("nome")) Then
tipo_refeicao(0) = queryString 'Aqui será código que queres fazer o teu select para um controlo, por exemplo, uma label--
End If
End If
End If
End Using
End Sub

Eu devo estar a fazer alguma coisa mal, porque ele nao esta a dar

eu quero guardar o select no array e por sua vez o array envia para a textbox ou label

Link to comment
Share on other sites

Tomem atenção ao codigo que escrevem.

Estão a usar a variavel queryString antes de preencherem com o que pretendem

queryString = ("SELECT nome FROM refeicao WHERE cod_butao=1")(connectionString)

Este pedaço de código vai buscar a minha base de dados o respectivo dado e guarda-o na queryString

Link to comment
Share on other sites

Se for so para ler um campo de um registo, usando o ExecuteScalar simplificava.

No entanto é melhor aprenderes logo a usar o ExecuteReader.

Deve ser algo assim (nao testado):

Using connection As New OleDbConnection(connectionString)
   connection.Open()
   Dim Rs as OleDbDataReader = New OleDbCommand("SELECT nome FROM refeicao WHERE cod_butao=1", connection).ExecuteReader()
   If Rs.Read Then
       tipo_refeicao(0) = res("nome")
   End if
   Rs.Close
End Using
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.