Erro de access violation inassesible value

06/04/2018

0

Meu codigo e esse
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

Gustavo Souza

Responder

Post mais votado

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.

Carlos Natividade

Carlos Natividade
Responder

Mais Posts

12/04/2018

Emerson Nascimento

acredito que o problema esteja na criação do datamodule.

// 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);


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar