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


山田さん  2009-05-18 03:07:45  No: 34441

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 12:31:13  No: 34442

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

非表示にされている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 18:05:40  No: 34443

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


HOta  2009-05-18 18:05:46  No: 34444

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


山田さん  2009-05-18 19:58:34  No: 34445

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

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


HOta  2009-05-18 22:15:12  No: 34446

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


山田さん  2009-05-19 01:48:02  No: 34447

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加