PREVENIR MENSAGEM DE ERRO POR CHAVE PRIMARIA
é 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.
Se for somente um banco de dados ,cria ele como identity!!
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
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
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.
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.
ah sim..... é talvez seja mais simples do que eu tava tentando,
mas dessa maneira, o código de registro, vai entrar automaticamente ao clicar?
mas dessa maneira, o código de registro, vai entrar automaticamente ao clicar?
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?
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?
intendi .so mesmo esse xSql...ele vai ser o que?
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
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
ah pdc.... deu certo..lol....
brigadão...
brigadão...
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