ERRO NO REGISTRO
Pessoal, eu de novo
Veja o Codigo abaixo e tente me explicar onde está o erro:
quando chamo a função tudo funciona bem até certo número de registro, depois para de gerar um novo numero baseado (soma de +1) no ultimo codigo, gerando somente o mesmo;
exemplo:
UltimoVoucher = 11186
o certo seria proximo = 11187
então estagnou no 11186
Veja a função:
Já tentei varias, a que funcionou melhor foi esta:
Marcelino Neto
VB6.0
Access2000
Dao
Veja o Codigo abaixo e tente me explicar onde está o erro:
quando chamo a função tudo funciona bem até certo número de registro, depois para de gerar um novo numero baseado (soma de +1) no ultimo codigo, gerando somente o mesmo;
exemplo:
UltimoVoucher = 11186
o certo seria proximo = 11187
então estagnou no 11186
Veja a função:
Já tentei varias, a que funcionou melhor foi esta:
Public Function Reg()
Dim UltimoRegistro As Recordset
Set UltimoRegistro = CpnInfo.OpenRecordset("TblParametros", dbOpenTable)
UltimoRegistro.MoveLast
txtUltimo.Text = UltimoRegistro!UltimoVoucher
txtVoucher.Text = txtUltimo + 1
End Function
Marcelino Neto
VB6.0
Access2000
Dao
Ao gravar registros num banco de dados são usados os espaços livres dentro das páginas de dados, logo, os registros são armazenados de forma aleatória (nunca sequencialmente). Sendo assim ao recuperar (ler) os regitros irão retornar na sequência que foram gravados, ou na sequência fisÃÂÂca do ÃÂÂndice usado na resolução da consulta (quando isso for aplicavel).
Se a ordem dos registros for importante deve-se evitar abrir o recordset fornecendo o nome de uma tabela, trocando por uma consulta e fornecendo as colunas que devem ser ordenadas.
Troque
Por
Ou
ou ainda
Troque o tipo do campo UltimoVoucher para "auto numerador".
Se a ordem dos registros for importante deve-se evitar abrir o recordset fornecendo o nome de uma tabela, trocando por uma consulta e fornecendo as colunas que devem ser ordenadas.
Troque
Set UltimoRegistro = CpnInfo.OpenRecordset("TblParametros", dbOpenTable)
Por
Set UltimoRegistro = CpnInfo.OpenRecordset("SELECT TOP 1 UltimoVoucher FROM TblParametros ORDER BY UltimoVoucher DESC", dbOpenDynamic)
Ou
Set UltimoRegistro = CpnInfo.OpenRecordset("SELECT Max(UltimoVoucher) FROM TblParametros", dbOpenDynamic)
ou ainda
Troque o tipo do campo UltimoVoucher para "auto numerador".
Uma pequena correção:
Defina um alias (apelido) para o campo retornado se for usar a segunda opção.
"SELECT Max(UltimoVoucher) AS Ultimo FROM TblParametros"
txtUltimo.Text = UltimoRegistro!Ultimo
Defina um alias (apelido) para o campo retornado se for usar a segunda opção.
"SELECT Max(UltimoVoucher) AS Ultimo FROM TblParametros"
txtUltimo.Text = UltimoRegistro!Ultimo
Tentei todas as auternativas, veja o erro quando chamo a função:
Error # 3001 Argumento inválido.
Error # 3001 Argumento inválido.
Qual banco vc esta usando?
Poste essa parte do código e indique exatamente onde é indicado erro.
Poste essa parte do código e indique exatamente onde é indicado erro.
Access2000
OK, cade a parte do código onde é apontado o erro?
Não aponta o erro!!!
Quando ocorre um erro no VB na execução em modo de depuração a execução para na linha onde o erro ocorreu.
Poste esse trecho do código.
Poste esse trecho do código.
Este erro não aparece na linha, só é reportado a mensagem e fecha o form.
Se você não tem essa informação não tenho como te ajudar.
Pressione F8 e execute o código em modo depuração (linha a linha) e obtenha a linha onde está ocorrendo o erro. E não esqueça de postar esse trecho de código.
Pressione F8 e execute o código em modo depuração (linha a linha) e obtenha a linha onde está ocorrendo o erro. E não esqueça de postar esse trecho de código.
Tópico encerrado , respostas não são mais permitidas