永发信息网

请问这段delphi代码哪里错了,我实在看不出来 提示 ';' not allowed before 'ELSE'

答案:2  悬赏:20  手机版
解决时间 2021-02-20 19:34
  • 提问者网友:嗝是迷路的屁
  • 2021-02-20 10:43
var bh,a,b,c:string;
begin
bh:=trim(Edit1.Text);
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from jsj where 编号='+''''+bh+'''');
ADOQuery1.Open;
If ADOQuery1.RecordCount>0 then
begin
a:=ADOQuery1.fieldbyname('材料名称').AsString;
b:=ADOQuery1.fieldbyname('型号规格').AsString;
c:=ADOQuery1.fieldbyname('计量单位').AsString;
if(Edit2.Text<>a)then
begin
ShowMessage('请更改材料名称或编号');
Exit;
end
else if(Edit3.text<>b) then
begin
ShowMessage('请更改型号规格或编号');
Exit;
end
else if(combobox1.text<>c) then
begin
ShowMessage('请计量单位或编号');
Exit;
end
else if(Edit5.text='') then
begin
ShowMessage('请输入数量');
Edit5.SetFocus;
end
else
begin
try
with ADOQuery1 do
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into jsj (编号,材料名称,型号规格,计量单位,数量) values (:编号,:材料名称,:型号规格,:计量单位,:数量)');
ADOQuery1.Parameters.ParamByName('编号').Value:=edit1.Text;
ADOQuery1.Parameters.ParamByName('材料名称').Value:=edit2.Text;
ADOQuery1.Parameters.ParamByName('型号规格').Value:=edit3.Text;
ADOQuery1.Parameters.ParamByName('计量单位').Value:=ComboBox1.Text;
ADOQuery1.Parameters.ParamByName('数量').Value:=edit5.Text;
ExecSQL;
end;
messagebox(handle,'添加成功','提醒',MB_OK);
select;
except
messagebox(handle,'数据异常','提醒',MB_OK);
end;
end;
else //这行出错
begin

end;
end;
if(Edit1.text='')then
begin
ShowMessage('请输入编号');
Edit1.SetFocus;
Exit;
end;
end;
提示55行这个 else出错,把else删掉后就正常了, else里面我还要写东西

这个else 我想对应的是这句
If ADOQuery1.RecordCount>0 then //第八行
最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-02-20 11:57
var
  bh, a, b, c: string;
  qty: integer;
begin

  if (trim(Edit1.text) = '') then
  begin
    ShowMessage('请输入编号');
    Edit1.text := '';
    Edit1.SetFocus;
    Exit;
  end;

  try
    qty := StrtoInt(Edit5.text);
    if qty < 0 then
    begin
      ShowMessage('数量错误!');
      exit;
    end;
  except
    ShowMessage('请输入数量');
    Edit5.SetFocus;
    exit;
  end;

  bh := trim(Edit1.Text);
  adoquery1.close;
  adoquery1.sql.clear;
  adoquery1.sql.add('select * from jsj where 编号=' + '''' + bh + '''');
  ADOQuery1.Open;
  if ADOQuery1.RecordCount > 0 then
  begin
    a := ADOQuery1.fieldbyname('材料名称').AsString;
    b := ADOQuery1.fieldbyname('型号规格').AsString;
    c := ADOQuery1.fieldbyname('计量单位').AsString;
    if (Edit2.Text <> a) then
    begin
      ShowMessage('请更改材料名称或编号');
      Exit;
    end
    else if (Edit3.text <> b) then
    begin
      ShowMessage('请更改型号规格或编号');
      Exit;
    end
    else if (combobox1.text <> c) then
    begin
      ShowMessage('请计量单位或编号');
      Exit;
    end;

    try
      with ADOQuery1 do
      begin
        ADOQuery1.Close;
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Add('insert into jsj (编号,材料名称,型号规格,计量单位,数量) values (:编号,:材料名称,:型号规格,:计量单位,:数量)');
        ADOQuery1.Parameters.ParamByName('编号').Value := edit1.Text;
        ADOQuery1.Parameters.ParamByName('材料名称').Value := edit2.Text;
        ADOQuery1.Parameters.ParamByName('型号规格').Value := edit3.Text;
        ADOQuery1.Parameters.ParamByName('计量单位').Value := ComboBox1.Text;
        ADOQuery1.Parameters.ParamByName('数量').Value := edit5.Text;
        ExecSQL;
      end;
      messagebox(handle, '添加成功', '提醒', MB_OK);
      select;
    except
      messagebox(handle, '数据异常', '提醒', MB_OK);
    end;

  end;
end;
全部回答
  • 1楼网友:鱼芗
  • 2021-02-20 12:17
在“else” 前面没有“;”号
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯