Problema de data em branco ainda não resolvido
11/08/2008
0
Galera agradeço e muito a ajuda que obtive recentemente num post. Mas infelizmente não deu certo.
Vamos a uma análise do meu problema com mais detalhes, pq sei que alguns tb tem problemas parecidos.
Estrutura do arquivo de Carne
´NUMRESUMO´ INTEGER NOT NULL,
´CODCLIENTE´ INTEGER,
´PARCELA´ VARCHAR(13),
´DTVENCIMENTO´ DATE,
´VALOR_PARCELA´ DECIMAL(8,2),
´VALOR_ENTRADA´ DECIMAL(8,2),
´DTENTRADA´ DATE,
´DTPAGAMENTO´ DATE,
´JUROS´ DECIMAL(8,2),
´SITUACAO´ VARCHAR(1),
´DESCONTO´ DECIMAL(8,2),
´VALOR_PAGO´ DECIMAL(8,2),
´VALOR_TROCO´ DECIMAL(8,2),
´VALOR_PAGAR´ DECIMAL(8,2),
´DTVENDA´ DATE,
´VALOR_DESCONTO´ DECIMAL(12,2),
´CODOPERADOR´ INTEGER
Estrutura do arquivo Auxiliar de Parcelas, cuja finalidade é guardar temporariamente os dados das parcelas geradas no programa de venda.
´NUMRESUMO´ INTEGER NOT NULL,
´PARCELA´ VARCHAR(13),
´DTVENCIMENTO´ DATE,
´VALOR_PARCELA´ DECIMAL(8,2),
´VALOR_ENTRADA´ DECIMAL(8,2),
´DTENTRADA´ DATE,
´DESCONTO´ DECIMAL(8,2)
O encalhe do sistema é com a Data de Entrada ou (DtEntrada).
É o seguinte, se a modalidade de pagamento não tiver entrada, então a data de Entrada deverá estar em branco, pois do modo errado que eu estava fazendo ele grava 30/12/1899. E isto esta me causando pequenos problemas em outros módulos que antes não existiam.
A parte do código que estou utilizando.
Dm.SQLDataSet5.Close;
Dm.SQLDataSet5.CommandText := ´Select * from Parcela where NumResumo=:resumo´;
Dm.SQLDataSet5.ParamByName(´resumo´).AsInteger := g_numero_da_nova_venda;
Dm.SQLDataSet5.Open;
if not Dm.SQLDataSet5.IsEmpty then
// Atualiza Tabela Carne, pois há dados de informados de parcelas.
begin
Dm.SQLDataSet5.First;
while not Dm.SQLDataSet5.Eof do
begin
Dm.SQLDataSet6.Close;
Dm.SQLDataSet6.CommandText := ´Insert Into Carne´ +
´(NumResumo, Parcela, DtVencimento, Valor_Parcela, Valor_Entrada, DtEntrada, CodCliente, DtVenda)´ +
´values(:resumo,:nparc,:dVencto,:vlrParc,:vlrEnt,:dtEnt,:codCli, :dDtVenda)´;
// Passa valores paa a query por meio dos parametros
Dm.SQLDataSet6.ParamByName(´resumo´).AsInteger := Dm.SQLDataSet5.FieldByName(´NumResumo´).AsInteger;
Dm.SQLDataSet6.ParamByName(´nparc´).AsInteger := Dm.SQLDataSet5.FieldByName(´Parcela´).AsVariant;
Dm.SQLDataSet6.ParamByName(´dVencto´).AsDate := Dm.SQLDataSet5.FieldByName(´DtVencimento´).AsDateTime;
Dm.SQLDataSet6.ParamByName(´vlrParc´).AsFloat := Dm.SQLDataSet5.FieldByname(´Valor_parcela´).AsFloat;
Dm.SQLDataSet6.ParamByName(´vlrEnt´).AsFloat := Dm.SQLDataSet5.FieldByName(´Valor_Entrada´).AsFloat;
//
if (PossuiEntrada = False) then
Dm.SQLDataSet6.ParamByName(´dtEnt´).Clear
else
Dm.SQLDataSet6.ParamByName(´dtEnt´).AsDate := Dm.SQLDataSet5.FieldByName(´DtEntrada´).AsDateTime;
//
Dm.SQLDataSet6.ParamByName(´dDtVenda´).AsDate := now();
Dm.SQLDataSet6.ParamByName(´codcli´).AsInteger := nClienteEncontrado;
// Executa a query
Dm.SQLDataSet6.ExecSQL;
Dm.cds_Carne.ApplyUpdates(-1);
Dm.SQLDataSet5.Next;
end;
end;
O SqlDataSet5, referece a tabela de Parcelas (última estrutura escrita) e o SqlDataSet6, referece a tabela de Carne.
No exemplo, a instrução que verifica se possui entrada (variável Boolean) escrevi o código conforme o post recebido mas dá a seguinte mensagem de erro :
´ No value for paramter DtEntr ´
Estou utilizando a paleta DbXPress, D7 e firebird 2.0, não sei ainda utilizar os componentes do IbXpress (por enquanto).
Estão gostaria de tentar mais uma vez para resolver este pequeno problema, que já tentei até os niveis de meu conhecimento, sei que estou fazendo algo errado, mas não estou achando uma solução para isto.
Grato a todos
Valnei.
Vamos a uma análise do meu problema com mais detalhes, pq sei que alguns tb tem problemas parecidos.
Estrutura do arquivo de Carne
´NUMRESUMO´ INTEGER NOT NULL,
´CODCLIENTE´ INTEGER,
´PARCELA´ VARCHAR(13),
´DTVENCIMENTO´ DATE,
´VALOR_PARCELA´ DECIMAL(8,2),
´VALOR_ENTRADA´ DECIMAL(8,2),
´DTENTRADA´ DATE,
´DTPAGAMENTO´ DATE,
´JUROS´ DECIMAL(8,2),
´SITUACAO´ VARCHAR(1),
´DESCONTO´ DECIMAL(8,2),
´VALOR_PAGO´ DECIMAL(8,2),
´VALOR_TROCO´ DECIMAL(8,2),
´VALOR_PAGAR´ DECIMAL(8,2),
´DTVENDA´ DATE,
´VALOR_DESCONTO´ DECIMAL(12,2),
´CODOPERADOR´ INTEGER
Estrutura do arquivo Auxiliar de Parcelas, cuja finalidade é guardar temporariamente os dados das parcelas geradas no programa de venda.
´NUMRESUMO´ INTEGER NOT NULL,
´PARCELA´ VARCHAR(13),
´DTVENCIMENTO´ DATE,
´VALOR_PARCELA´ DECIMAL(8,2),
´VALOR_ENTRADA´ DECIMAL(8,2),
´DTENTRADA´ DATE,
´DESCONTO´ DECIMAL(8,2)
O encalhe do sistema é com a Data de Entrada ou (DtEntrada).
É o seguinte, se a modalidade de pagamento não tiver entrada, então a data de Entrada deverá estar em branco, pois do modo errado que eu estava fazendo ele grava 30/12/1899. E isto esta me causando pequenos problemas em outros módulos que antes não existiam.
A parte do código que estou utilizando.
Dm.SQLDataSet5.Close;
Dm.SQLDataSet5.CommandText := ´Select * from Parcela where NumResumo=:resumo´;
Dm.SQLDataSet5.ParamByName(´resumo´).AsInteger := g_numero_da_nova_venda;
Dm.SQLDataSet5.Open;
if not Dm.SQLDataSet5.IsEmpty then
// Atualiza Tabela Carne, pois há dados de informados de parcelas.
begin
Dm.SQLDataSet5.First;
while not Dm.SQLDataSet5.Eof do
begin
Dm.SQLDataSet6.Close;
Dm.SQLDataSet6.CommandText := ´Insert Into Carne´ +
´(NumResumo, Parcela, DtVencimento, Valor_Parcela, Valor_Entrada, DtEntrada, CodCliente, DtVenda)´ +
´values(:resumo,:nparc,:dVencto,:vlrParc,:vlrEnt,:dtEnt,:codCli, :dDtVenda)´;
// Passa valores paa a query por meio dos parametros
Dm.SQLDataSet6.ParamByName(´resumo´).AsInteger := Dm.SQLDataSet5.FieldByName(´NumResumo´).AsInteger;
Dm.SQLDataSet6.ParamByName(´nparc´).AsInteger := Dm.SQLDataSet5.FieldByName(´Parcela´).AsVariant;
Dm.SQLDataSet6.ParamByName(´dVencto´).AsDate := Dm.SQLDataSet5.FieldByName(´DtVencimento´).AsDateTime;
Dm.SQLDataSet6.ParamByName(´vlrParc´).AsFloat := Dm.SQLDataSet5.FieldByname(´Valor_parcela´).AsFloat;
Dm.SQLDataSet6.ParamByName(´vlrEnt´).AsFloat := Dm.SQLDataSet5.FieldByName(´Valor_Entrada´).AsFloat;
//
if (PossuiEntrada = False) then
Dm.SQLDataSet6.ParamByName(´dtEnt´).Clear
else
Dm.SQLDataSet6.ParamByName(´dtEnt´).AsDate := Dm.SQLDataSet5.FieldByName(´DtEntrada´).AsDateTime;
//
Dm.SQLDataSet6.ParamByName(´dDtVenda´).AsDate := now();
Dm.SQLDataSet6.ParamByName(´codcli´).AsInteger := nClienteEncontrado;
// Executa a query
Dm.SQLDataSet6.ExecSQL;
Dm.cds_Carne.ApplyUpdates(-1);
Dm.SQLDataSet5.Next;
end;
end;
O SqlDataSet5, referece a tabela de Parcelas (última estrutura escrita) e o SqlDataSet6, referece a tabela de Carne.
No exemplo, a instrução que verifica se possui entrada (variável Boolean) escrevi o código conforme o post recebido mas dá a seguinte mensagem de erro :
´ No value for paramter DtEntr ´
Estou utilizando a paleta DbXPress, D7 e firebird 2.0, não sei ainda utilizar os componentes do IbXpress (por enquanto).
Estão gostaria de tentar mais uma vez para resolver este pequeno problema, que já tentei até os niveis de meu conhecimento, sei que estou fazendo algo errado, mas não estou achando uma solução para isto.
Grato a todos
Valnei.
Objetivacreator
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)