主题:主从表问题
请大家帮帮我吧,我快不行了!
主从表问题
实现主从表功能的代码如下:
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 的错误提示
我初步分析是主从表功能造成的,如何解决呢?
主从表问题
实现主从表功能的代码如下:
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 的错误提示
我初步分析是主从表功能造成的,如何解决呢?