Cannot update a complex query with more then one table
27/03/2013
0
POREM QUANDO CLICO NESTE BOTÃO ATE INICIA A CHAMADA DOS ITENS,MAIS AI JA DA ESTE ERRO,(Cannot update a complex query with more then one table).
PESSOAL PRECISO MUITO DA AJUDA DOS COLEGAS POIS PRECISO ENTREGAR ISSO NA SEXTA FEIRA (PARA MUITOS FERIADO).
*************************
TO COLOCANDO MEU CODIGO AQUI PARA DAR OLHADA...
procedure Tfrmnotafiscal_importacupom.ecupomKeyPress(Sender: TObject;
var Key: Char);
begin
if key = #13 then perform(wm_nextdlgctl,0,0);
end;
procedure Tfrmnotafiscal_importacupom.bconfirmaClick(Sender: TObject);
var
vtotal,vsubtotal,vdesconto,vbaseicms,vvaloricms : double;
vitem : integer;
vcodvendedor, vnumero_nota, vcfop, vcodcliente, vcodfilial ,vmodelo,vserie : string;
vemissao , vsaida : TDateTime;
begin
if ecupom.Text <> '' then
begin
vtotal := 0;
vsubtotal := 0;
vdesconto := 0;
vbaseicms := 0;
vvaloricms := 0;
ProgressBar1.Position := 0;
cxMemo1.Text := '';
cxMemo1.Lines.Add('Aguarde, Verificando a Exitência da Nota Fiscal!');
query.Close;
query.SQL.Clear;
query.SQL.Add('select CUPOM_NUMERO,CUPOM_MODELO from c000032 where cupom_numero = '''+ecupom.Text+'''');
query.SQL.Add('and cupom_modelo = ''01''');
query.Open;
if query.RecordCount > 0 then
begin
Application.messagebox('Já Foi Emitido Uma Nota Fiscal Para Esse Cupom!','Atenção!',mb_ok+MB_ICONEXCLAMATION);
ecupom.Text := '';
ecupom.SetFocus;
cxMemo1.Text := '';
exit;
end;
{
qrnotafiscal_item.Close;
qrnotafiscal_item.SQL.Clear;
qrnotafiscal_item.SQL.Add('select * from c000062');
qrnotafiscal_item.Open;
}
query.Close;
query.SQL.Clear;
query.SQL.Add('select * from c000032 where cupom_numero = '''+ecupom.Text+'''');
query.SQL.Add('and ecf_serie = '''+ copy(combo_ecf.Text,7,20) +'''');
query.SQL.Add('and cupom_modelo = ''2D''');
query.SQL.Add('order by cupom_item descending');
query.Open;
if query.RecordCount > 0 then
begin
ProgressBar1.Max := query.RecordCount;
cxMemo1.Text := '';
vnumero_nota := frmnotafiscal.ENUMERO.Text;
vnumero_inclui_cupom := query.fieldbyname('cupom_numero').AsString;
vnumero_inclui_nota := frmprincipal.codifica('000061'); //frmmodulo.qrnotafiscal.fieldbyname('codigo').asstring;
vcfop := frmnotafiscal.ecfop.Text;
vcodcliente := frmnotafiscal.ecliente.Text;
vcodfilial := frmnotafiscal.efilial.Text;
vmodelo := frmnotafiscal.ecodmodelo.Text;
vserie := frmnotafiscal.eserie.Text;
vemissao := frmnotafiscal.edata_cadastro.Date;
vsaida := frmnotafiscal.EDATA_SAIDA.Date;
vcodvendedor := query.fieldbyname('codvendedor').AsString;
while not query.Eof do begin
cxMemo1.Lines.Add(query.fieldbyname('codproduto').AsString+ ' ' +frmmodulo.qrnotafiscal.fieldbyname('numero').asstring+' '+formatfloat('#,###,##0.00',query.fieldbyname('total').AsFloat));
if qrproduto.Locate('codigo',query.fieldbyname('codproduto').AsString,[loCaseInsensitive]) then
begin
frmnotafiscal.qrnotafiscal_item.Insert;
frmnotafiscal.qrnotafiscal_item.FieldByName('CODIGO').ASSTRING := frmprincipal.codifica('000032');
frmnotafiscal.qrnotafiscal_item.FieldByName('CODPRODUTO').ASSTRING := query.fieldbyname('codproduto').AsString;
frmnotafiscal.qrnotafiscal_item.FieldByName('PRODUTO').ASSTRING := qrproduto.fieldbyname('PRODUTO').AsString;
frmnotafiscal.qrnotafiscal_item.FieldByName('UNIDADE').ASSTRING := qrproduto.fieldbyname('UNIDADE').AsString;
//frmnotafiscal.qrnotafiscal_item.FieldByName('CODBARRA').Value := ''; //query.fieldbyname('CODBARRA').AsString;
frmnotafiscal.qrnotafiscal_item.FieldByName('codnota').asstring := vnumero_inclui_nota;
frmnotafiscal.qrnotafiscal_item.FieldByName('CODLANCAMENTO').ASSTRING := frmnotafiscal.qrnotafiscal_item.FieldByName('CODIGO').ASSTRING;
frmnotafiscal.qrnotafiscal_item.FieldByName('PESO_BRUTO').AsFloat := qrproduto.fieldbyname('PESO').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('PESO_LIQUIDO').AsFloat := qrproduto.fieldbyname('PESO_LIQUIDO').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('qtde').AsFloat := query.fieldbyname('qtde').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('UNITARIO').AsFloat := query.fieldbyname('unitario').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('TOTAL').AsFloat := query.fieldbyname('total').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('IPI').AsFloat := query.fieldbyname('ipi').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('ICMS').AsFloat := qrproduto.fieldbyname('aliquota').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('CFOP').AsString := frmnotafiscal.ecfop.Text;
frmnotafiscal.qrnotafiscal_item.FieldByName('CODGRADE').AsString := query.fieldbyname('codgrade').AsString;
frmnotafiscal.qrnotafiscal_item.FieldByName('SERIAL').AsString := query.fieldbyname('serial').AsString;
frmnotafiscal.qrnotafiscal_item.FieldByName('VALOR_IPI').AsFloat := query.fieldbyname('valor_ipi').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('CLASSIFICACAO_FISCAL').AsString := '';
frmnotafiscal.qrnotafiscal_item.FieldByName('CST').AsString := qrproduto.fieldbyname('cst').AsString;
if query.fieldbyname('aliquota').AsFloat > 0 then
begin
frmnotafiscal.qrnotafiscal_item.FieldByName('VALOR_ICMS').AsFloat := query.fieldbyname('total').AsFloat*query.fieldbyname('aliquota').AsFloat/100;
frmnotafiscal.qrnotafiscal_item.FieldByName('BASE_CALCULO').AsFloat := query.fieldbyname('total').AsFloat;
end
else
begin
frmnotafiscal.qrnotafiscal_item.FieldByName('VALOR_ICMS').AsFloat := 0;
frmnotafiscal.qrnotafiscal_item.FieldByName('BASE_CALCULO').AsFloat := 0;
end;
frmnotafiscal.qrnotafiscal_item.FieldByName('ICMS_REDUZIDO').AsFloat := query.fieldbyname('icms_reduzido').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('MARGEM_AGREGADA').AsFloat := 0;
frmnotafiscal.qrnotafiscal_item.FieldByName('BASE_SUB').AsFloat := 0;
frmnotafiscal.qrnotafiscal_item.FieldByName('ICMS_SUB').AsFloat := 0;
frmnotafiscal.qrnotafiscal_item.FieldByName('ISENTO').AsFloat := 0;
frmnotafiscal.qrnotafiscal_item.FieldByName('DESCONTO').AsFloat := 0; //query.fieldbyname('desconto').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('SUBTOTAL').AsFloat := query.fieldbyname('total').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('ITEM').AsString := query.fieldbyname('cupom_item').AsString;
frmnotafiscal.qrnotafiscal_item.FieldByName('GRADE').AsString := '';
if qrproduto.FieldByName('piscofins').AsString = 'S' then
begin
frmnotafiscal.qrnotafiscal_item.FieldByName('PIS_ALIQUOTA').AsFloat := frmmodulo.qrFilialPIS.AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('PIS_BASE').AsFloat := query.fieldbyname('total').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('PIS_VALOR').AsFloat := (query.fieldbyname('total').AsFloat*frmmodulo.qrFilialPIS.AsFloat/100);
frmnotafiscal.qrnotafiscal_item.FieldByName('COFINS_ALIQUOTA').AsFloat := frmmodulo.qrFilialCOFINS.AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('COFINS_BASE').AsFloat := query.fieldbyname('total').AsFloat;
frmnotafiscal.qrnotafiscal_item.FieldByName('COFINS_VALOR').AsFloat := (query.fieldbyname('total').AsFloat*frmmodulo.qrFilialCOFINS.AsFloat/100);
end
else
begin
frmnotafiscal.qrnotafiscal_item.FieldByName('PIS_ALIQUOTA').AsFloat := 0;
frmnotafiscal.qrnotafiscal_item.FieldByName('PIS_BASE').AsFloat := 0;
frmnotafiscal.qrnotafiscal_item.FieldByName('PIS_VALOR').AsFloat := 0;
frmnotafiscal.qrnotafiscal_item.FieldByName('COFINS_ALIQUOTA').AsFloat := 0;
frmnotafiscal.qrnotafiscal_item.FieldByName('COFINS_BASE').AsFloat := 0;
frmnotafiscal.qrnotafiscal_item.FieldByName('COFINS_VALOR').AsFloat := 0;
end;
//frmnotafiscal.qrnotafiscal_item.FieldByName('CREDITO_ICMS').AsFloat := query.fieldbyname('credito_icms').AsFloat;
//frmnotafiscal.qrnotafiscal_item.Post;
Application.ProcessMessages;
end;
vtotal := vtotal+(query.fieldbyname('total').AsFloat);
vsubtotal := vsubtotal+(query.fieldbyname('TOTAL').AsFloat-query.fieldbyname('desconto').AsFloat);
vdesconto := vdesconto+(query.fieldbyname('desconto').AsFloat);
if query.fieldbyname('aliquota').AsFloat > 0 then
begin
vbaseicms := vbaseicms+(query.fieldbyname('total').AsFloat-query.fieldbyname('desconto').AsFloat);
vvaloricms := vvaloricms+(vbaseicms*query.fieldbyname('aliquota').AsFloat/100);
end;
query.Next;
vitem := vitem + 1;
ProgressBar1.Position := ProgressBar1.Position + 1;
Application.ProcessMessages;
end;
frmnotafiscal_menu.qrnota.Close;
frmnotafiscal_menu.qrnota.SQL.Clear;
frmnotafiscal_menu.qrnota.SQL.Add('select * from c000061');
frmnotafiscal_menu.qrnota.Open;
frmnotafiscal_menu.qrnota.Insert;
frmnotafiscal_menu.qrnota.FieldByName('codigo').asstring := vnumero_inclui_nota;
frmnotafiscal_menu.qrnota.FieldByName('codfilial').asstring := vcodfilial;
frmnotafiscal_menu.qrnota.FieldByName('numero').asstring := vnumero_nota;
frmnotafiscal_menu.qrnota.FieldByName('cfop').asstring := vcfop;
frmnotafiscal_menu.qrnota.FieldByName('data').AsDateTime := vemissao;
frmnotafiscal_menu.qrnota.FieldByName('data_saida').AsDateTime := vsaida;
frmnotafiscal_menu.qrnota.FieldByName('codcliente').AsString := vcodcliente;
frmnotafiscal_menu.qrnota.FieldByName('hora').AsString := TimeToStr(time);
frmnotafiscal_menu.qrnota.FieldByName('modelo_nf').AsString := vmodelo;
frmnotafiscal_menu.qrnota.FieldByName('serie_nf').AsString := vserie;
frmnotafiscal_menu.qrnota.FieldByName('tipo').AsString := 'S';
frmnotafiscal_menu.qrnota.FieldByName('codvendedor').asstring := vcodvendedor;
frmnotafiscal_menu.qrnota.fieldbyname('situacao').asinteger := 1;
frmnotafiscal_menu.qrnota.fieldbyname('baixa_estoque').asstring := 'S';
frmnotafiscal_menu.qrnota.fieldbyname('sit').asstring := 'N';
frmnotafiscal_menu.qrnota.fieldbyname('movimento').asstring := 'S';
frmnotafiscal_menu.qrnota.FieldByName('INF1').AsString := 'REF. AO CUPOM NÚMERO ' + ecupom.Text;
frmnotafiscal_menu.qrnota.FieldByName('BAIXA_ESTOQUE').AsString := 'N';
frmnotafiscal_menu.qrnota.FieldByName('itens').asinteger := vitem;
frmnotafiscal_menu.qrnota.fieldbyname('BASE_CALCULO').asfloat := vbaseicms;
frmnotafiscal_menu.qrnota.fieldbyname('VALOR_ICMS').asfloat := vvaloricms;
frmnotafiscal_menu.qrnota.FieldByName('VALOR_TOTAL_IPI').asfloat := query.fieldbyname('valor_ipi').asfloat;
frmnotafiscal_menu.qrnota.FieldByName('VALOR_PRODUTOS').asfloat := vtotal;
frmnotafiscal_menu.qrnota.FieldByName('DESCONTO').asfloat := vdesconto;
frmnotafiscal_menu.qrnota.FieldByName('TOTAL_NOTA').asfloat := vtotal-vdesconto;
//frmnotafiscal_menu.qrnota.Post;
ProgressBar1.Position := 0;
close;
end
else
begin
Application.messagebox('Cupom Não Encontrado!','Atenção!',mb_ok+MB_ICONEXCLAMATION);
ecupom.Text := '';
ecupom.SetFocus;
end;
end;
end;
ME AJUDEM AGUARDO...
Rodrigo Bernal
Post mais votado
28/03/2013
Joel Rodrigues
Mais Posts
28/03/2013
Bruno Leandro
30/03/2013
Rodrigo Bernal
no SQL dasta query tenho somente um select
select * from itens
30/03/2013
William
Não leve a mau, mas poderíamos supor x possibilidades de erros dentro dessa rotina!!!
31/03/2013
Rodrigo Bernal
coloquei um frmnotafiscal.qrnotafiscal_item.edit; antes e nada o erro continua, ele manda para unit do zeos:
procedure RaiseSQLException(E: Exception);
begin
if E is EZSQLException then
begin
raise EZSQLException.CreateClone(EZSQLException(E)); esta marcando aqui esta linha do Zeos
end
else
begin
raise EZSQLException.Create(E.Message);
end;
end;
31/03/2013
William
Existe outra instrução SQL que envolva (INNER, LEFT ou RIGHT JOIN) inserida diretamente na propriedade SQL do componente?
Pois esse tipo de exception geralmente é disparada quando uma mesma query possui várias tabelas envolvidas na consulta e posteriormente vc inseri registros visando apenas 1 das tabelas.
Sei que é cansativo bater na mesma tecla, mas a mensagem aponta para esse caminho.
08/11/2014
Michel Santos
O Componete ZEO que esta no form (frmnotafiscal.qrnotafiscal_item), click em cima dele e veja na aba do delphi OBJECT INSPECTOR em EVENTS.
O Unico campo que deve estar preenchido é o CONNECTION, o resto é só você comentar para testar.
08/11/2014
Michel Santos
PS.: COMENTAR, AS LINHAS, Pois se apagar pode ter problemas com outras funções.
OBS.: Depois disso se não funcionar mesmo te garanto que se duplicar o componente e colocar outro nome funciona, mais lembre se limpa os dados do componente !!!!! (Ideia de Português)
Clique aqui para fazer login e interagir na Comunidade :)