两个表,department,member,分别用grid1,grid2显示
grid1用adotable,grid2用adoquery
我在grid1的cellclick事件中写代码让grid2显示出对应的member(类似master,detail)
上面的都没有问题
可是在我操作查询后的数据集时就会出现错误,我删除grid2的某一个记录后,就会把department表里相对应的记录给删除了,比如department表有记录A,对应了member表的3个记录B,C,D,当我删除了B,则A记录也删除了,请问为什么?该怎么办?
删除的语句我是这样写的:adoquery->Delete();
grid1用adotable,grid2用adoquery
我在grid1的cellclick事件中写代码让grid2显示出对应的member(类似master,detail)
上面的都没有问题
可是在我操作查询后的数据集时就会出现错误,我删除grid2的某一个记录后,就会把department表里相对应的记录给删除了,比如department表有记录A,对应了member表的3个记录B,C,D,当我删除了B,则A记录也删除了,请问为什么?该怎么办?
删除的语句我是这样写的:adoquery->Delete();
void __fastcall TMainForm::cxGridDBTableView1CellClick(
TcxCustomGridTableView *Sender,
TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
TShiftState AShift, bool &AHandled)
{
adoquery->Close();
adoquery->SQL->Clear();
AnsiString tempsql;
AnsiString tempid = tbl_department->FieldByName("department_id")->AsInteger;
tempsql = "select a.* from department a,member b where a.department_id = b.department_id and a.dealer_id = "+tempid
adoquery->SQL->Add(tempsql);
adoquery->Open();
}//删除adoquery记录的代码
void __fastcall TMainForm::ButtonDeleteClick(TObject *Sender)
{
if(adoquery->RecordCount == 0){
ShowMessage("不存在相关记录!");
}
else{
if(MessageBox(Handle,"确定删除该客户记录?","警告",MB_ICONINFORMATION+MB_OKCANCEL)==IDOK){
adoquery->Delete();
}
}
}
请教辣椒
tempid,tempsql:string;
......
tempid:=tbl_department.FieldByName('department_id').Asstring;
tempsql:='delete department where department_id='+tempid;
//以部门ID号作为删除的(条件)参数
......
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add(tempsql);
adoquery.prepared;
try
adoquery.execsql;//---删除从表中的对应数据
except
end; //当然删除中可以加入事务处理等操作功能,你自己试试吧。
你可以用这个FID来删除数据记录;
可以利用时间作为条件来删除数据,当然,第条记录的时间必与其他记录不同;
如果没有唯一的值来标志一行记录时,你想想是否可以利用某几个字段的值组合
来形成一条记录的唯一标志,这样可以删除该记录。
而你的從表也要有唯一的ID號為作為標式符,
這樣在修改和刪除用ID號作為條件進行操作
這樣才不會誤操作
主表:deparment_id(主键),deparment_name
从表:member_id(主键),deparment_id,member_name
我是用adoquery做为从表的数据集,在主表grid的oncellclick动态捞出从表中deparment_id和主表一样的所有资料
但是删除或修改从表时就会出错
代码有贴在上面,请帮忙看一下,谢谢了``~
member:= DBGrid1.DataSource.DataSet.Fields[0].value; //雙擊member_id(主键)獲值;
tempid:=tbl_department.FieldByName('department_id').Asstring;
tempsql:='delete department where department_id='+tempid and member_id='member;