Cirilo7 Posted May 14, 2009 at 08:05 PM Report #264227 Posted May 14, 2009 at 08:05 PM Olá a todos! estou a fazer um projecto em vb2005 com a bd em access. O meu projecto é uma gestao de uma colecção de moedas, e pretendo adicionar, editar, eliminar dados da bd. o codigo que estou a utilizar é o seguinte: Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection() dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\tmn\Documents\Visual Studio 2005\Projects\Testing\Testing\moedas.mdb ;" Dim strQuery As String = "INSERT INTO gescoin (País, Ano, Valor, Estado,Época,Tipo,Valven,Metal,Repetidas,Observações) VALUES(@País, @Ano, @Valor,@Estado,@Época,Tipo,@Valven,@Metal,@Repetidas,@Observações)" Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn) dbCmd.Parameters.AddWithValue("@País", pais.Text) dbCmd.Parameters.AddWithValue("@Ano", ano.Text) dbCmd.Parameters.AddWithValue("@Valor", valor.Text) dbCmd.Parameters.AddWithValue("@Estado", estado.Text) dbCmd.Parameters.AddWithValue("@Época", epoca.Text) dbCmd.Parameters.AddWithValue("@Tipo", tipo.Text) dbCmd.Parameters.AddWithValue("@Valven", valven.Text) dbCmd.Parameters.AddWithValue("@Metal", metal.Text) dbCmd.Parameters.AddWithValue("@Repetidas", repetidas.Text) dbCmd.Parameters.AddWithValue("@Observações", obser.Text) dbConn.Open() dbCmd.ExecuteNonQuery() dbCmd = Nothing ja consigo adicionar, mas queria adicionar uma foto juntamente com os dadps inseridos, mas não sei como fazer! ja consigo fazer o upload da foto mas so me falta guardar a foto juntamente com os dados. Será possivel me ajudarem nesta questão?? Como também é objectivo do meu projecto adicionar/editar dados como é que faço para editar/eliminar os dados utilizando o OLEDB??? conto com a vossa ajuda!! Obrigado Abraços e boas programações
jpaulino Posted May 14, 2009 at 08:32 PM Report #264239 Posted May 14, 2009 at 08:32 PM ja consigo adicionar, mas queria adicionar uma foto juntamente com os dadps inseridos, mas não sei como fazer! ja consigo fazer o upload da foto mas so me falta guardar a foto juntamente com os dados. Será possivel me ajudarem nesta questão?? Guardar imagens em Access não é uma boa ideia (embora possas o fazer). Porque não guardar antes o endereço para a imagem e copias (se necessário) o ficheiro para uma pasta especifica ? Como também é objectivo do meu projecto adicionar/editar dados como é que faço para editar/eliminar os dados utilizando o OLEDB??? O código é muito semelhante e o que muda apenas é o cmmando T-SQL ... por exemplo "UPDATE INTO tabela SET campo1 = ? WHERE ID = ?" "DELETE FROM tabela WHERE ID = ?"
Cirilo7 Posted May 14, 2009 at 08:43 PM Author Report #264243 Posted May 14, 2009 at 08:43 PM pois o endereço podia ser mas tem que ser feito automaticamente, uma vez que, são moedas de fotos e deve ser o utilizador a fazer o upload das mesmas e não ser eu a colocar as fotos numa pasta e colocar o endereço das mesmas em access. Será possivel escolher uma foto e o programa guardar o caminho dela em access? quanto ao código que me deu não tive resultados, nao sei se estou a fazer de forma correcta Codigo delete: Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection() dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\tmn\Documents\Visual Studio 2005\Projects\Testing\Testing\moedas.mdb ;" Dim strQuery As String = " DELETE FROM gescoin WHERE ID= 'País, Ano, Valor, Estado,Época,Tipo,Valven,Metal,Repetidas,Observações' VALUES(@País, @Ano, @Valor,@Estado,@Época,Tipo,@Valven,@Metal,@Repetidas,@Observações)" tenho que colocar aquela cena do dbCmd.Parameters?? o que está mal no código??
jpaulino Posted May 14, 2009 at 10:28 PM Report #264262 Posted May 14, 2009 at 10:28 PM O sintaxe continua errado e sugiro que leias estes dois artigos pois o funcionamento geral é muito semelhante. VB.NET: Gestão de Dados em SQL Server - Parte I VB.NET: Gestão de Dados em SQL Server - Parte II Para apagares deves ter um número único (chave primária) e daí referi o ID. Cria lá esse campo e depois só tens de fazer: Dim strQuery As String = " DELETE FROM gescoin WHERE ID = ?" Depois, nos parameters, apenas defines o ID do registo a apagar.
Cirilo7 Posted May 15, 2009 at 08:41 AM Author Report #264294 Posted May 15, 2009 at 08:41 AM nao percebi muito bem como fazer. o ID deve ser colocado por mim?? é que se for não deve ser assim, uma vez que ao clicar num botão elimina todos os dados que estão visiveis nas textbox. Coloco Dim strQuery As String = " DELETE FROM gescoin WHERE ID= (neste parametro não sei o que colocar)" Tenho uma textbox que me diz o ID, mas não sei como fazer 😄 :/ De que maneira é possivel fazer??
jpaulino Posted May 15, 2009 at 10:00 AM Report #264320 Posted May 15, 2009 at 10:00 AM Se tens um campo como ID (autonumber/chave primária) só precisas de fazer isto sem parameters Dim strQuery As String = " DELETE FROM gescoin WHERE ID = " & Me.TextBoxID.Text
fr Posted May 29, 2009 at 03:02 PM Report #268330 Posted May 29, 2009 at 03:02 PM Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection() 'Na linha de código a cima é declarado um objecto do tipo oledbconection, que vai permitir depois estabelecer uma conexão à base de dados dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\F'\Ambiente de trabalho\PAP\Serralharia1\Serralharia\Serralharia.mdb;" 'String de conexão utilizada para aceder à base de dados, utilizando o provider oledb. Dim strQuery As String = "INSERT INTO unidades (cod_unidade, nome_unidade) VALUES(@cod_unidade, @nome_unidade)" Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn) 'O que se pretende fazer, é declarar uma variável do tipo String, onde é colocada a strind do comando SQL e de seguida será criado um objecto do tipo oledbcommand que irá permitir executar o comando SQL. dbCmd.Parameters.AddWithValue("@cod_unidade", Cod_unidadeTextBox.Text) dbCmd.Parameters.AddWithValue("@nome_unidade", Nome_unidadeTextBox.Text) 'Parte dos parametros, ou seja, é aqui que se faz a correspondência entre as TextBox ou Combobox e os respectivos campos na tabela onde os dados são inseridos. dbConn.Open() dbCmd.ExecuteNonQuery() dbCmd = Nothing 'Na primeira linha abre-se a ligaçao com a base de dados e depois executa se o comando Try MessageBox.Show("Inseriu", "Inseriu", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) Catch ex As Exception MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) End Try tenho este código para inserir dados na base de dados...alguem me sabe dizer o que mudar para adaptar o código permitindo apagar dados da base de dados? agradecia mt a ajuda. Se algum dia alguém lhe disser que o teu trabalho não é o de um profissional, lembra-te : Amadores construíram a Arca de Noé e profissionais, o Titanic
KiNgPiTo Posted June 1, 2009 at 11:07 AM Report #268909 Posted June 1, 2009 at 11:07 AM Penso que apenas tens de mudar a tua query... Ou seja, esta linha ficará mais ou menos assim: Dim strQuery As String = "DELETE FROM unidades WHERE " + nomeColuna + " = '" + dadoPesquisa + "'" onde em nomeColuna pões o nome da coluna onde vai efectuar a pesquisa do dado a eliminar e em dadoPesquisa será então o dado a eliminar
fr Posted June 1, 2009 at 02:09 PM Report #268956 Posted June 1, 2009 at 02:09 PM obrigada 😉 ent e esta conversa toda nao é preciso mudar nada, ou é só a query que se põe? dbCmd.Parameters.AddWithValue("@País", pais.Text) dbCmd.Parameters.AddWithValue("@Ano", ano.Text) dbCmd.Parameters.AddWithValue("@Valor", valor.Text) dbCmd.Parameters.AddWithValue("@Estado", estado.Text) dbCmd.Parameters.AddWithValue("@Época", epoca.Text) dbCmd.Parameters.AddWithValue("@Tipo", tipo.Text) dbCmd.Parameters.AddWithValue("@Valven", valven.Text) dbCmd.Parameters.AddWithValue("@Metal", metal.Text) dbCmd.Parameters.AddWithValue("@Repetidas", repetidas.Text) dbCmd.Parameters.AddWithValue("@Observações", obser.Text) dbConn.Open() dbCmd.ExecuteNonQuery() dbCmd = Nothing Se algum dia alguém lhe disser que o teu trabalho não é o de um profissional, lembra-te : Amadores construíram a Arca de Noé e profissionais, o Titanic
fr Posted June 2, 2009 at 08:07 AM Report #269172 Posted June 2, 2009 at 08:07 AM "DELETE FROM unidades WHERE " + nomeColuna + " = '" + dadoPesquisa + "'" ja fiz isto no meu botao só que nao apaga :S alguem me pode arranjar o codigo todo? é que já inventei bué e nao dá na mesma :/ a minha tabela chama-se unidades e a chave primária é cod_unidade(para o caso de ser necessario) agradecia... Se algum dia alguém lhe disser que o teu trabalho não é o de um profissional, lembra-te : Amadores construíram a Arca de Noé e profissionais, o Titanic
KiNgPiTo Posted June 2, 2009 at 09:39 AM Report #269191 Posted June 2, 2009 at 09:39 AM "DELETE FROM unidades WHERE " + nomeColuna + " = '" + dadoPesquisa + "'" ja fiz isto no meu botao só que nao apaga :S alguem me pode arranjar o codigo todo? é que já inventei bué e nao dá na mesma :/ a minha tabela chama-se unidades e a chave primária é cod_unidade(para o caso de ser necessario) agradecia... Se calhar o porquê de não dar é porque estas a pesquisar com valores numéricos, logo as plicas saem... experimenta: "DELETE FROM unidades WHERE cod_unidade = " numdepesquisa
fr Posted June 2, 2009 at 09:55 AM Report #269195 Posted June 2, 2009 at 09:55 AM em numpesquisa ponho cod_unidadetextbox.text? é a caixa de texto onde se insere a chave primária eu tenho as caixas de texto "cod_unidade","nome_unidade" e tenho o datagridview respectivo quando selecciono uma linha aparece nas caixas d texto os dados que seleccionei depois clico no botao apagar e nao apaga :s um questao. só com este código "DELETE FROM unidades WHERE cod_unidade = " numdepesquisa actualiza a base de dados? nao é preciso fazer connection? .... Se algum dia alguém lhe disser que o teu trabalho não é o de um profissional, lembra-te : Amadores construíram a Arca de Noé e profissionais, o Titanic
fr Posted June 2, 2009 at 01:09 PM Report #269264 Posted June 2, 2009 at 01:09 PM dá erro de sintaxe :S:S Se algum dia alguém lhe disser que o teu trabalho não é o de um profissional, lembra-te : Amadores construíram a Arca de Noé e profissionais, o Titanic
KiNgPiTo Posted June 2, 2009 at 03:36 PM Report #269322 Posted June 2, 2009 at 03:36 PM Vamos por partes 🙂 Supostamente tens uma caixa de texto onde aparece o numero da chave primaria... Podemos apagar por aí: No botão eliminar tira tudo, mesmo tudo eheh e põe só isto: Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection() dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\F'\Ambiente de trabalho\PAP\Serralharia1\Serralharia\Serralharia.mdb;" Dim x As String x = "DELETE FROM unidades WHERE cod_unidade = " & cod_unidade.Text Dim strQuery As String = x Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn) dbConn.Open() dbCmd.ExecuteNonQuery() dbConn.Close() Isto supondo que a caixa de texto onde aparece o valor do cod_unidade seleccionado na tabela se chama "cod_unidade"... Se não no valor de x muda a caixa de texto... Vê la se isto dá 🙂
fr Posted June 3, 2009 at 01:04 PM Report #269626 Posted June 3, 2009 at 01:04 PM já consegui 😄 agr apaga na base de dados do access só que no datagrid nao actualiza :/ penso que se resolve com o reload do datagrid mas alguem sabe fazer?:/ Obrigada Se algum dia alguém lhe disser que o teu trabalho não é o de um profissional, lembra-te : Amadores construíram a Arca de Noé e profissionais, o Titanic
KiNgPiTo Posted June 4, 2009 at 12:04 PM Report #269851 Posted June 4, 2009 at 12:04 PM Ou com o reload, ou ao mesmo tempo que eliminas na BD, eliminas a linha também do datagrid. Adicionas esta linha: DataGridView1.Rows.RemoveAt(NumeroDaLinhaAEliminar)
fr Posted June 4, 2009 at 12:59 PM Report #269863 Posted June 4, 2009 at 12:59 PM podes.me dizer como se faz o reload do datagrid? é que vou precisar noutro form... Se algum dia alguém lhe disser que o teu trabalho não é o de um profissional, lembra-te : Amadores construíram a Arca de Noé e profissionais, o Titanic
KiNgPiTo Posted June 4, 2009 at 02:29 PM Report #269891 Posted June 4, 2009 at 02:29 PM Penso que não exista nenhum método aparente para fazer um reload a um datagrid.. Estás a preencher o datagrid via código ou com a ligação directa feita no design?
fr Posted June 4, 2009 at 02:37 PM Report #269893 Posted June 4, 2009 at 02:37 PM acho que é ligaçao directa :s eu arrasto . eu precisava de fazer uma actualizaçao ao datagridview porque ao fazer essa actualizaçao os dados que vao aparecer nesse datagridview serao diferentes Se algum dia alguém lhe disser que o teu trabalho não é o de um profissional, lembra-te : Amadores construíram a Arca de Noé e profissionais, o Titanic
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