您好我需要帮助删除dbgrid中的多行 首先我的数据库是访问,删除错误是“更新或刷新的密钥配置信息不足”
与dbgrid相关的adoquery是:
SELECT tblMessages。*,tblMessages.Direction,tblContacts.Name FROM tblMessages LEFT JOIN tblContacts ON tblMessages.MobileNumber = tblContacts.MobileNum WHERE(((tblMessages.Direction)= 1))
和删除方法是:adoquery1.delete;
答案 0 :(得分:1)
这与dbGrid无关,它是执行操作的数据集(adoQuery1)。 dbGrid只是可视化您的数据集记录。
确保所有表都有主键字段。我想你也应该在SELECT语句中包含两个连接表的主键。
Microsoft ADO中存在一个已知错误,我不确定它是否已在最新版本中修复;那就是:
BUG: Problem Updating ADO Hierarchical Recordset When Join Tables Share Same Column Name
它说,如果一个表中的主键与另一个表中的一个字段具有相同的名称,并且这些表连接在一起,那么您可能会得到“不足的键列信息以进行更新或刷新。“错误。
BTW,在你的SELECT语句中,你已经有了tblMessages。*,为什么你也包括tblMessages.Directions?
答案 1 :(得分:0)
“键列信息不足,无法更新或刷新” 此错误意味着删除记录后您正在刷新DBGRID或数据查询,您只需执行此操作
var
sql_String;
begin
sql_:'DELETE * FROM [yourTableName] WHERE [id] = '+DBGRID.Fields[0].AsInteger; // OR whichever Fielnumber that stores id (PrimaryKey) of the table
AdoQuery1.Active:= False;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add(sql_);
AdoQuery1.ExecSQL;
// to refresh your data you have to deactive and active the data that is showing your data in the query
MainData.Active:= False;
MainData.Active:= True;
end;