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

vasco16

sql em vb.net

13 mensagens neste tópico

Boas pessoal, estou a tentar desenvolver uma aplicação em vb.net com uma base de dados em access.. já fiz a conexão através do wizard do vb e para já tudo bem..

mas surgiram-me algumas duvidas.. tenho botões para guardar, apagar, procurar, alterar, e adicionar um novo registo..

Para o botão guardar meti este código:

Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection()
        dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\VASCO\Desktop\Final Domingo\Bless - Gestão de Stands e Oficinas\bin\Debug\Bless - Gestão de Stands & Oficinas.mdb;"

        Dim strQuery As String = "INSERT INTO compras (matricula, marca, modelo) VALUES(@matricula, @marca, @modelo)"
        Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn)

        dbCmd.Parameters.AddWithValue("@matricula", MatriculaTextBox.Text)
        dbCmd.Parameters.AddWithValue("@marca", MarcaTextBox.Text)
        dbCmd.Parameters.AddWithValue("@modelo", ModeloTextBox.Text)


        dbConn.Open()
        dbCmd.ExecuteNonQuery()
        dbCmd = Nothing

        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

    End Sub

esta tudo bem, guarda só que se guardar (carregar) 2 vezes no botão ele vai parar o programa porque a minha base de dados não deixa criar valores duplicados.. como faço para passar por cima disto?:S

Para o botão apagar, pesquisei e encontrei isto:

Delete From nome_tabela Where condicoes_de_selecao 

só que não sei como aplicar na minha situação.. ou seja que argumento meto nas condições de selecção? eu queria por exemplo ao ver uma ficha de entrada que ele apagasse esse registo todo..

penso que o código seria algo do género

Delete From compras Where matriculatextbox = matriculatextbox.text

ou seja iria apagar o registo que estava escrito no campo matricula

Para o botão procurar: não encontrei nada em especifico, o que pretendia era fazer uma espécie de inputbox box que abria uma form ou uma mensagem e que me pedia, neste caso a matricula para puder abrir o registo em questão..

Para o botão alterar usei isto:

UPDATE

[NOME_TABELA]

SET

[NOME_CAMPO] = [EXPRESSÃO][...n]

WHERE
{

[CONDICAO_SQL]

}

só que não sei como aplicar.. sei fazer isto

update compras set matriculatextbox.text = matriculatextbox.text where matriculatextbox.text

mas pelos visto não resultou devo estar a aplicar mal a sintaxe..

quanto ao botão adicionar um novo registo tenho o comando Insert into mas eu ao carregar neste botão queria era que ele limpasse os campos para puder adicionar um novo registo..

Quem tiver a disponibilidade para me ajudar.. agradeço :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

qual e a chave primaria da tua bd?é a matricula?

devias ter criado um idveiculo que podia ser um int de incrementacao automatica

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

qual e a chave primaria da tua bd?é a matricula?

devias ter criado um idveiculo que podia ser um int de incrementacao automatica

eu tenho esse id mas meti a matricula como chave primaria para nao criar valores duplicados..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas com um um auto incrementado nunca há repeticoes...nao faz sentido alterar-se uma chave primaria...

imagina que te enganas na matricula, depois vais ter que modificar a chave primaria, nao e mto correcto

claro que com uma chave primaria sem ser a matricula podes ter 2 repetidas, mas no sql tens de validar se ja existe essa matricula ou nao...

ISSO RESOLVE O TEU ERRO DE CLICAR a segunda vez no botao de insert

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas com um um auto incrementado nunca há repeticoes...nao faz sentido alterar-se uma chave primaria...

imagina que te enganas na matricula, depois vais ter que modificar a chave primaria, nao e mto correcto

claro que com uma chave primaria sem ser a matricula podes ter 2 repetidas, mas no sql tens de validar se ja existe essa matricula ou nao...

ISSO RESOLVE O TEU ERRO DE CLICAR a segunda vez no botao de insert

tens razão num auto incremento nunca ha repetições, mas pode acontecer ter matriculas repetidas :S segundo o teu post posso validar isso, sabes como se faz isso em sql ?:S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens razão num auto incremento nunca ha repetições, mas pode acontecer ter matriculas repetidas :S segundo o teu post posso validar isso, sabes como se faz isso em sql ?:S

Fazes um ExecuteScalar() e verificas se existem registos com a mesma matricula, antes de inserires uma nova.

Já te mostei alguns links de SQL no meu blog, procura lá que explica como se faz.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fazes um ExecuteScalar() e verificas se existem registos com a mesma matricula, antes de inserires uma nova.

Já te mostei alguns links de SQL no meu blog, procura lá que explica como se faz.

mas o problema é que já tenho as relações feitas.. e se mudar a chame primária vou alterar muitas relações :s existe algum problema em deixar a matricula como chave primária?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, eu não disse nada disso.

Tens é de verificar se existe antes de tentares inserir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se ja tens a tua estrutura e nao queres mudar...aplica se o mesmo que te disse e o jpaulino tb... validas se ja existe aquela matricula mesmo sendo ela chave primaria ou nao ..vai dar ao mesmo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao sei se o acess da para fazer stores procedures?sabes se existe? podias criar um em vez de tares a passar a string sql

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao sei se o acess da para fazer stores procedures?sabes se existe? podias criar um em vez de tares a passar a string sql

como nao sei se existe o melhor será passa-lo para string.. podes dar um exemplo de código? :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenta assim, depois diz se deu

Dim strQuery As String = "if not exists (select * from compras where matricula= @matricula)"_

& "BEGIN INSERT INTO compras (matricula, marca, modelo) VALUES (@matricula,@marca,@modelo)END"

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