我有一个链接到DataSource的DBGrid(链接到TADOTable)。所有这些都通过TADOConnection运行并连接到MS Access
网格包含各种值,我想在点击特定字段时对其进行编辑。 我没有遇到更新普通文本字段的任何困难,但是我无法编辑包含OLE对象的字段。
我想要做的是,当我点击一个字段时,我想打开一个打开的对话框,让我选择一个文件。之后,我选择的文件必须更新到我选择的行的字段。
我将如何做到这一点?
答案 0 :(得分:0)
自己想出来。在此发布,以便其他人可以受益。我刚刚去了我的DBGrid和对象检查器,在事件下,我选择了OnCellClick:
procedure TfrmOne.dbgOneCellClick(Column: TColumn);
begin
var
line : integer;
begin
line := DataSource1.DataSet.FieldValues['ID'];
如您所见,line获取所选行的字段值,在本例中为ID。每行都有其唯一的ID(主键),链接/来自数据库。使用这个主键,我做了一个简单的IF语句:
tblOne.Close;
tblOne.Open;
tblOne.First
while not tblOne.Eof do
if tblOne['ID'] = line then
begin
if OpenDialog1.Execute then
{*Insert Code here*}
Exit;
end else
tblOne.Next;
end;
基本上在第二段代码中发生的是,ID与当前表行匹配。如果它不匹配,则数据库在一行上移动,直到最终匹配为止。从这里可以专门使用该行(最初在DBGrid中看到/选择)和更新字段(OLE对象)。
这不是Append或Edit命令的替代,它只允许用户执行opendialog,然后将这些文件保存到DBGrid中的选定字段。请注意,要将照片添加到数据库(jpeg),您将需要blobstreams等。可以在此处找到完整的指南:http://delphi.about.com/od/database/l/aa030601a.htm