Jump to content
Luisveiga18

Erros personalizados

Recommended Posts

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

Share this post


Link to post
Share on other 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 ...

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Edited by Caça
GeSHi

Share this post


Link to post
Share on other sites
thoga31

GoTo? Não utilizem Goto... esparguete é para a bolonhesa, não para um código-fonte.


Knowledge is free!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.