Fórum Firebir campo numerico não grava na tabela #413351
27/02/2012
0
O problema é que os dados inseridos não são gravados na tabela.
Já utilizei vários recursos e nada. Alguem poderia da uma mãozinha.
Desde já agradeço.
----------------------- FIREBIRD ----------------------------------------
CREATE TABLE RESMESA (
MESA_ID INTEGER NOT NULL,
MESA_SITUACAO CHAR(1),
DATA_ABERTURA TIMESTAMP,
PESSOA_ID INTEGER,
MESA_QTDCLIENTES INTEGER,
MESA_COUVERPESSOA FLOAT,
DATA_FECHAMENTO TIMESTAMP
);
CREATE OR ALTER PROCEDURE ATUALIZA_RESMESA_INS (
mesa_id integer,
mesa_situacao char(1),
data_abertura timestamp,
pessoa_id integer,
mesa_qtdclientes integer,
mesa_couverpessoa float)
as
begin
INSERT INTO RESMESA (MESA_ID,MESA_SITUACAO,DATA_ABERTURA,PESSOA_ID,MESA_QTDCLIENTES,MESA_COUVERPESSOA)
VALUES (:MESA_ID,:MESA_SITUACAO,:DATA_ABERTURA,:PESSOA_ID,:MESA_QTDCLIENTES,:MESA_COUVERPESSOA);
suspend;
end^
SET TERM ; ^
GRANT INSERT ON RESMESA TO PROCEDURE ATUALIZA_RESMESA_INS;
GRANT EXECUTE ON PROCEDURE ATUALIZA_RESMESA_INS TO SYSDBA;
---------------------- DELPHI ----------------------
procedure AtualizaResMesaIns(MESA_ID:INTEGER;
MESA_SITUACAO:String;
DATA_ABERTURA:TDateTime;
PESSOA_ID:INTEGER;
MESA_QTDCLIENTES:INTEGER;
MESA_COUVERPESSOA:Currency
);
procedure TFM_Procedures.AtualizaResMesaIns(MESA_ID: INTEGER;
MESA_SITUACAO: String; DATA_ABERTURA: TDateTime; PESSOA_ID, MESA_QTDCLIENTES: INTEGER;
MESA_COUVERPESSOA: currency );
begin
vDataHoraAbertura := TDateTime(now);
if DMDados.SQLConexao.Connected = true then
begin
try
begin
sspAtualizaResMesaIns.close;
{sspAtualizaResMesaIns.Params[0].AsInteger:=StrToInt(FM_RESMOV002.edMesa.Text);
sspAtualizaResMesaIns.Params[1].AsString:=O;//FM_RESMOV00205.edMesa_Situacao.Text;
sspAtualizaResMesaIns.Params[2].AsDateTime:=StrToDateTime(FM_RESMOV00205.Label7.Caption);
sspAtualizaResMesaIns.Params[3].AsInteger:=StrToInt(FM_RESMOV00205.edPessoa_Id.Text);
//sspAtualizaResMesaIns.Params[4].AsFloat:=StrToFloat(FM_RESMOV00205.edMesa_CouverPessoa.Text);
//sspAtualizaResMesaIns.Params[4].AsString:=FormatCurr(0000.00,StrToCurr(FM_RESMOV00205.edMesa_CouverPessoa.Text));
}
sspAtualizaResMesaIns.ParamByName(Mesa_ID).AsInteger:=Mesa_ID;
sspAtualizaResMesaIns.ParamByName(Mesa_Situacao).AsString:=Mesa_Situacao;
sspAtualizaResMesaIns.ParamByName(Data_Abertura).AsDateTime:=(FM_RESMOV00205.vDataHoraAbertura1);
sspAtualizaResMesaIns.ParamByName(Pessoa_ID).AsInteger:=Pessoa_Id;
//sspAtualizaResMesaIns.ParamByName(Mesa_CouverPessoa).AsCurrency:=(Mesa_CouverPessoa);
sspAtualizaResMesaIns.ParamByName(Mesa_CouverPessoa).AsString:=FormatFloat(0000.00,StrToFloat(FM_RESMOV00205.edMesa_CouverPessoa.Text));
sspAtualizaResMesaIns.ExecProc;
end;
except
begin
MessageDlg(Erro na atualização de dados.,mtError,[mbOk],0);
end;
end;
end;
end;
label7.Caption := DateTimeToStr(now);
FM_Procedures.AtualizaResMesaIns(StrToInt(FM_RESMOV002.edMesa.Text),
O, //Mesa_Situacao.Text,
//vDataHoraAbertura1,
StrToDateTime(Label7.Caption),
StrToInt(vPessoa_ID),
StrToInt(edMesa_CouverPessoa.Text),
StrToFloat(edMesa_CouverPessoa.Text));
Pedro Farias
Curtir tópico
+ 0Posts
29/02/2012
Diego Lusa
Outro detalhe que você deve verificar é se a transação do objeto de conexão do Delphi à base está como autocommit. Caso não esteja, você deve explicitamente comitar a transação.
Gostei + 0
29/02/2012
Pedro Farias
Retirei o comando da procedure, no entanto o componente que estou utilizando é o TSQLStoredProc e nele a opcao de autocommit não existe.
Continuo com o mesmo problema.
Gostei + 0
29/02/2012
Diego Lusa
Gostei + 0
29/02/2012
Pedro Farias
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)