0

DataSourceにリンクされている(TADOTableにリンクされている)DBGridがあります。これはすべてTADOConnectionを介して実行され、MSAccessに接続します

グリッドにはさまざまな値が含まれているので、特定のフィールドをクリックしたときに編集したいと思います。通常のテキストフィールドの更新に問題はありませんが、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;

基本的に、2番目のコードで発生するのは、IDが現在のテーブル行と一致することです。一致しない場合、データベースは最終的に一致するまで1行移動します。ここから、その行(DBGridで最初に表示/選択されたもの)を具体的に操作し、フィールド(OLEオブジェクト)を更新できます。

これは、[追加]または[編集]コマンドに代わるものではなく、ユーザーがopendialogを実行して、それらのファイルをDBGridの選択したフィールドに保存できるようにするだけです。データベース(jpeg)に写真を追加するには、blobstreamなどが必要になることに注意してください。完全なガイドはここにあります:http ://delphi.about.com/od/database/l/aa030601a.​​htm

于 2012-07-22T01:19:41.477 に答える