DBGrid上の任意のセルに入っている情報の取り方は?

解決


Delphi2009 転属7日目  2009-09-03 09:15:17  No: 35569

急に仕事でDelphi2009を使う事になった、初心者7日目です
今、会社にある数少ない参考本(最新がD2007)と業務レベルのソ−スを元に自習中の身です・・・初歩的な質問をさせて下さい

デ−タベ−スの表テ−ブルから、情報をDBGrid上に展開しました
ある一つのセルの格納数値を見て、0とそれ以外でフォ−ム上の表示を変えて見る・・・という自習をしていますが、うまくいきません

DBGrid.Cells[3,3]…(仮に3行3列目のセルの格納情報を元に実施するとします)とやったら、Cellsというメンバは無いと怒られました

…Delphiでは、Grid(DBGrid)上の任意のセルの中身の情報を取得する折にはどのようにして行うものでしょうか?
ご教授願います


HOta  2009-09-03 22:36:08  No: 35570

参考本は珍しい言い方ですね。
TDBGridはTDatasetの内容を表示・編集するものですから、行はレコードになります。
列はTDataSetのFieldになります。どのFieldになるのかは、
DBGrid1.Columns[0].FieldNameで調べられます。
Fieldのデーターにアクセスするのは、
DBGrid1.DataSorce.DataSet.Fields[0].Value;
になります。ValueはFieldの型によりAsStringとを使用します。


Delphi2009 転属11日目  2009-09-08 05:24:55  No: 35571

ご返答ありがとうございます、世間騒がすウイルスに感染し、漸く復調途上です
そのためにHOtaさんには礼が遅くなりました、失礼しました

※※※
さて、ご助言にてShowMessageを使いDBGrid1.Columns[0].FieldNameを見たところ、(0行目)は正しく表示されました・・・OK

で続けて、3列目の情報を1行目からn行目まで順次読込んで、都度判定させて処理を行う・・・を目指し、DBGrid1.DataSorce.DataSet.Fields[0].Value;を試しましたが・・・最初の行(1行目)の各Field(=各列)しか参照できません。
TDBGrid上に展開されているレコ−ドの参照する行を変えて行きたい時にはどのように指示するのでしょうか?(次行以降の参照方法について)

宜しく御願い致します

※ところで思ったのですが、Accessとの接続に「TDataSource」、「TAdoconection」、「TAdotable」のToolを使用していますが、これらではそもそも対応できないでしょうか?

※DelphiにおけるDBとの接続方法には沢山のコンポ-ネントが用意されており、正直何を基準に選択して組み合わせればいいのか(何の本で調べて参考にすればいいのか)わからない状態です・・・FortranやCobolには無い新鮮な悩みです・・・


igy  2009-09-08 05:45:14  No: 35572

コンパイルして試していませんが、以下のような感じで、いかがですか?

with Table1 do  // DBGrid1.DataSorce.DataSet でもよいかも。
begin
  first;
  while not EOF do
  begin
    ShowMessage(Fields[0].Value);  // ShowMessage(FieldByName('SomeField').AsString);
    
    Next;
  end;
end;


igy  2009-09-08 05:55:41  No: 35573

>TDBGrid上に展開されているレコ−ドの参照する行を変えて行きたい時には
>どのように指示するのでしょうか?(次行以降の参照方法について)

先ほどのコードは見にくかったですね。

こんな感じで、いかがですか?

with Table1 do // DBGrid1.DataSorce.DataSet でもよいかも。
begin
    first;
    while not EOF do
    begin
        ShowMessage(Fields[0].Value); // ShowMessage(FieldByName('SomeField').AsString);

        Next;
    end;
end;


HOta  2009-09-08 16:15:01  No: 35574

igyさんも書いていますが、TDataSetの行を参照するので、行を移動しないと各行は参照できません。
TDBGridの行を選択すれば、それはTDataSetの行を選択したことになります。
プログラム側から変更する場合は、Nextなどで行を変更します。


転属15日目  2009-09-12 05:01:56  No: 35575

HOtaさん、並びにigyさん、ありがとうございました
おかげさまで解決しました

・・・どうも参考本が乏し事も有、Delphiでの実現方法はどうすんるんだ?という点でひたすら苦労しています

書店に行ってもAmazonへいっても、最近売っているのは一般的なコンポ−ネントの設定などの解説に終始するものが多いため、この辺の実業務向けなソ−スや設定は、既に完成している業務PGを見よう見まねで試したりしている為、中々成長しないとやきもきしています

何か良書があれば、推薦して頂ければ幸いです
今回はありがとうございました


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

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






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