SABER O ULTIMO CODIGO CADASTRADO - FIREBIRD
Ola.
Tenho uma tabela e o campo codigo é chave primaria e auto-incremental.
Tem como saber, antecipadamente, qual vai ser proximo o valor atribuido ao campo?
Tenho uma tabela e o campo codigo é chave primaria e auto-incremental.
Tem como saber, antecipadamente, qual vai ser proximo o valor atribuido ao campo?
Ola 3lton...
Nao see se tem uma forma mais inteligente de resolver isso...
Mas eu criei uma função que me retorna isso :
Public Function NewPK(ByVal Tabela As String, ByVal Campo As String) As Int64
Dim dt As DataTable
Dim dr As DataRow
Dim Banco As New Camada_Dados
Dim sSQL As String = [Ô]SELECT MAX ([Ô] & Campo & [Ô]) as Numero FROM [Ô] & Tabela
dt = Banco.Executa_Pesquisa(sSQL)
dr = dt.Rows(0)
If dr([Ô]Numero[Ô]).ToString = [Ô][Ô] Then
Return 1
Else
Return dr([Ô]Numero[Ô]) + 1
End If
End Function
Porem tem sua desvantagem dependendo da forma que se usa.....Ex:
Se mais e um cliente buscar o ultimo numero antes que vc grave os dois vao ficar com o mesmo resultado....
Nao see se tem uma forma mais inteligente de resolver isso...
Mas eu criei uma função que me retorna isso :
Public Function NewPK(ByVal Tabela As String, ByVal Campo As String) As Int64
Dim dt As DataTable
Dim dr As DataRow
Dim Banco As New Camada_Dados
Dim sSQL As String = [Ô]SELECT MAX ([Ô] & Campo & [Ô]) as Numero FROM [Ô] & Tabela
dt = Banco.Executa_Pesquisa(sSQL)
dr = dt.Rows(0)
If dr([Ô]Numero[Ô]).ToString = [Ô][Ô] Then
Return 1
Else
Return dr([Ô]Numero[Ô]) + 1
End If
End Function
Porem tem sua desvantagem dependendo da forma que se usa.....Ex:
Se mais e um cliente buscar o ultimo numero antes que vc grave os dois vao ficar com o mesmo resultado....
Você utiliza um GENERATOR neste campo?
Se sim, pode fazer uma consulta do próximo valor deste gerador.
Se sim, pode fazer uma consulta do próximo valor deste gerador.
SELECT GEN_ID(seu_generator, 0) FROM rdb$database
Uso uma função parecida com a do colega IRRV, só que a chamo somente no momento da gravação.
Tópico encerrado , respostas não são mais permitidas