viegasss Posted July 11, 2014 Report Share Posted July 11, 2014 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 More sharing options...
nelsonr Posted July 11, 2014 Report Share Posted July 11, 2014 Boas, julgo que esse conecta deve ser do tipo OleDbConnection, correcto? Terás de usar o ExecuteReader do OleDbCommand. Vê aqui um exemplo: http://msdn.microsoft.com/en-us/library/979byfca%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2 Link to comment Share on other sites More sharing options...
viegasss Posted July 11, 2014 Author Report Share Posted July 11, 2014 tive que importar isto Imports System.Data.OleDb Eu tenho este código mas ele nao executa Dim query1 As String = "SELECT nome FROM refeicao WHERE cod_butao=1" Dim da As New SqlClient.SqlDataAdapter(query1, conecta.Database) Link to comment Share on other sites More sharing options...
nelsonr Posted July 11, 2014 Report Share Posted July 11, 2014 Não precisas de usar um sqldataadapter, viste o exemplo no link que coloquei? Link to comment Share on other sites More sharing options...
viegasss Posted July 11, 2014 Author Report Share Posted July 11, 2014 vi! mas não percebi onde eu coloco a minha QEURY! Link to comment Share on other sites More sharing options...
nelsonr Posted July 11, 2014 Report Share Posted July 11, 2014 Tens a variavel queryString Link to comment Share on other sites More sharing options...
viegasss Posted July 11, 2014 Author Report Share Posted July 11, 2014 queryString = (AO MEU SELECT) É ISTO ? Link to comment Share on other sites More sharing options...
nelsonr Posted July 11, 2014 Report Share Posted July 11, 2014 Podes por diretamente no comando: Dim command As New OleDbCommand("SELECT * FROM TABELA", connection) Link to comment Share on other sites More sharing options...
viegasss Posted July 11, 2014 Author Report Share Posted July 11, 2014 e se eu pretender fazer 20 ? vou ter que executar aquele código 20x ??? Link to comment Share on other sites More sharing options...
nelsonr Posted July 11, 2014 Report Share Posted July 11, 2014 20 selects diferentes? Sim, em principio terás de fazer 20 comandos. Mas so vendo exactamente que queries queres Link to comment Share on other sites More sharing options...
viegasss Posted July 11, 2014 Author Report Share Posted July 11, 2014 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 More sharing options...
nelsonr Posted July 11, 2014 Report Share Posted July 11, 2014 Tens de tomar atenção ao exemplo. Onde está ai o execute reader? Link to comment Share on other sites More sharing options...
viegasss Posted July 11, 2014 Author Report Share Posted July 11, 2014 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 More sharing options...
viegasss Posted July 11, 2014 Author Report Share Posted July 11, 2014 (edited) consegues ? Edited July 11, 2014 by viegasss Link to comment Share on other sites More sharing options...
nelsonr Posted July 11, 2014 Report Share Posted July 11, 2014 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 More sharing options...
pedropcruz Posted July 11, 2014 Report Share Posted July 11, 2014 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 More sharing options...
viegasss Posted July 11, 2014 Author Report Share Posted July 11, 2014 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 More sharing options...
nelsonr Posted July 11, 2014 Report Share Posted July 11, 2014 Tomem atenção ao codigo que escrevem. Estão a usar a variavel queryString antes de preencherem com o que pretendem Link to comment Share on other sites More sharing options...
viegasss Posted July 11, 2014 Author Report Share Posted July 11, 2014 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 More sharing options...
nelsonr Posted July 11, 2014 Report Share Posted July 11, 2014 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now