• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Cirilo7

Editar/eliminar dados

19 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 = ?"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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??

       

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :D:/

De que maneira é possivel fazer??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

        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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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? ....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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á :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já consegui  :D

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes.me dizer como se faz o reload do datagrid? é que vou precisar noutro form...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link 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