0

我有一个链接到 DataSource(链接到 TADOTable)的 DBGrid。所有这些都通过 TADOConnection 运行并连接到 MS Access

网格包含各种值,我想在单击特定字段时对其进行编辑。我在更新普通文本字段时没有遇到任何困难,但是我无法编辑包含 OLE 对象的字段。

我想要做的是,当我单击一个字段时,我想要一个打开的对话框打开并让我选择一个文件。之后,我选择的文件必须更新为我选择的行的字段。

我该怎么做呢?

4

1 回答 1

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

于 2012-07-22T01:19:41.477 回答