RECORDSET, PEGAR CAMPO DO ERRO

USUARIO.EXCLUIDOS 12/07/2005 17:09:11
#93718
Olá!

Estou usando o codigo abaixo para modificar um registro:

1 - selecionar uma linha do recordset
sql = sql & "SELECT * FROM [Products] WHERE [ProductID] = " & ProductID
Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseServer
.CursorType = adOpenStatic
.LockType = adLockPessimistic
Set .ActiveConnection = pConnection
.Open sql
End With

2 - proceder com a modificaçao.
With rsEditor
![ProductName] = txtProductName
![UnitPrice] = txtUnitPrice
![Modificado] = txtModificado
.Update
.Close
End With

Até aí tudo bem. O problema é quando acontece um erro: na linha da atualizaçao (.Update) recebo uma mensagem padrão. So que eu quero detectar o erro na linha onde ele ocorreu de fato, ou seja, na linha em que passo o valor para o campo; assim eu poderia tratar o erro antes de chegar em .Update.

Alguém pode me ajudar?

Obrigado.
JEAN.JEDSON 12/07/2005 17:15:06
#93720
bem...
o erro está exatamente no update
tente usar cursortype e locktype diferentes...

AdLockOptimistic
AdLockDynamic


USUARIO.EXCLUIDOS 12/07/2005 17:29:56
#93721
Não, o problema está no primeiro campo (!ProductName = txtProductName). O campo está configurado para não aceitar valor nullo (não pode ficar vazio). Porem, eu quero pegar o erro justamente na linha onde passo o valor para esse campo.
USUARIO.EXCLUIDOS 12/07/2005 17:34:37
#93722
não da para colocar uma rotina antes de salvar?

if trim(txtProductName.text) = "" then
msgbox "campo produto é de preenchimento obrigatorio"
exit sub
end if
JEAN.JEDSON 12/07/2005 17:34:37
#93723
bem... posso estar falando besteira... mas tente:

rsEditor("ProductName") = txtProductName
rsEditor("UnitPrice") = txtUnitPrice
rsEditor("Modificado") = txtModificado
rsEditor.Update
rsEditor.Close

faça sem o with para ver se pega o erro na linha certa
USUARIO.EXCLUIDOS 13/07/2005 13:22:51
#93921
O With não influencia em nada, pois a função dele no código em questão é fazer com que eu não tenha que repeting a palavra rsEditor. Ele é muito util quando tempos que repetir um nome de um controle por varias vezes em um trecho de código.
JEAN.JEDSON 13/07/2005 13:26:40
#93922
não necessariamente, ERIVH JOHMIC
o erro irá acontecer na linha correta - já fiz o teste.
USUARIO.EXCLUIDOS 13/07/2005 14:15:48
#93945
Vou testar, então.
USUARIO.EXCLUIDOS 13/07/2005 14:21:42
#93948
Fiz o teste, e tudo continua como antes, i.e, o erro só foi captado na linha da atualização (rsEditor.Update).
JEAN.JEDSON 13/07/2005 14:23:54
#93949
putz...
vc tentou a dica do WILLIAN? ou então, coloque ![ProductName] = " " & txtProductName

apesar de vc estar apenas burlando a regra - estaria gravando um campo em branco
USUARIO.EXCLUIDOS 13/07/2005 15:21:07
#93970
Ah, sim. Esse é o código que tenho usado para validar os campos do form.

Porém, estou tentando padronizar a validação de tal maneira que não precise escrever um código para cada campo do form. E para isso, preciso resolver este tópico.
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas