Jump to content

Recommended Posts

Posted

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

Posted

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

Posted

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

Posted (edited)

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.