Delphi,错误:“地址xxxxxxxx的访问冲突。读取地址yyyyyyyy“,在AdoQuery.SQL.Text:=''' [英] Delphi, error :"Access violation at address xxxxxxxx. Read of address yyyyyyyy", at AdoQuery.SQL.Text:='''

查看:399
本文介绍了Delphi,错误:“地址xxxxxxxx的访问冲突。读取地址yyyyyyyy“,在AdoQuery.SQL.Text:='''的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


地址xxxxxxxx上的访问冲突。读取了地址yyyyyyyyy

"Access violation at address xxxxxxxx. Read of address yyyyyyyy"

在这个项目上,我有超过200个这样的过程,但是只有此过程会出错(仅Windows XP)。.

On this project i have more than 200 procedures like that, but only this procedure gets error (only windows xp)..

过程比有错误:

Procedure TfMain.CreateNewDocument(p_money_direction,p_status,p_base:integer);
begin
  With fMain.ADOTemp  do
  Begin
    SQL.Clear;
    SQL.Text:='INSERT INTO documents '+
              '(document_date,fk_id_status,money_direction,'+
              'paid,addition,saving,fk_id_base,fk_id_user)'+
              'VALUES '+
              '(CONVERT(DATE,:pdocument_date,103),:pfk_id_status,'+
              ':pmoney_direction,0,0,0,:pfk_id_base,:pfk_id_user)';
    Parameters.ParamByName('pdocument_date').Value:=Date;
    Parameters.ParamByName('pfk_id_status').Value:=p_status;
    Parameters.ParamByName('pmoney_direction').Value:=p_money_direction;
    Parameters.ParamByName('pfk_id_base').Value:=p_base;
    Parameters.ParamByName('pfk_id_user').Value:=fMain.ApplicationVariablers.user_id;
    ExecSQL;
  End;
end;

错误:

    SQL.Text:='INSERT INTO documents '+
              '(document_date,fk_id_status,money_direction,'+
              'paid,addition,saving,fk_id_base,fk_id_user)'+
              'VALUES '+
              '(CONVERT(DATE,:pdocument_date,103),:pfk_id_status,'+
              ':pmoney_direction,0,0,0,:pfk_id_base,:pfk_id_user)';

除线过程,第1907行出错:

Debuingging process, error at line 1907 :


推荐答案

我解决了此类问题

Procedure TfMain.CreateNewDocument(p_money_direction,p_id_status,p_id_base:integer);
Var
  ADOTemp:TAdoQuery;
begin
  ADOTemp:=TADOQuery.Create(nil);
  ADOTemp.Connection:=fMain.ADOConnection;

  With ADOTemp  do
  Begin
    SQL.Clear;
      SQL.Add('INSERT INTO documents');
      SQL.Add('(document_date,fk_id_status,money_direction,');
      SQL.Add('paid,addition,saving,fk_id_base,fk_id_user)');
      SQL.Add('VALUES ');
      SQL.Add('(CONVERT(DATE,GETDATE(),103),:pfk_id_status,:pmoney_direction,');
      SQL.Add('0,0,0,'+IntToStr(p_id_base)+',:pfk_id_user)');

    Parameters.ParamByName('pfk_id_status').Value:=p_id_status;
    Parameters.ParamByName('pmoney_direction').Value:=p_money_direction;
    //Parameters.ParamByName('p').Value:=p_id_base;
    Parameters.ParamByName('pfk_id_user').Value:=fMain.ApplicationVariablers.user_id;
    ExecSQL;
  End;
end;

我删除了 Parameters.ParamByName('p')。Value:= p_id_base; 并且有效

http:// oi43 .tinypic.com / dvotxx.jpg

但这并不是很好的孤独感

But it is not good solition

这篇关于Delphi,错误:“地址xxxxxxxx的访问冲突。读取地址yyyyyyyy“,在AdoQuery.SQL.Text:='''的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆