Fórum Problema com a query #573045
21/12/2016
0
Alan
Curtir tópico
+ 0Post mais votado
21/12/2016
procedure TFrmimportarncm.BitBtn1Click(Sender: TObject);
begin
qryNCM.Close; // >> Aqui você fecha a qryNCM
qryNCM.FetchAll; // >> Aqui com a qry fechada você tenta carregar todos os registros
qryNCM.First; // >> Aqui com a qry fechada você tenta ir para o inicio
Então depois de
qryNCM.Close;
qryNCM.open; // aqui você abre a query e segue
qryNCM.FetchAll;
qryNCM.First;
Raimundo Pereira
Gostei + 1
Mais Posts
21/12/2016
Raimundo Pereira
Gostei + 0
21/12/2016
Alan
function XlsToStringGrid(XStringGrid: TStringGrid; xFileXLS: string): Boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
Frmimportarncm: TFrmimportarncm;
implementation
{$R *.dfm}
uses ufrmPrincipal;
Function Tfrmimportarncm.Atualizar_Alq(Comando_SQL:string):boolean;
begin
QryUpdate.Close;
QryUpdate.sql.Clear;
QryUpdate.sql.Text:=Comando_SQL;
try
QryUpdate.ExecSQL;
Result:=true;
except
Result:=False;
end;
end;
procedure TFrmimportarncm.BitBtn1Click(Sender: TObject);
begin
qryNCM.Close;
qryNCM.FetchAll;
qryNCM.First;
//Iniciamos um for na tabela ncm e ao mesmo tempo vamos atualizando
if not qryNCM.Eof then
repeat
//TODOS OS PRODUTOS CUJO NCM SEJA O ATUAL DA TABELA NCM SERÁ ATUALIZADO
Atualizar_Alq('UPDATE PRODUTOS SET ALIQUOTA_IMP='''+qryNCM.FieldByName('ALIQUOTAIMPOSTO').AsString+''' WHERE NCM_SH ='''+qryNCM.FieldByName('NCM').AsString+'''');
qryNCM.Next;
until qryNCM.Eof;
ShowMessage('Atualização finalizada');
end;
procedure TFrmimportarncm.bSalvarClick(Sender: TObject);
var
x:integer;
begin
//query.execsql;
for x:=1 to dbimportarncm.RowCount-1 do
begin
TRY
//dtsimportar.Close;
dtsimportar.Insert;
//dtsimportar['CODIGO'] := StrToInt(dbimportarncm.Cells[0,x]);
dtsimportar['NCM'] :=dbimportarncm.Cells[0,x];
dtsimportar['EX'] :=dbimportarncm.Cells[3,x];
dtsimportar['TABELA'] :=dbimportarncm.Cells[2,x];
dtsimportar['DESCRICAO'] := dbimportarncm.Cells[1,x];
dtsimportar['ALIQUOTANACIONAL'] :=StringReplace((dbimportarncm.Cells[4,x]), '.', ',', [rfReplaceAll]);
dtsimportar['ALIQUOTAIMPOSTO'] := StringReplace((dbimportarncm.Cells[5,x]), '.', ',', [rfReplaceAll]);
dtsimportar.Post;
//dtsimportar.Open;
finally
end;
end;
end;
procedure TFrmimportarncm.btncancelarClick(Sender: TObject);
begin
CLOSE;
end;
procedure TFrmimportarncm.btnCarregarClick(Sender: TObject);
begin
if OpenDialog1.Execute then
XlsToStringGrid(dbimportarncm,OpenDialog1.FileName)
end;
procedure TFrmimportarncm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
dtsimportar.Close;
end;
procedure TFrmimportarncm.FormShow(Sender: TObject);
begin
dtsimportar.Open;
qrylimpa.Close;
qrylimpa.Open;
QRYZERAGENERATOR.Close;
QRYZERAGENERATOR.Open;
end;
function Tfrmimportarncm.XlsToStringGrid(XStringGrid: TStringGrid;
xFileXLS: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
XLSAplicacao, AbaXLS: OLEVariant;
RangeMatrix: Variant;
x, y, k, r: Integer;
begin
Result := False;
// Cria Excel- OLE Object
XLSAplicacao := CreateOleObject('Excel.Application');
try
// Esconde Excel
XLSAplicacao.Visible := False;
// Abre o Workbook
XLSAplicacao.Workbooks.Open(xFileXLS);
{Selecione aqui a aba que você deseja abrir primeiro - 1,2,3,4....}
XLSAplicacao.WorkSheets[1].Activate;
{Selecione aqui a aba que você deseja ativar - começando sempre no 1 (1,2,3,4) }
AbaXLS := XLSAplicacao.Workbooks[ExtractFileName(xFileXLS)].WorkSheets[1];
AbaXLS.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
// Pegar o número da última linha
x := XLSAplicacao.ActiveCell.Row;
// Pegar o número da última coluna
y := XLSAplicacao.ActiveCell.Column;
// Seta xStringGrid linha e coluna
XStringGrid.RowCount := x;
XStringGrid.ColCount := y;
// Associaca a variant WorkSheet com a variant do Delphi
RangeMatrix := XLSAplicacao.Range['A1', XLSAplicacao.Cells.Item[x, y]].Value;
// Cria o loop para listar os registros no TStringGrid
k := 1;
repeat
for r := 1 to y do
XStringGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[k, r];
Inc(k, 1);
until k > x;
RangeMatrix := Unassigned;
finally
// Fecha o Microsoft Excel
if not VarIsEmpty(XLSAplicacao) then
begin
XLSAplicacao.Quit;
XLSAplicacao := Unassigned;
AbaXLS := Unassigned;
Result := True;
end;
end;
end;
ta tudo ai p2,o button que atualiza é o bitbtn1!!!Vê se você consegui me ajudar por favor
Gostei + 0
21/12/2016
Alan
Gostei + 0
21/12/2016
Alan
Gostei + 0
22/12/2016
Raimundo Pereira
Você terá que analisar todo cadastro de produtos, na verificação você tentará localizar o ncm na tabela de ncm
Se o ncm do produto consta na tabela de ncm >> Atualiza o cadastro do produto para aliq_icms contido na tabela de ncm
Se não encontrar, atualiza o cadastro de produtos para 0
Acredito que essa era a ideia inicial, como falei se você tiver muitos registro na tabela de produtos talvez fique um pouco lento.
Sucesso
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)