PREVENIR MENSAGEM DE ERRO POR CHAVE PRIMARIA

THULIO 16/02/2011 15:24:35
#365641
é o seguinte! Estou montando um banco de dado para cadastrar boletos, porém usando o código de registro como chave primária, não tem como o código repetir, consequentemente se isso acontecer, vai gerar um erro. Preciso saber como prevenir esse erro.
PARREIRA 16/02/2011 15:31:48
#365643
Se for somente um banco de dados ,cria ele como identity!!
THULIO 16/02/2011 15:34:30
#365644
Não não, acho que expliquei mal,
criei o formulario no vb...tudo certinho e tals..
entao quando vo cadastrar um boleto, tem o codigo de registro, sendo esse codigo chave primaria ...
não pode ser igual, quando ele é igual, assim que a pessoa clicar em gravar,
da a mensagem de erro e tals,
o que eu quero é ...antes de executar o comando gravar.... ele verifique se o codigo jã nao existe, se existir, da a mensagem de codigo existente, se não, executa o comando gravar
PARREIRA 16/02/2011 15:37:30
#365645
Se o seu segue de forma crescente?
Se sim você pode dar um Select Top 1 Codigo na sua tabela order by codigo desc
E verificar se igual se for você acrescenta + 1.
THULIO 16/02/2011 15:42:49
#365648
ah sim..... é talvez seja mais simples do que eu tava tentando,
mas dessa maneira, o código de registro, vai entrar automaticamente ao clicar?
PARREIRA 16/02/2011 15:46:27
#365649
Seria assim.
DIM COD AS INTEGER [ô] OU DEPENDE DO SEU NUMERO
xSql = [Ô]SELECT TOP 1 CODIGO FROM TBL_TABELA WHERE CODIGO =[Ô] & SEUCODIGOATUAL
xSql = xSql & [Ô]ORDER BY CODIGO DESC[Ô]
RS.Open xSql, DB_Base, adOpenKeyset [ô] SEU RECORDSET

If RS.RecordCount <= 0 Then
Cod = 1
Else
Cod = RS!CODIGO + 1
End If

Entendeu?
THULIO 16/02/2011 15:48:07
#365653
intendi .so mesmo esse xSql...ele vai ser o que?
PARREIRA 16/02/2011 15:51:04
#365657
Resposta escolhida
Xsql na verdade é uma variavel do tipo string que vai guardar o select,é que ali ela não está declarada.Mas você pode declarar o nome que quiser como sql,ssql, e assim vai..
Mas ficaria assim.

DIM COD AS INTEGER [ô] OU DEPENDE DO SEU NUMERO
DIM xsql as string

xSql = [Ô]SELECT TOP 1 CODIGO FROM TBL_TABELA WHERE CODIGO =[Ô] & SEUCODIGOATUAL
xSql = xSql & [Ô]ORDER BY CODIGO DESC[Ô]
RS.Open xSql, DB_Base, adOpenKeyset [ô] SEU RECORDSET

If RS.RecordCount <= 0 Then
Cod = 1
Else
Cod = RS!CODIGO + 1
End If

THULIO 16/02/2011 15:52:53
#365659
ah pdc.... deu certo..lol....
brigadão...
THULIO 16/02/2011 15:55:46
#365663
nao ... nao pode repetir o codigo não...tem que ser um codigo por registro sem repetição
Tópico encerrado , respostas não são mais permitidas