Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Luisveiga18

Erros personalizados

Mensagens Recomendadas

Luisveiga18

Bom o que eu cria deve ser simples só que não sei bem como fazer. Como todos devem saber não podemos ter duas chaves primarias iguais na mesma tabela, bom eu tenho um programa com uma ligação criada a uma base de dados access e na altura de adicionar um novo registo cria que ele desse uma mensagem de erro em caso da chave primaria (id) já exista na tabela.

Também estou a usar maskedtextboxs para obrigar a introduzir apenas um certo modelo de dados, como um numero de telefone, mas estou com um problema, mesmo que eles bloqueiem a introdução de certos carateres eu estou a conseguir enviar para a base de dados números de telefone imcompletos, ou seja, em vez de serem 9 digitos podem ir só 2 ou 3, e eu também quero que apareça uma mensagem de erro para impedir esta situação

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Paulo Cabral

A chave primaria id deve se colocada automaticamente, sendo auto_incrementada .. assim não tens o problema de adicionar resgistos com id iguais ...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis

Também estou a usar maskedtextboxs para obrigar a introduzir apenas um certo modelo de dados, como um numero de telefone, mas estou com um problema, mesmo que eles bloqueiem a introdução de certos carateres eu estou a conseguir enviar para a base de dados números de telefone imcompletos, ou seja, em vez de serem 9 digitos podem ir só 2 ou 3, e eu também quero que apareça uma mensagem de erro para impedir esta situação

Porque não deves estar a fazer qualquer tipo de validação antes de fazer a query..


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

Bom o que eu cria deve ser simples só que não sei bem como fazer. Como todos devem saber não podemos ter duas chaves primarias iguais na mesma tabela, bom eu tenho um programa com uma ligação criada a uma base de dados access e na altura de adicionar um novo registo cria que ele desse uma mensagem de erro em caso da chave primaria (id) já exista na tabela.

podes colocar a chave id auto-incrementada como já te foi depois verificas com um select se o numero de telefonese já existe,

Também estou a usar maskedtextboxs para obrigar a introduzir apenas um certo modelo de dados, como um numero de telefone, mas estou com um problema, mesmo que eles bloqueiem a introdução de certos carateres eu estou a conseguir enviar para a base de dados números de telefone imcompletos, ou seja, em vez de serem 9 digitos podem ir só 2 ou 3, e eu também quero que apareça uma mensagem de erro para impedir esta situação

aqui usa a função len para verificar se tem 9 digitos.

cumps

acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Luisveiga18

podes colocar a chave id auto-incrementada como já te foi depois verificas com um select se o numero de telefonese já existe,

aqui usa a função len para verificar se tem 9 digitos.

cumps

acao

Bom nunca tinha usado esta função e foi dar uma pesquisada para ver se a compreendia. Mas não a entendi lá muito bem a não a consegui aplicar. Guiei-me por aqui - http://msdn.microsoft.com/pt-br/library/dxsw58z6(v=vs.90).aspx

Atenção o código abaixo incluem o Len e o meu código de adicionar dados.

Dim LenTB As String = Len(9)
 Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Luis\Desktop\PAP 2012-2013\Resgest\ResgestDB.accdb")
 Dim query As String = "INSERT INTO Clientes ([iDCliente], [Nome], [Morada], [CodigoPostal], [Localidade], [Email], [Telefone]) VALUES (@IDCliente, @Nome, @Morada, @CodigoPostal, @Localidade, @Email, @Telefone)"
 Dim command As New OleDbCommand(query, ConnectionString)
 command.Parameters.Add("@IDCliente", OleDbType.Integer).Value = IDClienteTB.Text
 command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTB.Text
 command.Parameters.Add("@Morada", OleDbType.VarChar).Value = MoradaTB.Text
 command.Parameters.Add("@CodigoPostal", OleDbType.VarChar).Value = CodigoPostalTB.Text
 command.Parameters.Add("@Localidade", OleDbType.VarChar).Value = LocalidadeTB.Text
 command.Parameters.Add("@Email", OleDbType.VarChar).Value = EmailTB.Text
 command.Parameters.Add("@Telefone", OleDbType.VarChar).Value = TelefoneTB.Text

 If IDClienteTB.Text = "" Or NomeTB.Text = "" Or MoradaTB.Text = "" Or CodigoPostalTB.Text = "" Or LocalidadeTB.Text = "" Or EmailTB.Text = "" Or TelefoneTB.Text = "" Then
	 MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
	 GoTo Loop_Strat
 End If
 If TelefoneTB.Text = LenTB Then
	 GoTo Loop_Strat2
 Else
	 GoTo Loop_Strat
	 MsgBox("Teste")
Loop_Strat2:
 End If
 ConnectionString.Open()
 Dim x As Integer = command.ExecuteNonQuery()
 If x < 1 Then
	 MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
 Else
	 MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
	 LocalidadeTB.Text = ""
	 NomeTB.Text = ""
	 MoradaTB.Text = ""
	 CodigoPostalTB.Text = ""
	 EmailTB.Text = ""
	 TelefoneTB.Text = ""
	 IDClienteTB.Text = ""
 End If
 ConnectionString.Close()
 command = Nothing
Loop_Strat:
End Sub

Editado por Caça
GeSHi

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.