dbCtrlGridで、表示していない値を取得したい


山田さん  2009-05-17 18:07:45  No: 34441  IP: 192.*.*.*

DELPHOI6のプロフェッショナルを触り始めたばかりの初心者です。
データモジュールdmにt_shohin、q_shohin、ds_shohinがあります。
t_shohinがマスターテーブルで、q_shohinのSQLで商品を絞り込み、ds_shohinはq_shohinに関連づけています。

dbCtrlGridのデータソースをds_shohinと設定し、いくつかの項目はdbeditで表示させていますが、それ以外の値はtipHelpで表示させたいのです。
そこで、
dbCtrlGrid.hint := dm.q_shohin.fieldbyname('非表示項目名').AsString;
として値を取得したいのですが、旨く取得できません。

現在アクティブなdbCtrlGridに対応する非表示項目値を取得するにはどうすればよいのですか。

編集 削除
Delphi大好き  2009-05-18 03:31:13  No: 34442  IP: 192.*.*.*

テーブルを二つ配置します。
片方は非表示されているテーブル、
もう一つはヒント表示用のです。

非表示にされているFiledを特定出来る別のFieldを、
もう一つのテーブルからLocatで検索させます。

それを、Hintに渡します。

例えば、tabel1.locat('品番',table2.FieldByName('品番'));
        DBGrid1.Hint := table1.fieldbyname(非表示項目名).asstring;

例(DelphiサンプルのDBDEMOエイリアスのAnimalテーブルを使った例です。

procedure TForm1.Button1Click(Sender: TObject);
begin
  table1.Locate('SIZE',table2.fieldbyname('SIZE').asinteger,[]);
  button1.Hint := table1.fieldbyname('NAME').asstring;

end;
こちらでは正常に動作確認しました^^
WinXP  SP3  D3です。

参考になれば幸いです。

眠れません・・・;
こんな時間にPC開いてる暇人でした^^;

編集 削除
HOta  2009-05-18 09:05:40  No: 34443  IP: 192.*.*.*

>dbCtrlGrid.hint := dm.q_shohin.fieldbyname('非表示項目名').AsString;
dbCtrlGrid.hint := dm.ds_shohin.fieldbyname('非表示項目名').AsString;
ではないですか?

編集 削除
HOta  2009-05-18 09:05:46  No: 34444  IP: 192.*.*.*

>dbCtrlGrid.hint := dm.q_shohin.fieldbyname('非表示項目名').AsString;
dbCtrlGrid.hint := dm.ds_shohin.fieldbyname('非表示項目名').AsString;
ではないですか?

編集 削除
山田さん  2009-05-18 10:58:34  No: 34445  IP: 192.*.*.*

皆さん、ありがとうございます。

Hotaさん、dm.ds_shohin.fieldbyname  とすると「fieldbynameが未定義」というエラーになります。

編集 削除
HOta  2009-05-18 13:15:12  No: 34446  IP: 192.*.*.*

失礼しました。
ひょっとして、q_shohinはTQuery、ds_shohinはTDataSourceでしょうか?
それなら、
dbCtrlGrid.hint := dm.dbCtrlGrid.datasource.dataset.fieldbyname('非表示項目名').AsString;
とすればどうでしょうか?

編集 削除
山田さん  2009-05-18 16:48:02  No: 34447  IP: 192.*.*.*

Delphi大好きさん、HOtaさん、ありがとうございました。
今回はHOtaさんのお知恵をお借りしました。

表現がマズくて申し訳ありませんでした。

編集 削除