Fórum Access Violation II #157683
03/05/2003
0
Obrigado por sua atencao desde já, é que to ficando preocupado, isto é para segunda-feira o cliente é chato para ajudar.
_____________________________________________________________
1ª pergunta foi assim:
Utilizando o Delphi 6, DBExpress e Interbase 6 fiz um form com 5 TEdits, 2 TMaskedit, e um TMEmo (observações) e um componente TSqlDataset que realiza um comando INSERT INTO em uma tabela onde os values sao parametros. Ao clicar no botão gravar passo os parametros, inclusive verifico se no maskedits que são datas foram digitadas, pois não são obrigatórias. Ele grava corretamenta tabela tudo OK, mas ao sair do formulário vem o erro ACCESS VIOLATION, percebi que ao acessar o form e sair sem realizar a operação de gravação isto não acontece, tenho certeza de que está no código de gravação, mas encontro o erro. Alguém tem alguma idéia, segue o código abaixo:
With QI do begin // QI - name da TSqlQuery de inclusão
Close;
Params[0].asInteger := StrToInt(ECod.text);
Params[1].asInteger := nCod; //Variavel que obtenho o valor antes deste codigo é um sequencial somente.
Params[2].asInteger := StrToInt(EEmp.text);
Params[3].asInteger := StrToInt(EVag.text);
Params[4].asString := EFun.text;
Params[5].asCurrency := ESal.ascurrency // Este esal é um componente para valores TFpnumericEdit sempre uso;
if Trim(EObs.text) <> ´´ then begin
Params[6].asMemo := EObs.Lines.text; // Este é o memo
end else begin
Params[6].asMemo := ´ ´;
end;
if EEnc.text <> ´ / / ´ then begin
Params[7].asDate := StrToDate(EEnc.text);
end else begin
Params[7].asDate := 0;
end;
if ECon.text <> ´ / / ´ then begin
Params[8].asDate := StrToDate(ECon.text);
end else begin
Params[8].asDate := 0;
end;
if EExp.text <> ´ / / ´ then begin
Params[9].asDate := StrToDate(EExp.text);
end else begin
Params[9].asDate := 0;
end;
ExecSql;
end;
Estou desconfiado do campo Blob no Interbase, quando atualizo através do comando INSERT INTO, será possível ? Todos os parametros foram definidos com seus tipos corretamente.
Se alguém puder ajudar, desde já agradeço.
César.
_____________________________________________________________
Cesarpir
Curtir tópico
+ 0Posts
03/05/2003
Db
Gostei + 0
03/05/2003
Farore
Fabio Reis.
Gostei + 0
03/05/2003
4_olho
Apesar de sua questão estar repleta de informações, não é nesta parte que está o erro. Lembre-se que estamos partindo da SUA suposição de onde está o erro. E se você estiver errado ?
Você escreveu ´Ele grava corretamenta tabela tudo OK, mas ao sair do formulário vem o erro ACCESS VIOLATION, percebi que ao acessar o form e sair sem realizar a operação de gravação isto não acontece, tenho certeza de que está no código de gravação, mas encontro o erro. ´
Como diz que a tabela grava corretamente, ENTÃO a SQL está correta e o erro só se dá na SAÍDA do formulário. O que você faz ao fechar o formulário ? É de se supor então que você está tentando gravar o (ou no) registro errado, ou ainda, está tentando usar um valor já existente em um campo ÚNICO (campo chave).
Estou desconfiado dos 2 primeiros campos, que parecem ser chaves. Dê uma olhada.
Boa sorte !
Gostei + 0
03/05/2003
Cic.pop
try
código
except
on E:exception do
Showmessage(´ERRO: ´ + E:Message)
end;
Talvez possa mosstrar onde está o erro.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)