function Tmainform.mydata_execute(id:integer;sql:string;adoquery:TAdoquery):integer; begin result:=0; try adoquery.Close; adoquery.SQL.Clear; adoquery.SQL.Text:=sql; if id=0 then adoquery.Open; if id=1 then adoquery.ExecSQL; except on E:exception do begin showmessage(e.Message); result:=1; end; end; end; //自定义的函数procedure TMainForm.Delete1Click(Sender: TObject); //从add删除部分 var sql:string; begin if adoquery1.RecordCount <-1 then showmessage('无可删除记录'); if application.MessageBox('确认要删除此目录吗?','提示',mb_yesno)<>idyes then exit; stuname:=adoquery1.FieldValues['name']; sql:='delete * from add where name='''+stuname+''''; mydata_execute(1,sql,adoquery2); stu1click(sender); end;procedure TMainForm.Delete2Click(Sender: TObject); //从pho删除 var sql:string; begin if adoquery1.RecordCount<-1 then showmessage('无可删除记录'); stuname:=adoquery1.FieldValues['name']; if application.MessageBox('确定要删除?','提示',mb_yesno)<>idyes then exit; stuname:=adoquery1.FieldValues['name']; sql:='delete * from pho where name='''+stuname+''''; mydata_execute(1,sql,adoquery2); inf1click(sender); end;如果我在数据库中取消关系,程序对单个表操作没问题,无论添加或者删除,所以觉得sql语法错误应该没有吧 麻烦各位指点下
begin
result:=0;
try
adoquery.Close;
adoquery.SQL.Clear;
adoquery.SQL.Text:=sql;
if id=0 then adoquery.Open;
if id=1 then adoquery.ExecSQL;
except
on E:exception do begin
showmessage(e.Message);
result:=1;
end;
end;
end; //自定义的函数procedure TMainForm.Delete1Click(Sender: TObject); //从add删除部分
var
sql:string;
begin
if adoquery1.RecordCount <-1 then
showmessage('无可删除记录');
if application.MessageBox('确认要删除此目录吗?','提示',mb_yesno)<>idyes then
exit;
stuname:=adoquery1.FieldValues['name'];
sql:='delete * from add where name='''+stuname+'''';
mydata_execute(1,sql,adoquery2);
stu1click(sender);
end;procedure TMainForm.Delete2Click(Sender: TObject); //从pho删除
var
sql:string;
begin
if adoquery1.RecordCount<-1 then
showmessage('无可删除记录');
stuname:=adoquery1.FieldValues['name'];
if application.MessageBox('确定要删除?','提示',mb_yesno)<>idyes then
exit;
stuname:=adoquery1.FieldValues['name'];
sql:='delete * from pho where name='''+stuname+'''';
mydata_execute(1,sql,adoquery2);
inf1click(sender);
end;如果我在数据库中取消关系,程序对单个表操作没问题,无论添加或者删除,所以觉得sql语法错误应该没有吧
麻烦各位指点下
也就是说,PHO里的NAME值必须是在Add表的NAME值中有的!
主键和外键的定义你得先弄清楚!你是否把PHO表的NAME列设为主键对于PHO和ADD两张表存在的外键关系没有任何影响
因为我无论从哪个表删除数据都没有提示出错,
只是我从add表删除时,可以把一个人的信息全部删除,
而从pho表删除时,只能删除pho表中的相关信息,而不能删除add表中有关此人的信息,
哪位高手,仔细说下,多谢
能说明白点吗,如何设置触发器^ ^,在delphi中用sql语句吗
我估计你这两个表间建了外键约束,只要把这个约束删了就可以