Sint
estou com o seguinte problema estou tentando fazer um select somando certos campos mais o que acontece e o seguinte quando eu uso esse select que eu postei logo abaixo e o valor do campo icms_retido for maior que 0 ele soma os registros mais se caso eu lançar uma nota que nao tenha icms retido ou seja ela vai conter o valor 0 entao ele nao soma nenhum registro sendo que eu preciso que ele some todos os registros o que eu fiz de errado?
with deasy.QrySintegra do //processa o registro compelementares do sintegra
begin
Close; unprepare;
sql.clear;
SQL.ADD('SELECT * from nota where DATAEMISSAO BETWEEN :datahora_ini AND :datahora_fim and(');
SQL.Add('(modelo = ''01'') OR');
SQL.Add('(modelo = ''1A'') OR');
SQL.Add('(modelo = ''03'') OR');
SQL.Add('(modelo = ''06'') OR');
SQL.Add('(modelo = ''55'') OR');
SQL.Add('(modelo = ''22''))');
SQL.Add('order BY dataemissao');
ParamByName('datahora_ini').asdatetime:= datahora_inicial;
parambyname('datahora_fim').asdatetime:= datahora_final;
prepare;
Open;
end; deasy.QrySintegra_D.DataSource := deasy.DtsQrySintegra; with deasy.QrySintegra_d do
begin
Close;
unprepare;
SQL.Clear; SQL.Add('SELECT aliquota, sum(icms_retido+valor_ipi+frete+seguro+pis+outrasdespesas+complemento+servicos) v, sum (icms_retido+valor_ipi) as o, sum(frete+seguro+pis+outrasdespesas+complemento+servicos) as b, sum(icms_especial) as i FROM nota WHERE ');
SQL.Add('notaid = :notaid ');
SQL.Add('GROUP BY aliquota');
prepare; Open; end; if deasy.qrysintegra_D.FieldByName('v').AsCurrency>0 then
begin
while not deasy.QrySintegra.EOF do
begin
while not deasy.QrySintegra_D.EOF do
begin
num_nf := deasy.QrySintegra.Fields.FieldByName('numeronota').AsString;
num_nf := trim(copy(num_nf, length(num_nf) - 6, length(num_nf))); //utilizando apenas 6 últimos digitos da NF
//Faz a chamada da dll passando as informações do banco de dados e armazena numa string temporária
TempStr := Registro50(deasy.QrySintegra.Fields.FieldByName('cnpj').AsString, //CNPJ
deasy.QrySintegra.Fields.FieldByName('inscricao').AsString, //Insc_Est
datetostr(deasy.QrySintegra.Fields.FieldByName('dataemissao').AsDateTime), //Data_Emissao_Recebimento
deasy.QrySintegra.Fields.FieldByName('uf').AsString, //UF
deasy.QrySintegra.Fields.FieldByName('modelo').AsString, //Modelo
deasy.QrySintegra.Fields.FieldByName('serie').AsString, //Serie
num_nf, //Nro
deasy.QrySintegra.Fields.FieldByName('cfop').AsString, //CFOP
deasy.QrySintegra.Fields.FieldByName('emissordocumento').asstring, //Emitente
formatcurr('0.00', deasy.QrySintegra_D.Fields.FieldByName('v').AsFloat), //Valor_Total
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('b').AsFloat), //Base_ICMS
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('i').AsFloat), //Valor_ICMS
'0', //Isenta
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('o').AsFloat), //Outras
'0', //Aliquota
deasy.QrySintegra.Fields.FieldByName('SITUACAO').asstring //Situacao
);
//Executa o tratamento da string temporária testando se houve erro
//Caso haja erro, executa o log das informações inconsistentes no RichEdit
if not Trata_SIntegra_Str(TempStr) then
begin
qnt_erro := qnt_erro + 1;
Result := False; Err_Msg := Err_Msg + #13 +
' Cod_NF_Entrada: ' + deasy.QrySintegra.Fields.FieldByName('NOTAID').AsString + #13 +
' CNPJ: ' + deasy.QrySintegra.Fields.FieldByName('cnpj').AsString + #13 +
' IE: ' + deasy.QrySintegra.Fields.FieldByName('inscricao').AsString + #13 +
' Recebimento: ' + datetostr(deasy.QrySintegra.Fields.FieldByName('dataemissao').AsDateTime) + #13 +
' UF: ' + deasy.QrySintegra.Fields.FieldByName('uf').AsString + #13 +
' Modelo: ' + deasy.QrySintegra.Fields.FieldByName('modelo').AsString + #13 +
' Serie: ' + deasy.QrySintegra.Fields.FieldByName('serie').AsString + #13 +
' Nro: ' + num_nf + #13 +
' CFOP: ' + deasy.QrySintegra.Fields.FieldByName('cfop').AsString + #13 +
' Emitente: ' + deasy.QrySintegra.Fields.FieldByName('emissordocumento').AsString + #13 +
' Valor_Total: ' + deasy.QrySintegra.Fields.FieldByName('icms_retido').AsString + #13 +
' Base ICMS: ' + deasy.QrySintegra_D.Fields.FieldByName('basedecalculo').AsString + #13 +
' Valor ICMS: ' + deasy.QrySintegra_D.Fields.FieldByName('valoricms').AsString + #13 +
' Isenta: ' + deasy.QrySintegra.FieldByName('isentas').AsString + #13 +
' Outras: ' + deasy.QrySintegra.FieldByName('icms_retido').AsString + #13 +
' Aliquota: ' + floattostr(deasy.QrySintegra_D.Fields.FieldByName('aliquota').AsFloat * 100) + #13 +
' Situacao: ' + deasy.QrySintegra.Fields.FieldByName('situacao').asstring
end
else
qnt_ok := qnt_ok + 1; if not deasy.QrySintegra_D.EOF then
deasy.QrySintegra_D.Next; if quit_sintegra then
exit;
end; if not deasy.QrySintegra.EOF then
deasy.QrySintegra.Next;
end;
if quit_sintegra then
exit;
end;
deasy.QrySintegra_D.Close; deasy.QrySintegra_D.DataSource := nil; deasy.QrySintegra.Close; end;
begin
Close; unprepare;
sql.clear;
SQL.ADD('SELECT * from nota where DATAEMISSAO BETWEEN :datahora_ini AND :datahora_fim and(');
SQL.Add('(modelo = ''01'') OR');
SQL.Add('(modelo = ''1A'') OR');
SQL.Add('(modelo = ''03'') OR');
SQL.Add('(modelo = ''06'') OR');
SQL.Add('(modelo = ''55'') OR');
SQL.Add('(modelo = ''22''))');
SQL.Add('order BY dataemissao');
ParamByName('datahora_ini').asdatetime:= datahora_inicial;
parambyname('datahora_fim').asdatetime:= datahora_final;
prepare;
Open;
end; deasy.QrySintegra_D.DataSource := deasy.DtsQrySintegra; with deasy.QrySintegra_d do
begin
Close;
unprepare;
SQL.Clear; SQL.Add('SELECT aliquota, sum(icms_retido+valor_ipi+frete+seguro+pis+outrasdespesas+complemento+servicos) v, sum (icms_retido+valor_ipi) as o, sum(frete+seguro+pis+outrasdespesas+complemento+servicos) as b, sum(icms_especial) as i FROM nota WHERE ');
SQL.Add('notaid = :notaid ');
SQL.Add('GROUP BY aliquota');
prepare; Open; end; if deasy.qrysintegra_D.FieldByName('v').AsCurrency>0 then
begin
while not deasy.QrySintegra.EOF do
begin
while not deasy.QrySintegra_D.EOF do
begin
num_nf := deasy.QrySintegra.Fields.FieldByName('numeronota').AsString;
num_nf := trim(copy(num_nf, length(num_nf) - 6, length(num_nf))); //utilizando apenas 6 últimos digitos da NF
//Faz a chamada da dll passando as informações do banco de dados e armazena numa string temporária
TempStr := Registro50(deasy.QrySintegra.Fields.FieldByName('cnpj').AsString, //CNPJ
deasy.QrySintegra.Fields.FieldByName('inscricao').AsString, //Insc_Est
datetostr(deasy.QrySintegra.Fields.FieldByName('dataemissao').AsDateTime), //Data_Emissao_Recebimento
deasy.QrySintegra.Fields.FieldByName('uf').AsString, //UF
deasy.QrySintegra.Fields.FieldByName('modelo').AsString, //Modelo
deasy.QrySintegra.Fields.FieldByName('serie').AsString, //Serie
num_nf, //Nro
deasy.QrySintegra.Fields.FieldByName('cfop').AsString, //CFOP
deasy.QrySintegra.Fields.FieldByName('emissordocumento').asstring, //Emitente
formatcurr('0.00', deasy.QrySintegra_D.Fields.FieldByName('v').AsFloat), //Valor_Total
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('b').AsFloat), //Base_ICMS
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('i').AsFloat), //Valor_ICMS
'0', //Isenta
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('o').AsFloat), //Outras
'0', //Aliquota
deasy.QrySintegra.Fields.FieldByName('SITUACAO').asstring //Situacao
);
//Executa o tratamento da string temporária testando se houve erro
//Caso haja erro, executa o log das informações inconsistentes no RichEdit
if not Trata_SIntegra_Str(TempStr) then
begin
qnt_erro := qnt_erro + 1;
Result := False; Err_Msg := Err_Msg + #13 +
' Cod_NF_Entrada: ' + deasy.QrySintegra.Fields.FieldByName('NOTAID').AsString + #13 +
' CNPJ: ' + deasy.QrySintegra.Fields.FieldByName('cnpj').AsString + #13 +
' IE: ' + deasy.QrySintegra.Fields.FieldByName('inscricao').AsString + #13 +
' Recebimento: ' + datetostr(deasy.QrySintegra.Fields.FieldByName('dataemissao').AsDateTime) + #13 +
' UF: ' + deasy.QrySintegra.Fields.FieldByName('uf').AsString + #13 +
' Modelo: ' + deasy.QrySintegra.Fields.FieldByName('modelo').AsString + #13 +
' Serie: ' + deasy.QrySintegra.Fields.FieldByName('serie').AsString + #13 +
' Nro: ' + num_nf + #13 +
' CFOP: ' + deasy.QrySintegra.Fields.FieldByName('cfop').AsString + #13 +
' Emitente: ' + deasy.QrySintegra.Fields.FieldByName('emissordocumento').AsString + #13 +
' Valor_Total: ' + deasy.QrySintegra.Fields.FieldByName('icms_retido').AsString + #13 +
' Base ICMS: ' + deasy.QrySintegra_D.Fields.FieldByName('basedecalculo').AsString + #13 +
' Valor ICMS: ' + deasy.QrySintegra_D.Fields.FieldByName('valoricms').AsString + #13 +
' Isenta: ' + deasy.QrySintegra.FieldByName('isentas').AsString + #13 +
' Outras: ' + deasy.QrySintegra.FieldByName('icms_retido').AsString + #13 +
' Aliquota: ' + floattostr(deasy.QrySintegra_D.Fields.FieldByName('aliquota').AsFloat * 100) + #13 +
' Situacao: ' + deasy.QrySintegra.Fields.FieldByName('situacao').asstring
end
else
qnt_ok := qnt_ok + 1; if not deasy.QrySintegra_D.EOF then
deasy.QrySintegra_D.Next; if quit_sintegra then
exit;
end; if not deasy.QrySintegra.EOF then
deasy.QrySintegra.Next;
end;
if quit_sintegra then
exit;
end;
deasy.QrySintegra_D.Close; deasy.QrySintegra_D.DataSource := nil; deasy.QrySintegra.Close; end;
Paulo Silva
Curtidas 0
Respostas
Wesley Yamazack
17/02/2009
Olá Paulo.
Bom dia. Segue abaixo o exemplo alterado
with deasy.QrySintegra do //processa o registro compelementares do sintegra
begin
Close;
unprepare;
sql.clear;
SQL.ADD('SELECT * from nota where DATAEMISSAO BETWEEN :datahora_ini AND :datahora_fim and(');
SQL.Add('(modelo = ''01'') OR');
SQL.Add('(modelo = ''1A'') OR');
SQL.Add('(modelo = ''03'') OR');
SQL.Add('(modelo = ''06'') OR');
SQL.Add('(modelo = ''55'') OR');
SQL.Add('(modelo = ''22''))');
SQL.Add('order BY dataemissao');
ParamByName('datahora_ini').asdatetime:= datahora_inicial;
parambyname('datahora_fim').asdatetime:= datahora_final;
prepare;
Open;
end;
deasy.QrySintegra_D.DataSource := deasy.DtsQrySintegra;
with deasy.QrySintegra_d do
begin
Close;
unprepare;
SQL.Clear;
SQL.Add('SELECT aliquota, ');
SQL.Add(' sum(icms_retido+valor_ipi+frete+seguro+pis+outrasdespesas+complemento+servicos) v, ');
SQL.Add(' sum icms_retido+valor_ipi) as o, ');
SQL.Add(' sum(frete+seguro+pis+outrasdespesas+complemento+servicos) as b, ');
SQL.Add(' sum(icms_especial) as i ');
SQL.Add(' FROM nota ');
SQL.Add(' WHERE notaid = :notaid ');
SQL.Add(' GROUP BY aliquota ');
prepare;
Open;
end;
//Imagina a seguinte situação.
{ ==========================
aliquota v o b i
10 0 0 0 0
20 2 0 0 0
30 2 2 1 0
==========================
Observe que logo abaixo você testa apenas uma vez a coluna "v",
se ela na primeira linha do teu Select, for 0(zero) ele não vai fazer nada, porém
se a primeiraa linha do teu select, for maior do que o(zero) ai sim ele irá fazer o loop 'while not deasy.QrySintegra.EOF do'
- Solução : Você percorrer toda a primeira tabela, depois percorrer a segunda tabela, e logo ir testando se "v" > 0 .
}
while not deasy.QrySintegra.EOF do
begin
while not deasy.QrySintegra_D.EOF do
begin
if deasy.qrysintegra_D.FieldByName('v').AsCurrency>0 then
begin
num_nf := deasy.QrySintegra.Fields.FieldByName('numeronota').AsString;
num_nf := trim(copy(num_nf, length(num_nf) - 6, length(num_nf))); //utilizando apenas 6 últimos digitos da NF
//Faz a chamada da dll passando as informações do banco de dados e armazena numa string temporária
TempStr := Registro50(deasy.QrySintegra.Fields.FieldByName('cnpj').AsString, //CNPJ
deasy.QrySintegra.Fields.FieldByName('inscricao').AsString, //Insc_Est
datetostr(deasy.QrySintegra.Fields.FieldByName('dataemissao').AsDateTime), //Data_Emissao_Recebimento
deasy.QrySintegra.Fields.FieldByName('uf').AsString, //UF
deasy.QrySintegra.Fields.FieldByName('modelo').AsString, //Modelo
deasy.QrySintegra.Fields.FieldByName('serie').AsString, //Serie
num_nf, //Nro
deasy.QrySintegra.Fields.FieldByName('cfop').AsString, //CFOP
deasy.QrySintegra.Fields.FieldByName('emissordocumento').asstring, //Emitente
formatcurr('0.00', deasy.QrySintegra_D.Fields.FieldByName('v').AsFloat), //Valor_Total
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('b').AsFloat), //Base_ICMS
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('i').AsFloat), //Valor_ICMS
'0', //Isenta
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('o').AsFloat), //Outras
'0', //Aliquota
deasy.QrySintegra.Fields.FieldByName('SITUACAO').asstring //Situacao
);
//Executa o tratamento da string temporária testando se houve erro
//Caso haja erro, executa o log das informações inconsistentes no RichEdit
if not Trata_SIntegra_Str(TempStr) then
begin
qnt_erro := qnt_erro + 1;
Result := False;
Err_Msg := Err_Msg + #13 +
' Cod_NF_Entrada: ' + deasy.QrySintegra.Fields.FieldByName('NOTAID').AsString + #13 +
' CNPJ: ' + deasy.QrySintegra.Fields.FieldByName('cnpj').AsString + #13 +
' IE: ' + deasy.QrySintegra.Fields.FieldByName('inscricao').AsString + #13 +
' Recebimento: ' + datetostr(deasy.QrySintegra.Fields.FieldByName('dataemissao').AsDateTime) + #13 +
' UF: ' + deasy.QrySintegra.Fields.FieldByName('uf').AsString + #13 +
' Modelo: ' + deasy.QrySintegra.Fields.FieldByName('modelo').AsString + #13 +
' Serie: ' + deasy.QrySintegra.Fields.FieldByName('serie').AsString + #13 +
' Nro: ' + num_nf + #13 +
' CFOP: ' + deasy.QrySintegra.Fields.FieldByName('cfop').AsString + #13 +
' Emitente: ' + deasy.QrySintegra.Fields.FieldByName('emissordocumento').AsString + #13 +
' Valor_Total: ' + deasy.QrySintegra.Fields.FieldByName('icms_retido').AsString + #13 +
' Base ICMS: ' + deasy.QrySintegra_D.Fields.FieldByName('basedecalculo').AsString + #13 +
' Valor ICMS: ' + deasy.QrySintegra_D.Fields.FieldByName('valoricms').AsString + #13 +
' Isenta: ' + deasy.QrySintegra.FieldByName('isentas').AsString + #13 +
' Outras: ' + deasy.QrySintegra.FieldByName('icms_retido').AsString + #13 +
' Aliquota: ' + floattostr(deasy.QrySintegra_D.Fields.FieldByName('aliquota').AsFloat * 100) + #13 +
' Situacao: ' + deasy.QrySintegra.Fields.FieldByName('situacao').asstring
end
else
qnt_ok := qnt_ok + 1;
if not deasy.QrySintegra_D.EOF then
deasy.QrySintegra_D.Next;
if quit_sintegra then
exit;
end;
if not deasy.QrySintegra.EOF then
deasy.QrySintegra.Next;
end;
if quit_sintegra then
exit;
end;
deasy.QrySintegra_D.Close;
deasy.QrySintegra_D.DataSource := nil;
deasy.QrySintegra.Close;
Att,
Wesley Y
Bom dia. Segue abaixo o exemplo alterado
with deasy.QrySintegra do //processa o registro compelementares do sintegra
begin
Close;
unprepare;
sql.clear;
SQL.ADD('SELECT * from nota where DATAEMISSAO BETWEEN :datahora_ini AND :datahora_fim and(');
SQL.Add('(modelo = ''01'') OR');
SQL.Add('(modelo = ''1A'') OR');
SQL.Add('(modelo = ''03'') OR');
SQL.Add('(modelo = ''06'') OR');
SQL.Add('(modelo = ''55'') OR');
SQL.Add('(modelo = ''22''))');
SQL.Add('order BY dataemissao');
ParamByName('datahora_ini').asdatetime:= datahora_inicial;
parambyname('datahora_fim').asdatetime:= datahora_final;
prepare;
Open;
end;
deasy.QrySintegra_D.DataSource := deasy.DtsQrySintegra;
with deasy.QrySintegra_d do
begin
Close;
unprepare;
SQL.Clear;
SQL.Add('SELECT aliquota, ');
SQL.Add(' sum(icms_retido+valor_ipi+frete+seguro+pis+outrasdespesas+complemento+servicos) v, ');
SQL.Add(' sum icms_retido+valor_ipi) as o, ');
SQL.Add(' sum(frete+seguro+pis+outrasdespesas+complemento+servicos) as b, ');
SQL.Add(' sum(icms_especial) as i ');
SQL.Add(' FROM nota ');
SQL.Add(' WHERE notaid = :notaid ');
SQL.Add(' GROUP BY aliquota ');
prepare;
Open;
end;
//Imagina a seguinte situação.
{ ==========================
aliquota v o b i
10 0 0 0 0
20 2 0 0 0
30 2 2 1 0
==========================
Observe que logo abaixo você testa apenas uma vez a coluna "v",
se ela na primeira linha do teu Select, for 0(zero) ele não vai fazer nada, porém
se a primeiraa linha do teu select, for maior do que o(zero) ai sim ele irá fazer o loop 'while not deasy.QrySintegra.EOF do'
- Solução : Você percorrer toda a primeira tabela, depois percorrer a segunda tabela, e logo ir testando se "v" > 0 .
}
while not deasy.QrySintegra.EOF do
begin
while not deasy.QrySintegra_D.EOF do
begin
if deasy.qrysintegra_D.FieldByName('v').AsCurrency>0 then
begin
num_nf := deasy.QrySintegra.Fields.FieldByName('numeronota').AsString;
num_nf := trim(copy(num_nf, length(num_nf) - 6, length(num_nf))); //utilizando apenas 6 últimos digitos da NF
//Faz a chamada da dll passando as informações do banco de dados e armazena numa string temporária
TempStr := Registro50(deasy.QrySintegra.Fields.FieldByName('cnpj').AsString, //CNPJ
deasy.QrySintegra.Fields.FieldByName('inscricao').AsString, //Insc_Est
datetostr(deasy.QrySintegra.Fields.FieldByName('dataemissao').AsDateTime), //Data_Emissao_Recebimento
deasy.QrySintegra.Fields.FieldByName('uf').AsString, //UF
deasy.QrySintegra.Fields.FieldByName('modelo').AsString, //Modelo
deasy.QrySintegra.Fields.FieldByName('serie').AsString, //Serie
num_nf, //Nro
deasy.QrySintegra.Fields.FieldByName('cfop').AsString, //CFOP
deasy.QrySintegra.Fields.FieldByName('emissordocumento').asstring, //Emitente
formatcurr('0.00', deasy.QrySintegra_D.Fields.FieldByName('v').AsFloat), //Valor_Total
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('b').AsFloat), //Base_ICMS
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('i').AsFloat), //Valor_ICMS
'0', //Isenta
formatcurr('0.00', deasy.QrySintegra_D.fields.FieldByName('o').AsFloat), //Outras
'0', //Aliquota
deasy.QrySintegra.Fields.FieldByName('SITUACAO').asstring //Situacao
);
//Executa o tratamento da string temporária testando se houve erro
//Caso haja erro, executa o log das informações inconsistentes no RichEdit
if not Trata_SIntegra_Str(TempStr) then
begin
qnt_erro := qnt_erro + 1;
Result := False;
Err_Msg := Err_Msg + #13 +
' Cod_NF_Entrada: ' + deasy.QrySintegra.Fields.FieldByName('NOTAID').AsString + #13 +
' CNPJ: ' + deasy.QrySintegra.Fields.FieldByName('cnpj').AsString + #13 +
' IE: ' + deasy.QrySintegra.Fields.FieldByName('inscricao').AsString + #13 +
' Recebimento: ' + datetostr(deasy.QrySintegra.Fields.FieldByName('dataemissao').AsDateTime) + #13 +
' UF: ' + deasy.QrySintegra.Fields.FieldByName('uf').AsString + #13 +
' Modelo: ' + deasy.QrySintegra.Fields.FieldByName('modelo').AsString + #13 +
' Serie: ' + deasy.QrySintegra.Fields.FieldByName('serie').AsString + #13 +
' Nro: ' + num_nf + #13 +
' CFOP: ' + deasy.QrySintegra.Fields.FieldByName('cfop').AsString + #13 +
' Emitente: ' + deasy.QrySintegra.Fields.FieldByName('emissordocumento').AsString + #13 +
' Valor_Total: ' + deasy.QrySintegra.Fields.FieldByName('icms_retido').AsString + #13 +
' Base ICMS: ' + deasy.QrySintegra_D.Fields.FieldByName('basedecalculo').AsString + #13 +
' Valor ICMS: ' + deasy.QrySintegra_D.Fields.FieldByName('valoricms').AsString + #13 +
' Isenta: ' + deasy.QrySintegra.FieldByName('isentas').AsString + #13 +
' Outras: ' + deasy.QrySintegra.FieldByName('icms_retido').AsString + #13 +
' Aliquota: ' + floattostr(deasy.QrySintegra_D.Fields.FieldByName('aliquota').AsFloat * 100) + #13 +
' Situacao: ' + deasy.QrySintegra.Fields.FieldByName('situacao').asstring
end
else
qnt_ok := qnt_ok + 1;
if not deasy.QrySintegra_D.EOF then
deasy.QrySintegra_D.Next;
if quit_sintegra then
exit;
end;
if not deasy.QrySintegra.EOF then
deasy.QrySintegra.Next;
end;
if quit_sintegra then
exit;
end;
deasy.QrySintegra_D.Close;
deasy.QrySintegra_D.DataSource := nil;
deasy.QrySintegra.Close;
Att,
Wesley Y
GOSTEI 0
Paulo Silva
17/02/2009
quando eu faço assim em um mes gera mais no outro trava pq esse select travaria a aplicacao?
GOSTEI 0
Paulo Silva
17/02/2009
fiz um teste com dois lançamentos funcionou , fiz com outro mes q tinha 400 ele travou legal a aplicacao
GOSTEI 0
Wesley Yamazack
17/02/2009
Olá Paulo, meu caro.
Posso te dar um conselho? Uma dica para te ajudar?
Utilize DataSetProvider,e ClientDataset, para poder trabalhar com os dados. Pois eles são muito mais rapido, do que você usar a query. Já utlizou os mesmos?
Dai ao inves de você ficar usando a query para ficar varrendo em um While, você usaaria o Clientdataset(este componente carrega todos os dados de um select, em memoria, sendo muito mais rapido para acessar o mesmos).
Dois motivos que possa ter travado o teu programa.
1 - Você ter caido em loop Infinito.
2 - Você ter clicado enquanto ele estava processando os 400 registos.
Att,
Wesley Y
Posso te dar um conselho? Uma dica para te ajudar?
Utilize DataSetProvider,e ClientDataset, para poder trabalhar com os dados. Pois eles são muito mais rapido, do que você usar a query. Já utlizou os mesmos?
Dai ao inves de você ficar usando a query para ficar varrendo em um While, você usaaria o Clientdataset(este componente carrega todos os dados de um select, em memoria, sendo muito mais rapido para acessar o mesmos).
Dois motivos que possa ter travado o teu programa.
1 - Você ter caido em loop Infinito.
2 - Você ter clicado enquanto ele estava processando os 400 registos.
Att,
Wesley Y
GOSTEI 0
Wesley Yamazack
17/02/2009
Olá Paulo,
O chamado foi concluído. Mas continuamos a sua disposição
Att,
Wesley Y
O chamado foi concluído. Mas continuamos a sua disposição
Att,
Wesley Y
GOSTEI 0
Paulo Silva
17/02/2009
Wesley eu tentei fazer com o client dataset mais nao encontrava o param fikava dando param not found tem como vc postar um exemplo pra que eu entenda o pq desse param not found! sendo q com o componente acima listado funcionava perfeitamente!
GOSTEI 0
Wesley Yamazack
17/02/2009
Olá Paulo, irei gravar uma video aula para você, te mandarei mais a noite, explicando como funciona o ClientdataSet ok ?
Att,
Wesley Y
Att,
Wesley Y
GOSTEI 0
Wesley Yamazack
17/02/2009
Olá Paulo, bom dia.
Segue abaixo o link da video que tinha te prometido.
http://www.4shared.com/file/88770765/3daa7e83/Video_Chamado_Paulo.html
att,
Wesley Y
Segue abaixo o link da video que tinha te prometido.
http://www.4shared.com/file/88770765/3daa7e83/Video_Chamado_Paulo.html
att,
Wesley Y
GOSTEI 0
Paulo Silva
17/02/2009
kra consegui resolver o problema eu coloquei asdate ao inves de asdatetime funcionou perfeitamente obrigadao!
GOSTEI 0
Wesley Yamazack
17/02/2009
Olá Paulo, que bom que consegui resolver.
Ate um proximo ....
Abracos
Att,
Wesley Y
Ate um proximo ....
Abracos
Att,
Wesley Y
GOSTEI 0