GARANTIR DESCONTO

Fórum Erro Field num: 1 not found #346385

21/09/2007

0

Saudações!!!


Estou desenvolvendo uma aplicativo para um protético, onde utilizo delphi 2006 - firebird 2.0 - DBXPRESS. Na tela de abertura de conta, é feito o lançamento de trabalhos solicitados a ele pelos clientes. Então, ao incluir o trabalho, este é mostrado no dbgrid.

O código utilizado no botão incluir é o seguinte:

begin
if not ValidaCampos then
exit;

preco_unit := RemoveFormatoMoeda(dbedtPrecoUnit.Text);
total := RemoveFormatoMoeda(dbedtTotal.Text);

try
IniciaTransacao;
if dmCadastro.ModoDataSet = dsInsert then
IncluiItem
else if dmCadastro.ModoDataSet = dsEdit then
AlteraItem;
ConfirmaTransacao;
MostraItens;
except
on E : Exception do
begin
application.MessageBox(pchar(E.Message), ´Erro de Gravação´, MB_OK + MB_ICONERROR);
CancelaTransacao;
exit;
end;
end;
EstadoBotoes(dsBrowse);
HabilitaDesabilitaCampos(false, 1);
end;


Quando eu lanço o primeiro trabalho, funciona perfeitamente, agora quando lanço o segundo para a mesma conta, aparece um erro de falha catastrófica. Ao fazer a depuração, o erro é apontado para a linha da procedure MostraItens, com a seguinte mensagem ´Field num: 1 not found´

O código utilizado para a procedure MostraItens é o seguinte:
begin
with dmConta.cdsMostraItens do
begin
close;
params.ParamByName(´ID_CONTA´).AsInteger := strtoint(dbtxtNroConta.Caption);
open;
if dmConta.cdsMostraItens.RecordCount > 1 then
last;
end;
end;

O commandtext deste clientdataset é o seguinte:

select I.ID_ITEM_CONTA, T.DESCR_TRAB, I.PRECO_UNIT, I.QUANTIDADE, I.TOTAL, I.NOME_PACIENTE from ITENS_CONTAS I inner join TRABALHOS T on (I.ID_TRABALHO = T.ID_TRABALHO) where ID_CONTA = :ID_CONTA

Realmente, não sei o por quê deste erro. Eu já fiz outros trabalhos semelhantes a este e nunca tive problemas.

No aguardo.

[]´s

Rogério


Roger1976

Roger1976

Responder

Posts

21/09/2007

Roger1976

Caros amigos, eu encontrei a solução para o meu problema. Eu alterei a procedure MostraItens

[b:b9b9e0ca5a]Antes[/b:b9b9e0ca5a]
procedure TfrmAberturaConta.MostraItens;
begin
with dmConta.cdsMostraItens do
begin
close;
params.ParamByName(´ID_CONTA´).AsInteger := strtoint(dbtxtNroConta.Caption);
open;
last;
end;
end;

[b:b9b9e0ca5a]Depois[/b:b9b9e0ca5a]
procedure TfrmAberturaConta.MostraItens;
with dmConta.cdsMostraItens do
begin
close;
commandtext := ´´;
commandtext := ´select I.ID_ITEM_CONTA, I.ID_TRABALHO, T.DESCR_TRAB, I.PRECO_UNIT, ´ +
´I.QUANTIDADE, I.TOTAL, I.NOME_PACIENTE ´ +
´from ITENS_CONTAS I inner join TRABALHOS T on ´ +
´(I.ID_TRABALHO = T.ID_TRABALHO) ´ +
´where ID_CONTA = ´ + dbtxtNroConta.Caption;
strtoint(dbtxtNroConta.Caption);
open;
last;
end;
end;

Sinceramente, não tenho neste momento uma explicação lógica, gostaria de saber da opinião de vcs e se tiver uma sugestão melhor, por favor, postem.

Obrigado.

Rogério


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar