Problemas com sql em classes :(

25/03/2003

0

[color=indigo:6a02dcd1d7]
estou fazendo um projeto para um banco de sangue, mas estou com problemas, poderiam me ajudar???
:cry:
num projeto tenho a acão de liberar uma bolsa de sague:
para isso temos essa função:

Case acao of
taLiberar:
begin {if acao liberar}
if sgComp.ColorCell[ColComp,Lindoa] = CORSEMREJEICAO then
begin
sgComp.ColorCell[ColComp,Lindoa]:=CORLIBERADO;
sgComp.ColorCell[ColComp+1,Lindoa]:=CORLIBERADO;
sgComp.Row:=lindoa;
if sgComp.ColorCell[ColComp+1,Lindoa]=CORLIBERADO then
begin
Movimentacao.TipoMovimentacao.ler(14); //Entrada em Estoque
Movimentacao.ItemEstoque.StatusEstoque.Ler(8);
movimentacao.ItemEstoque.SUS:=doacao.SUS;
movimentacao.gravar; {naum grava por causa q algo estah zerando a chave do sus}
end;
end {if corsemrejeicao}



if sgComp.ColorCell[ColComp,Lindoa] = CORSEMREJEICAO then ---> significa q o sangue soh poderá ser liberado quando a célula do grid estiver branca, sem nenhuma rejeição sorolágica.

sgComp.ColorCell[ColComp,Lindoa]:=CORLIBERADO;
sgComp.ColorCell[ColComp+1,Lindoa]:=CORLIBERADO; ---=-> essa parte pinta as células de azul para mostar q foi liberado

Movimentacao.TipoMovimentacao.ler(14); // código (14) significa que eh a Entrada em Estoque

Movimentacao.ItemEstoque.StatusEstoque.Ler(8);-----> código (8) para confimar liberação

movimentacao.ItemEstoque.SUS:=doacao.SUS; ------> opção de codigo meu, pois, naum sei como, mais tarde doacao.sus zera, sendo q naum pode

movimentacao.gravar; {naum grava por causa q algo estah zerando a chave do sus} -----> aki estah o problema


classe movimentação

procedure TMovimentacao.gravar;
begin
ItemEstoque.gravar; ----> abaixo
with TQuery.Create(application) do
try
DatabaseName:= DBNamePadrao.Database.DatabaseName;
if Estado = ecInsercao then
begin
GeraChave;
SQL.Add(´insert into Movimentacao (ChaveMovimentacao, ChaveTipoMovimentacao, Data,ChaveMotivoInutilizacao,ChaveItemEstoque,ChaveResp) ´); //ChaveRejeicao,
SQL.Add(´values (:ChaveMovimentacao, :ChaveTipoMovimentacao, :Data, :ChaveMotivoInutilizacao, :ChaveItemEstoque, :ChaveResp) ´); //:ChaveRejeicao,
end
else if Estado = ecEdicao then
begin
SQL.Add(´update Movimentacao set ChaveTipoMovimentacao = :ChaveTipoMovimentacao, Data = :Data, ChaveMotivoInutilizacao = :ChaveMotivoInutilizacao, ChaveItemEstoque=:ChaveItemEstoque,ChaveResp=:ChaveResp ´); //ChaveRejeicao=:ChaveRejeicao,
SQL.Add(´where ChaveMovimentacao = :ChaveMovimentacao ´);
end
if (Estado = ecInsercao) or (Estado = ecEdicao) then
begin
ParamByName(´ChaveMovimentacao´).AsInteger := ChaveMovimentacao;
ParamByName(´ChaveTipoMovimentacao´).AsInteger := TipoMovimentacao.ChaveTipoMovimentacao;
ParamByName(´Data´).AsDate:= Data;
ParamByName(´ChaveItemEstoque´).AsInteger := ItemEstoque.ChaveItemEstoque;
ParamByName(´ChaveMotivoInutilizacao´).AsInteger:= MotivoInutilizacao.ChaveMotivoInutilizacao;
ParamByName(´ChaveResp´).AsInteger := Responsavel.ChaveFuncionario;
end;
try
ExecSQL;
except
on e:exception do
begin
application.messagebox(pchar(e.message + #13 + ´Não foi possível acessar a origem dos dados!´),´TMovimentacao´,mb_ok or mb_iconerror);
exit;
end;
end;
finally
free;
end;


classe item estoque

procedure TItemEstoque.gravar;
begin
if Estado <> ecConsulta then ----> exatamente aki o doacao.sus zera
begin
with TQuery.Create(application) do
try
DatabaseName:= DBNamePadrao.Database.DatabaseName;
if Estado = ecInsercao then
begin
GeraChave;
SQL.Add(´insert into itemestoque (ChaveItemEstoque, SUS,ChaveCompSanguineo,ChaveTipoOrigem, ChaveOrigem, Qtde, ChaveUnidade, ChaveMotivoInutilizacao, chavestatusestoque, Validade,ChaveRespProducao,ChaveTipoSangue, dataproducao,conferencia) ´);
SQL.Add(´values (:ChaveItemEstoque, :SUS, :ChaveCompSanguineo, :ChaveTipoOrigem, :ChaveOrigem, :Qtde, :ChaveUnidade, :ChaveMotivoInutilizacao, :chavestatusestoque, :Validade, :ChaveRespProducao, :ChaveTipoSangue, :DataProducao, :conferencia)´);
end
else if Estado = ecEdicao then
begin
SQL.Add(´update itemestoque set SUS = :SUS, ChaveCompSanguineo=:ChaveCompSanguineo,´);
SQL.Add(´ChaveTipoOrigem=:ChaveTipoOrigem, ChaveOrigem = :ChaveOrigem, Qtde = :Qtde, ´);
SQL.Add(´ChaveUnidade = :ChaveUnidade, ChaveMotivoInutilizacao = :ChaveMotivoInutilizacao, ´);
SQL.Add(´chavestatusestoque = :chavestatusestoque, Validade = :Validade,ChaveRespProducao=:ChaveRespProducao ´);
sql.Add(´,ChaveTipoSangue=:Chavetiposangue,dataproducao=:DataProducao,conferencia=:conferencia´);
SQL.Add(´where ChaveItemEstoque = :ChaveItemEstoque ´);
end
else if Estado = ecExclusao then
begin
SQL.Add(´delete from itemestoque where ChaveItemEstoque = :ChaveItemEstoque ´);
ParamByName(´ChaveItemEstoque´).AsInteger := ChaveItemEstoque;
end;
if (Estado = ecInsercao) or (Estado = ecEdicao) then
begin
ParamByName(´ChaveItemEstoque´).AsInteger := ChaveItemEstoque;
if TipoOrigem.ChaveTipoOrigem = 1 then

//parambyname(´SUS´).AsString:= SUS; ---> aki coloquei essa opção pois, como visto no início, fiz sus receber doaçao.sus antes de zerar... mas mesmo assim perciste o erro :(
ParamByName(´SUS´).AsString:= doacao.SUS;----> aki o doacao.sus estah zerado, o q eh errado

ParamByName(´ChaveCompSanguineo´).AsInteger := CompSanguineo.ChaveCompSanguineo;
ParamByName(´ChaveTipoOrigem´).AsInteger := TipoOrigem.ChaveTipoOrigem;
if TipoOrigem.ChaveTipoOrigem = 1 then
ParamByName(´ChaveOrigem´).AsInteger := Doacao.ChaveDoacao;
ParamByName(´Qtde´).AsInteger := Qtde;
ParamByName(´ChaveUnidade´).AsInteger := Unidade.ChaveUnidade;
ParamByName(´ChaveMotivoInutilizacao´).AsInteger := MotivoInutilizacao.ChaveMotivoInutilizacao;
ParamByName(´ChaveStatusEstoque´).AsInteger := Statusestoque.chavestatusestoque;
ParamByName(´Validade´).AsDate := Validade;
ParamByName(´ChaveRespProducao´).AsInteger := RespProducao.ChaveFuncionario;
ParamByName(´ChaveTipoSangue´).AsInteger := TIpoSangue.ChavetipoSangue;
ParamByName(´DataProducao´).AsDate:=DataProducao;
ParamByName(´Conferencia´).AsInteger := conferencia;
end;
try
ExecSQL;
except
on e:exception do
begin
application.messagebox(pchar(e.message + #13 + ´Não foi possível acessar a origem dos dados!´),´TItemEstoque´,mb_ok or mb_iconerror);
exit;
end;
end;
finally
free;
end;
end;


desde jah obrigada!!! :wink:
[/color:6a02dcd1d7]


*ang*

*ang*

Responder

Posts

25/03/2003

*ang*

[color=darkblue:bd6c05ff32]ah esqueci de dizer o tipo do erro... :oops:

field ´SUS´ is of an unknow type
Não foi possível acessar a origem dos dados!

:cry:
[/color:bd6c05ff32]


Responder

25/03/2003

Anonymous

verifique se você definiu o tipo de parametro para :sus


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar