Usuário com melhor resposta
Comunicação banco de dados

Pergunta
-
Bom, Criei um banco Accesse criei algumas textbox e um batao para salvar avançar e voltar (VB 2008)agora eu preciso relacionar essas textbox com os campos do meu bancoe dar as funçoes ao meus botões manualmentecomo faço isso ?obrigado.
Respostas
-
Parceiro o códgo que você exibiu acima provavelmente estará no Evenvto Load do formulário.
Provavelmente você terá dois botões um de salvar e um de excluir, você deve codificar o evento Click deles ou seja, um código que acontecerá sempre que o usuário clicar no botão, para isso basta que você clique duas vezes sobre o respectivo button:
Como a ação dos dois botões irá disparar uma execução no Banco de dados você pode criar um método que executa uma query e pode ser usado no clique dos dois botões, você criará o metódo para evitar duplicar o mesmo código em dois locais distintos:
Então na classe do formário forá de qualquer evento você coloca o seguinte código:
Public Class SeuFormulario
FEito isto você irá codificicar o evento clique dos botões
Public Sub ExecutaConsulta(ByVal sql As String )
Using conn As New OleDbConnection("stringdeConexao" )
Dim cmd As New OleDbCommand(sql, conn)
cmd.CommandType = CommandType.Text
Try
conn.Open()
cmd.Transaction = cmd.Connection.BeginTransaction()
cmd.ExecuteNonQuery()
cmd.Transaction.Commit()
Catch ex As Exception
cmd.Transaction.Rollback()
Throw
Finally
cmd.Dispose()
End Try
End Using
End Sub
'Aqui terá outros eventos como o Load do formulário e o clique dos botões
End Class
Clique Salvar:
Dim sql As String = string .Fomart("UPDATE TABELA SET CAMPO1={0},CAMPO2={1} WHERE IDTABELA={2}" ,txtCampo1.Text,txtCampo2.Text,txtIDTabela.Text);
Try
'Chama o metodo mostrado acima que executárá uma açao de atualização na tabela
ExecutaConsulta(sql)
bs1.EndEdit()
MessageBox.Show("Salvo com Sucesso" )
Catch
MessageBox.Show("Erro ao salvar" )
End Try
Clique Excluir:
Dim sql As String = string .Fomart("DELETE TABELA WHERE IDTABELA={0}" ,txtIDTabela.Text);
Try
ExecutaConsulta(sql)
bs1.RemoveCurrent()
MessageBox.Show("Excluido com Sucesso" )
Catch
MessageBox.Show("Erro ao excluir" )
End Try
Lembrando que as linhas onde é efetuado o comando de banco de dados (UPDATE, DELETE) deve ser adaptado, onde por exemplo
string .Fomart("UPDATE TABELA SET CAMPO1={0},CAMPO2={1} WHERE IDTABELA={2}" ,txtCampo1.Text,txtCampo2.Text,txtIDTabela.Text);
Tabela é o nome da tabela que deseja atualizar, CAMPO1 e CAMPO2 são nomes de exemplos para campos da tabela e IDTABELA é o campo chama primária.
repare ainda que o valor {0} será substituida pelo valor contino na TextBOx txtCampo1.Text, ou seja você deve substituir o nome dos campos e o nome da caixa de texto a qual se refere.
Se o post foi útil marque como resposta. - Advanced Web Application - MCP- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 25 de novembro de 2010 21:38
Todas as Respostas
-
Olá,
Os TextBoxes possuem propriedades chamadas DataBindings que permitem vincula-los com alguma Fonte de Dados, esta fonte de dados pode ser um DataSet, DataTable, BindingSource e Etc.
Eu sugiro que você utilize um BindingSource, pois através dele você já possui metodos para avançar e voltar automaticamente, além de poder ligar-lo com um BindingNavigator que já possui estas funcionalidades nativamente.
Para isto arraste um controle BindingSource (ToolBox / Data) no formulário, vamos supor que o nome será bs1.
Você pode carregar este BindingSource no Load do formulário a partir de um dataSet por exemplo, imagine que o metodo ObterDados abaixo retorna um data set com a lista de registros que você deseja exibir ou uma lista de objetos.
Dim ds1 As DataSet = ObterDados()
bs1.DataSource = ds1
Arraste um controle BindingNavigator (ToolBox / Data) até o formulário, na lista de propriedades altere a propriedade BindingSource para bs1.
Aqui você já possui os dados carregados e o controle que realiza a navegação entre os registros, agora basta ligar os TextBoxes a fonte de dados, para isso
no Load do formulário abaixo do código acima:
txtExemplo.DataBindings.Add("Text",bs1,"CAMPO")
Ou seja, no código acima eu estou ligando a caixa de texto a um contexto de dados,
no DataBindings.Add("Text",bs1,"CAMPO"), o primeiro parâmetro ("Text") define qual a propriedade do controle será alterada de acordo com os dados do banco de dados, o segundo parametro (bs1) é a fonte de dados, e o terceiro é o nome do campo existente no dataset que será exibido na caixa de texto,
Então imagine que você tem um TextBox chamado txtCliente que deve exibir um campo existente em seu dataSet chamado NOME:
txtCliente.DataBindings.Add("Text",bs1,"NOME")
Recaptulando:
-Arraste um controle BindingSource e um BindingNavigator até seu formulário
-Altere a propriedade BindingSource do BindingNavigator para o nome do BindingSource adicionado
-No load, obtenha os dados (através de um dataset, list, array e etc) e atribua-o como datasource de seu BindingSource
-Conecte os campos de texto aos dados através do DataBindings.Add
Se o post foi útil marque como resposta. - Advanced Web Application - MCP- Sugerido como Resposta Marcus Paulo Couto segunda-feira, 19 de outubro de 2009 20:09
-
parei aqui"Dim ds1 As DataSet = ObterDados()bs1.DataSource = ds1"nao entendi o que é esse obter dadoseu fiz um bindingSourcedai comuniquei meu banco de dados la propriedade datasource delee agora ?
e tabem nao entendi o que é esse TEXT aqui olhatxtExemplo.DataBindings.Add("Text",bs1,"CAMPO")ate ai tudo bem, mas preciso que nos meus botões que eu crieieu define o que cada um deles deve fazer, por exemplo um deve salvar o outro avançare assim por dianteobrigado desde ja.to fazendo assimPrivate Sub dobrad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim DataSource1 As DataSet = dados()Binding_Dobrad.DataSource = DataSource1End SubPrivate Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.ClickClose()End SubSub Dados()TextBox1.DataBindings.Add("text", Binding_Dobrad, "Nome")End SubEnd Classnao esta dando certoainda nao fiz o navigator por quero usar os meus botões -
Este ObterDados é um método que retorna um DataTable preenchido de acordo com a consulta que você deseja realizar no banco de dados:
Como você está utilizando o banco de dados access você deve usar o provider OleDb
No Imports:
Imports System.Data
Imports System.Data.OleDb
Código
Function ObterDados() As DataTable Dim conn As New OleDbConnection() conn.ConnectionString = "stringdeconexao" conn.Open() Dim adap as new OleDbDataAdapter("SELECT * FROM TABELA",conn); Dim ds As new DataTable adap.Fill(ds) conn.Close() Return ds End Function
onde "stringdeconexao" você deve informar as informações para conexão ao banco de dados, como nome do servidor, do banco de dados, dados de autenticação e etc.
"SELECT * FROM TABELA" é a consulta que você deseja realizar no banco de dados.
Já o Text que te mostrei aqui:
txtExemplo.DataBindings.Add("Text" ,bs1,"CAMPO")
se refere a propriedade do controle que estará ligado ao campo no banco de dados,neste caso quer dizer que o valor do campo será exibido no texto do TextBox.
Quanto a funcionalidade de avançar já existe por padrão no BindingNavigator
Se o post foi útil marque como resposta. - Advanced Web Application - MCP -
Exemplo de string de conexão:
Autenticação Windows:
Data Source=NOMESERVIDOR;Initial Catalog=NOMEBANCO;Integrated Security=True;
Autenticação Banco de dados:
Data Source=NOMESERVIDOR;Initial Catalog=NOMEBANCO;Password=SENHABANCO;User ID=NOMEUSUARIOBANCO;Persist Security Info=True;
Se o post foi útil marque como resposta. - Advanced Web Application - MCP -
caratem como voce me dar um exemplo geral do codigo como vai ficar ?ta dando erro aquiadap.Fill(ds)o que é esse ds
- Sugerido como Resposta Marcus Paulo Couto terça-feira, 20 de outubro de 2009 13:33
-
ds é um dataTable é a representação de uma tabela de banco de dados na aplicação, para que você possa por exemplo acessar os registros.
qual a mensagem de erro?
verifique a string de conexão e o select
Se o post foi útil marque como resposta. - Advanced Web Application - MCP -
cara, desse jeito nem deu certofiz assim e deuublic Class Frm_dobradDim conn As OleDbConnectionDim adapter As OleDbDataAdapterDim ds As DataSetPrivate Sub dobrad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loadconn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\CadastroDobradiças\Biblioteca_Ferragens\ferragens.mdb")conn.Open()adapter = New OleDbDataAdapter("select * from Dobradiças", conn)ds = New DataSet()Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)adapter.UpdateCommand = builder.GetUpdateCommand()adapter.Fill(ds, "Dobradiças")TextBox1.DataBindings.Add("Text", ds.Tables("Dobradiças"), "Codigo")TextBox2.DataBindings.Add("Text", ds.Tables("Dobradiças"), "Nome")TextBox3.DataBindings.Add("Text", ds.Tables("Dobradiças"), "A")TextBox4.DataBindings.Add("Text", ds.Tables("Dobradiças"), "B")TextBox5.DataBindings.Add("Text", ds.Tables("Dobradiças"), "C")TextBox6.DataBindings.Add("Text", ds.Tables("Dobradiças"), "D")TextBox7.DataBindings.Add("Text", ds.Tables("Dobradiças"), "E")TextBox8.DataBindings.Add("Text", ds.Tables("Dobradiças"), "F")TextBox9.DataBindings.Add("Text", ds.Tables("Dobradiças"), "Descrição")mas agora preciso usar meus botões para avançar salvar voltar e excluiro navigator nao me da a opção de conectar com o data setutilizando dessa formanao queria usar os botões padraoqueria usar o meu, é possivel ?
-
você tentou atribuir o dataSet como datasource do BindingSource, pois ele já possui metodos para manipular os dados nativamente,
por exemplo, o código abaixo pode ser chamado no botão para passar para o proximo registro:
seuBindingSource.MoveNext()
para que isto funcione tente atribuir o DataSet como dataSource do BindingSource da seguinte forma:
seuBindingSource = New BindingSource(ds.Tables("Dobradiças"), "")
E ao usar o DataBindings:
TextBox1.DataBindings.Add("Text", seuBindingSource,"Codigo")
Tenho certeza que é mais fácil manipular os dados usando o BindingSource do que usando diretamente o DataSet
Se o post foi útil marque como resposta. - Advanced Web Application - MCP -
-
Primeiro, você terá de ter um BindingSource adicionado no formulário, imagina que ele se chame bs1:
Dim conn As OleDbConnection Dim adapter As OleDbDataAdapter Dim ds As DataSet Private Sub dobrad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\CadastroDobradiças\Biblioteca_Ferragens\ferragens.mdb") conn.Open() adapter = New OleDbDataAdapter("select * from Dobradiças", conn) ds = New DataSet() Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter) adapter.UpdateCommand = builder.GetUpdateCommand() adapter.Fill(ds, "Dobradiças") bs1 = new BindingSource(ds.Tables("Dobradiças"), "") TextBox1.DataBindings.Add("Text", bs1, "Codigo") TextBox2.DataBindings.Add("Text", bs1, "Nome") TextBox3.DataBindings.Add("Text", bs1, "A") TextBox4.DataBindings.Add("Text", bs1, "B") TextBox5.DataBindings.Add("Text", bs1, "C") TextBox6.DataBindings.Add("Text", bs1, "D") TextBox7.DataBindings.Add("Text", bs1, "E") TextBox8.DataBindings.Add("Text", bs1, "F") TextBox9.DataBindings.Add("Text", bs1, "Descrição")
você pode utilizar um BindingNavigator para realizar a navegação automatica entre os registros, basta arrasta-los da toolBox até o formulário e na janela de propriedades (F4), altera a propriedade BindingSource para o nome do seu BindingSource no exemplo acima seria bs1.
Ou se você quiser criar um botão para passar para o próximo registro, no evento click dele:
bs1.MoveNext()
Se você quiser criar um botão para voltar para o registro anterior, no evento click dele:
bs1.MovePrevious()
Mas o Binding Navigator já tem isto por padrão
Se o post foi útil marque como resposta. - Advanced Web Application - MCP- Marcado como Resposta Bruno Gaiola terça-feira, 20 de outubro de 2009 16:34
- Não Marcado como Resposta Bruno Gaiola quarta-feira, 21 de outubro de 2009 15:07
-
-
Você pode criar um metodo que executa uma determinada query seja ela exclusão ou inserção
Public Sub ExecutaConsulta(ByVal sql As String) Using conn As New OleDbConnection("stringdeConexao") Dim cmd As New OleDbCommand(sql, conn) cmd.CommandType = CommandType.Text Try conn.Open() cmd.Transaction = cmd.Connection.BeginTransaction() cmd.ExecuteNonQuery() cmd.Transaction.Commit() Catch ex As Exception cmd.Transaction.Rollback() Throw Finally cmd.Dispose() End Try End Using End Sub
Ai no clique no botão salvar ou do excluir você monta a consulta Sql, passando como parametro para o método mostrado acima:
Clique Salvar:
Dim sql As String = string.Fomart("UPDATE TABELA SET CAMPO1={0},CAMPO2={1} WHERE IDTABELA={2}",txtCampo1.Text,txtCampo2.Text,txtIDTabela.Text); Try ExecutaConsulta(sql) bs1.EndEdit() MessageBox.Show("Salvo com Sucesso") Catch MessageBox.Show("Erro ao salvar") End Try
Clique Excluir:
Dim sql As String = string.Fomart("DELETE TABELA WHERE IDTABELA={0}",txtIDTabela.Text); Try ExecutaConsulta(sql) bs1.RemoveCurrent() MessageBox.Show("Excluido com Sucesso") Catch MessageBox.Show("Erro ao excluir") End Try
Se o post foi útil marque como resposta. - Advanced Web Application - MCP -
-
O que ele faz é atualizar um registro do banco de dados, onde CAMPO1, CAMPO2 você irá substituir pelo nome dos campos que devem ser atualizados, se existirem mais campos você deve adicionar na query, já IDTABELA é o campo chave primária de sua tabela, repare que o string.Format substituirá {0} por txtCampo1.Text, {1} por txtCampo2.Text e {3} por txtIdTabela.Text, ou seja eu estarei atualizando os campos no banco de dados pelos valores nos TextBoxes.
Se o post foi útil marque como resposta. - Advanced Web Application - MCP -
cara isso nao ta dando certo
Dim conn As OleDbConnection Dim adapter As OleDbDataAdapter Dim ds As DataSet Private Sub dobrad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\CadastroDobradiças\Biblioteca_Ferragens\ferragens.mdb") conn.Open() adapter = New OleDbDataAdapter("select * from Dobradiças", conn) ds = New DataSet() Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter) adapter.UpdateCommand = builder.GetUpdateCommand() adapter.Fill(ds, "Dobradiças") bs1 = new BindingSource(ds.Tables("Dobradiças"), "") TextBox1.DataBindings.Add("Text", bs1, "Codigo") TextBox2.DataBindings.Add("Text", bs1, "Nome") TextBox3.DataBindings.Add("Text", bs1, "A") TextBox4.DataBindings.Add("Text", bs1, "B") TextBox5.DataBindings.Add("Text", bs1, "C") TextBox6.DataBindings.Add("Text", bs1, "D") TextBox7.DataBindings.Add("Text", bs1, "E") TextBox8.DataBindings.Add("Text", bs1, "F") TextBox9.DataBindings.Add("Text", bs1, "Descrição")
esse é meu codigocomo vai ficar esse salvare excluir? -
Parceiro o códgo que você exibiu acima provavelmente estará no Evenvto Load do formulário.
Provavelmente você terá dois botões um de salvar e um de excluir, você deve codificar o evento Click deles ou seja, um código que acontecerá sempre que o usuário clicar no botão, para isso basta que você clique duas vezes sobre o respectivo button:
Como a ação dos dois botões irá disparar uma execução no Banco de dados você pode criar um método que executa uma query e pode ser usado no clique dos dois botões, você criará o metódo para evitar duplicar o mesmo código em dois locais distintos:
Então na classe do formário forá de qualquer evento você coloca o seguinte código:
Public Class SeuFormulario
FEito isto você irá codificicar o evento clique dos botões
Public Sub ExecutaConsulta(ByVal sql As String )
Using conn As New OleDbConnection("stringdeConexao" )
Dim cmd As New OleDbCommand(sql, conn)
cmd.CommandType = CommandType.Text
Try
conn.Open()
cmd.Transaction = cmd.Connection.BeginTransaction()
cmd.ExecuteNonQuery()
cmd.Transaction.Commit()
Catch ex As Exception
cmd.Transaction.Rollback()
Throw
Finally
cmd.Dispose()
End Try
End Using
End Sub
'Aqui terá outros eventos como o Load do formulário e o clique dos botões
End Class
Clique Salvar:
Dim sql As String = string .Fomart("UPDATE TABELA SET CAMPO1={0},CAMPO2={1} WHERE IDTABELA={2}" ,txtCampo1.Text,txtCampo2.Text,txtIDTabela.Text);
Try
'Chama o metodo mostrado acima que executárá uma açao de atualização na tabela
ExecutaConsulta(sql)
bs1.EndEdit()
MessageBox.Show("Salvo com Sucesso" )
Catch
MessageBox.Show("Erro ao salvar" )
End Try
Clique Excluir:
Dim sql As String = string .Fomart("DELETE TABELA WHERE IDTABELA={0}" ,txtIDTabela.Text);
Try
ExecutaConsulta(sql)
bs1.RemoveCurrent()
MessageBox.Show("Excluido com Sucesso" )
Catch
MessageBox.Show("Erro ao excluir" )
End Try
Lembrando que as linhas onde é efetuado o comando de banco de dados (UPDATE, DELETE) deve ser adaptado, onde por exemplo
string .Fomart("UPDATE TABELA SET CAMPO1={0},CAMPO2={1} WHERE IDTABELA={2}" ,txtCampo1.Text,txtCampo2.Text,txtIDTabela.Text);
Tabela é o nome da tabela que deseja atualizar, CAMPO1 e CAMPO2 são nomes de exemplos para campos da tabela e IDTABELA é o campo chama primária.
repare ainda que o valor {0} será substituida pelo valor contino na TextBOx txtCampo1.Text, ou seja você deve substituir o nome dos campos e o nome da caixa de texto a qual se refere.
Se o post foi útil marque como resposta. - Advanced Web Application - MCP- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 25 de novembro de 2010 21:38
-