Luisveiga18 Posted March 3, 2013 at 02:12 AM Report #497685 Posted March 3, 2013 at 02:12 AM 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
Paulo Cabral Posted March 3, 2013 at 02:35 AM Report #497688 Posted March 3, 2013 at 02:35 AM A chave primaria id deve se colocada automaticamente, sendo auto_incrementada .. assim não tens o problema de adicionar resgistos com id iguais ...
bioshock Posted March 3, 2013 at 11:32 AM Report #497709 Posted March 3, 2013 at 11:32 AM https://wiki.portugal-a-programar.pt/dev_geral/bases_de_dados/principios/
NunoDinis Posted March 3, 2013 at 12:05 PM Report #497715 Posted March 3, 2013 at 12:05 PM 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
acao Posted March 7, 2013 at 11:56 PM Report #498416 Posted March 7, 2013 at 11:56 PM 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
Luisveiga18 Posted March 12, 2013 at 04:00 PM Author Report #498887 Posted March 12, 2013 at 04:00 PM (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 March 12, 2013 at 04:29 PM by Caça GeSHi
thoga31 Posted March 12, 2013 at 06:50 PM Report #498927 Posted March 12, 2013 at 06:50 PM GoTo? Não utilizem Goto... esparguete é para a bolonhesa, não para um código-fonte. Knowledge is free!
acao Posted March 13, 2013 at 01:53 PM Report #499040 Posted March 13, 2013 at 01:53 PM boas passa aqui: http://www.macoratti.net/vbn_str.htm cumps acao
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now