一个严重的问题,请各位高手帮帮我,感激不尽,时间紧,急急急

时间:2022-08-19 06:04:49
我做的试题库系统。程序运行一开始,试题,试卷查询浏览功能都没问题。但生成了试卷之后,并选择文件路径保存,同时也把信息写入“试卷信息”表。这样以后再打开试题,试卷查询浏览界面,就会发生“‘Project Project1.exe raised exception class EOLeException with message''****.mdb'不是一个有效的路径。”的错误。
我连接的数据库是Access,用的相对路径。
这个错误怎么纠错呢?是什么引起的?搞了很久都没搞定!急啊!错误。而且这种错误发生比较随机,时好时坏。
贴一段生成试卷保存和试卷浏览的代码,恳请个位高手帮忙!感激不尽!

//试卷浏览
procedure TForm_shijuan_view.BitBtn1Click(Sender: TObject);
begin
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select  *  from  试卷信息  where  课程=:课程');
adoquery1.Parameters.ParamByName('课程').Value:=combobox1.Text;
adoquery1.ExecSQL;
adoquery1.Open;
statusbar1.Panels[0].Text:='共有'+inttostr(adoquery1.RecordCount)+'条记录';
dbgrid1.Enabled:=true;
end;


//生成试卷保存一些信息到“试卷信息”表
procedure TForm_automatic_edit.BitBtn12Click(Sender: TObject);
var
   i:integer;
begin
if    combobox4.Text=''  then
      Application.MessageBox('请选择要保存的试卷文件位置','提示信息',mb_ok)
      else
      begin

adotable1.Open;
for  i:=0  to  t-1  do
if  adotable1.Locate('题目内容',infors[i].neirong,[])=true  then
begin
    adotable1.Edit;
    adotable1.FieldByName('使用次数').AsInteger:=adotable1.FieldByName('使用次数').AsInteger+1;
    adotable1.Post;
end;
adotable1.close;
end;

adotable2.Open;
adotable2.Append;
adotable2.FieldByName('名称').AsString:=combobox7.Text;
adotable2.FieldByName('课程').AsString:=combobox1.Text;
adotable2.FieldByName('等级').AsString:=combobox2.Text;
adotable2.FieldByName('专业').AsString:=combobox5.Text;
adotable2.FieldByName('班级').AsString:=combobox6.Text;
adotable2.FieldByName('总分').AsInteger:=strtoint(edit4.Text);
adotable2.FieldByName('难易程度').AsString:='一般';
adotable2.FieldByName('题量').AsInteger:=strtoint(edit5.Text);
adotable2.FieldByName('出卷时间').AsDateTime:=date();
adotable2.FieldByName('试卷文件位置').AsString:=combobox4.Text;
adotable2.FieldByName('出卷老师').AsString:=form_in.ComboBox1.Text;
adotable2.FieldByName('试卷分析').AsString:='自动出卷';
adotable2.Post;
adotable2.Close;
adotable3.Open;
if  adotable3.Locate('课程名',combobox1.Text,[])=true   then
begin
adotable3.Edit;
adotable3.FieldByName('试卷总数').AsInteger:=adotable3.FieldByName('试卷总数').AsInteger+1;
adotable3.Post;
end;
adotable3.Close;
bitbtn13.Enabled:=true;
end;

7 个解决方案

#1


看看连接字符串是什么
在出错的地方try一下检查

#2


连接字符串错误。

#3


procedure TForm1.Button1Click(Sender: TObject);
var sqll:string;
begin
  with query1 do
  begin
    close;
    sqll:='select * from jcxs where 轿车名称 like :a%';
    sql.Clear;
    sql.Add(sqll);
    Params[0].AsString:=trim(edit1.text);
    execsql;
    open
  end;
end;

#4


不好意思~
刚才网络挂吊了~
所以发错了~~

:)

#5


路径加了没有?是相对路径么?

#6


你的连接有问题   看看那里  
你的程序里边是不是有中文的变量名字啊
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select  *  from  试卷信息  where  课程=:‘’课程‘’?????’);
adoquery1.Parameters.ParamByName('课程').Value:=combobox1.Text;
//////////////adoquery1.ExecSQL;?????????????????
adoquery1.Open;

#7


bde设置错误

#1


看看连接字符串是什么
在出错的地方try一下检查

#2


连接字符串错误。

#3


procedure TForm1.Button1Click(Sender: TObject);
var sqll:string;
begin
  with query1 do
  begin
    close;
    sqll:='select * from jcxs where 轿车名称 like :a%';
    sql.Clear;
    sql.Add(sqll);
    Params[0].AsString:=trim(edit1.text);
    execsql;
    open
  end;
end;

#4


不好意思~
刚才网络挂吊了~
所以发错了~~

:)

#5


路径加了没有?是相对路径么?

#6


你的连接有问题   看看那里  
你的程序里边是不是有中文的变量名字啊
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select  *  from  试卷信息  where  课程=:‘’课程‘’?????’);
adoquery1.Parameters.ParamByName('课程').Value:=combobox1.Text;
//////////////adoquery1.ExecSQL;?????????????????
adoquery1.Open;

#7


bde设置错误