ERRO NO REGISTRO

USUARIO.EXCLUIDOS 21/04/2007 18:54:07
#213167
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:

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

USUARIO.EXCLUIDOS 21/04/2007 19:16:19
#213168
Resposta escolhida
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
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".

USUARIO.EXCLUIDOS 21/04/2007 19:31:22
#213170
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

USUARIO.EXCLUIDOS 21/04/2007 19:36:40
#213171
Tentei todas as auternativas, veja o erro quando chamo a função:

Error # 3001 Argumento inválido.
USUARIO.EXCLUIDOS 21/04/2007 19:46:02
#213172
Qual banco vc esta usando?
Poste essa parte do código e indique exatamente onde é indicado erro.
USUARIO.EXCLUIDOS 21/04/2007 19:49:43
#213173
Access2000

USUARIO.EXCLUIDOS 21/04/2007 19:58:52
#213174
OK, cade a parte do código onde é apontado o erro?

USUARIO.EXCLUIDOS 21/04/2007 20:05:07
#213175
Não aponta o erro!!!


USUARIO.EXCLUIDOS 21/04/2007 20:26:07
#213177
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.
USUARIO.EXCLUIDOS 21/04/2007 20:35:00
#213178
Este erro não aparece na linha, só é reportado a mensagem e fecha o form.
USUARIO.EXCLUIDOS 21/04/2007 20:51:55
#213179
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.

Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas