回 帖 发 新 帖 刷新版面

主题:主从表问题

请大家帮帮我吧,我快不行了!
主从表问题
实现主从表功能的代码如下:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
edit3.text:=adoquery1.fieldbyname('name').asstring;
edit4.text:=adoquery1.fieldbyname('age').asstring;
edit5.text:=adoquery1.fieldbyname('sex').asstring;
edit6.text:=adoquery2.fieldbyname('hobby').asstring;

adoquery2.DataSource:=datasource1;
datasource2.DataSet:=adoquery2;
datasource1.DataSet:=adoquery1;
dbgrid2.DataSource:=datasource2;

adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select * from s where name=:name');
adoquery2.Open;

end;
解释上述代码:主表名为m,从表名为:s,点击主表中的一条记录,从表会根据主表中被选记录的name字段,显示相应的记录。
这样的功能,无法实现下面的代码功能,它的功能是在对记录进行修改等编辑时,对数据值的重复与否进行判断:
procedure TForm1.Button12Click(Sender: TObject);
begin

adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from m where name=:name');
adoquery1.Open;

  adoquery1.close;
  adoquery1.sql.clear;
  adoquery1.sql.add('select name from m where name='''+edit3.text+'''');
  adoquery1.open;

  if adoquery1.recordcount>0 then
  begin
  showmessage('已经有该用户名');
  with adoquery1 do
  begin
  close;
  open;
  end;
  exit;
  end
  else

  adoquery1.close;
  adoquery1.sql.clear;
  adoquery1.sql.add('select age from m where age='''+edit4.text+'''');
  adoquery1.open;

  if adoquery1.recordcount>0 then
  begin
  showmessage('已经有该年龄');
  with adoquery1 do
  begin
  close;
  open;
  end;
  exit;
  end
  else
  showmessage(你可以对记录进行编辑');
end;
执行这段代码会出现adoquery1:field ’name ’ not found 的错误提示
我初步分析是主从表功能造成的,如何解决呢?

回复列表 (共3个回复)

沙发

造成这个报错有多种,可能是表中无name字段,或无name关键字,或者重复使用name字段,

板凳

谢谢
把age变成*就可以了

3 楼

路过,同意一楼

我来回复

您尚未登录,请登录后再回复。点此登录或注册