Erro de access violation inassesible value
Meu codigo e esse
No momento que with CONEXAOfIREDAC.FDQueryNcm do ele da o erro;
Foi criado um datamodule.
procedure TSqlNcm.InsertNcm;
VAR
SeqCtrlNcmUf : String;
SQLInsertNcm: TStringList;
sqlNextivalNcm : string;
CONEXAOfIREDAC : TDMCONEXAOFIREDAC;
begin
SQLInsertNcm := TStringList.Create;
//aqui esta cria a lista para ser o codigo de insert
SQLInsertNcm.add('INSERT INTO CTRLNCMUF CTRL');
SQLInsertNcm.add('(SEQCTRLNCMUF, NCM, NCMDESCRICAO, MVAAJUSTADA4,');
SQLInsertNcm.add(' MVAAJUSTADA7, MVAAJUSTADA12, MVAAJUSTADA17,');
SQLInsertNcm.add(' MVAAJUSTADA18, ALIQUOTAINTERNA, MVAORIGINAL)');
SQLInsertNcm.add(' VALUES (SEQCTRLNCMUF.NEXTVAL, :NEWNCM, :NEWNCMDESCRICAO, :NEWMVAAJUSTADA4,');
SQLInsertNcm.add(' :NEWMVAAJUSTADA7, :NEWMVAAJUSTADA12, :NEWMVAAJUSTADA17,');
SQLInsertNcm.add(' :NEWMVAAJUSTADA18, :NEWALIQUOTAINTERNA, :NEWMVAORIGINAL)');
//Aqui cria a string seqncm
SeqCtrlNcmUf :='SEQCTRLNCMUF.NEXTVAL';
// Aqui cria o data module
CONEXAOfIREDAC := TDMCONEXAOFIREDAC.Create(CONEXAOfIREDAC);
// Aqui vamos utilisar o fdqueryNCm para pegar o nextival
with CONEXAOfIREDAC.FDQueryNcm do
begin
sql.Clear;
sql.AddStrings(SQLInsertNcm);
end;
CONEXAOfIREDAC.FDQueryNcm.ParamByName('NEWNCM').AsString := FormPrinc.vNcmFormcadastro;
CONEXAOfIREDAC.FDQueryNcm.ParamByName('NEWNCMDESCRICAO').AsString := FormPrinc.vNcmDescricaoFormcadastro;
CONEXAOfIREDAC.FDQueryNcm.ParamByName('NEWMVAAJUSTADA4').AsString := FormPrinc.vMvaAjustada4Formcadastro;
CONEXAOfIREDAC.FDQueryNcm.ParamByName('NEWMVAAJUSTADA7').AsString := FormPrinc.vMvaAjustada7Formcadastro;
CONEXAOfIREDAC.FDQueryNcm.ParamByName('NEWMVAAJUSTADA12').AsString := FormPrinc.vMvaAjustada12Formcadastro;
CONEXAOfIREDAC.FDQueryNcm.ParamByName('NEWMVAAJUSTADA17').AsString := FormPrinc.vMvaAjustada17Formcadastro;
CONEXAOfIREDAC.FDQueryNcm.ParamByName('NEWMVAAJUSTADA18').AsString := FormPrinc.vMvaAjustada18Formcadastro;
CONEXAOfIREDAC.FDQueryNcm.ParamByName('NEWALIQUOTAINTERNA').AsString := FormPrinc.vAliquotaInternaFormcadastro;
CONEXAOfIREDAC.FDQueryNcm.ParamByName('NEWMVAORIGINAL').AsString := FormPrinc.vMvaOriginalFormcadastro;
CONEXAOfIREDAC.FDQueryNcm.ExecSQL(); // procedimento que executaa query
END;
No momento que with CONEXAOfIREDAC.FDQueryNcm do ele da o erro;
Foi criado um datamodule.
Gustavo Souza
Curtidas 0
Melhor post
Carlos Natividade
06/04/2018
Boa tarde.
Se FDQueryNcm está em um DataModule, creio que deves referenciá-lo de lá: DM.FDQueryNcm.
Desculpa se não ajudo muito, mas o código é pequeno para tentar entender melhor.
Se FDQueryNcm está em um DataModule, creio que deves referenciá-lo de lá: DM.FDQueryNcm.
Desculpa se não ajudo muito, mas o código é pequeno para tentar entender melhor.
GOSTEI 1
Mais Respostas
Emerson Nascimento
06/04/2018
acredito que o problema esteja na criação do datamodule.
troque para:
ou:
// Aqui cria o data module CONEXAOfIREDAC := TDMCONEXAOFIREDAC.Create(CONEXAOfIREDAC);
troque para:
// Aqui cria o data module CONEXAOfIREDAC := TDMCONEXAOFIREDAC.Create(Self);
ou:
// Aqui cria o data module CONEXAOfIREDAC := TDMCONEXAOFIREDAC.Create(nil);
GOSTEI 0