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に対応する非表示項目値を取得するにはどうすればよいのですか。
テーブルを二つ配置します。
片方は非表示されているテーブル、
もう一つはヒント表示用のです。
非表示にされている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開いてる暇人でした^^;
>dbCtrlGrid.hint := dm.q_shohin.fieldbyname('非表示項目名').AsString;
dbCtrlGrid.hint := dm.ds_shohin.fieldbyname('非表示項目名').AsString;
ではないですか?
>dbCtrlGrid.hint := dm.q_shohin.fieldbyname('非表示項目名').AsString;
dbCtrlGrid.hint := dm.ds_shohin.fieldbyname('非表示項目名').AsString;
ではないですか?
皆さん、ありがとうございます。
Hotaさん、dm.ds_shohin.fieldbyname とすると「fieldbynameが未定義」というエラーになります。
失礼しました。
ひょっとして、q_shohinはTQuery、ds_shohinはTDataSourceでしょうか?
それなら、
dbCtrlGrid.hint := dm.dbCtrlGrid.datasource.dataset.fieldbyname('非表示項目名').AsString;
とすればどうでしょうか?
Delphi大好きさん、HOtaさん、ありがとうございました。
今回はHOtaさんのお知恵をお借りしました。
表現がマズくて申し訳ありませんでした。
ツイート | ![]() |