[前][次][番号順一覧][スレッド一覧]

mysql:8510

From: take_tk <take_tk <CQK01016@xxxxxxxxxx>>
Date: Tue, 16 Dec 2003 21:08:12 +0900
Subject: [mysql 08510] Re: Delphi+Mysql で Jpeg を登録

たけ(tk)です

[mysql 08507] Re: Delphi+Mysql で Jpegを登録 にて
takuma watanabe <takuma@xxxxxxxxxx> さん曰く:

> > ソートを掛けた並びのキーのデータセットを取得する方法ではどうでしょうか?
> すみません。どのような内容かがいまいち理解できずにいます(^^;;
> もう少し詳しく教えていただけませんか?

あ、う、う。たけ(tk)が使っているのはApollo(DelphiをRubyでラップしたもの)
なので……、うまく説明できるかな。Delphiに直すとすると……

CalcField の作り方はご存じですか? ご存じだとして……。

(1)queryを2個(キー用とデータ用)用意しておいて、

(2)データ用のquery2のsqlには'select * from USER where USERID = :key' 
をセットしておきます。

(3)キー用のquery1をグリッドに結びつけます。

(4)キー用のquery1にキー項目以外の項目を CalcField として追加します。

(5)キー用のquery1でOnCalcField を定義して、次のようにします。データ用
のquery2を開いて、そこからデータをコピーします。

procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
  Query2.params['key'].AsString := Query1['USERID'].AsString;
  Query2.open;
  Query1['USER_KIND'].AsInteger := Query2['USER_KIND'].asInteger;
  Query1['USERNAME'].AsString := Query2['USERNAME'].asString;
  //  …… 必要な項目をコピーする ……
  Query2.close;
end;

(6)キー用のquery1のsqlは次のようにします。

'select USERID from USER orderby USERNAME'

(7)これでquery1をopenすれば、グリッドに USERNAME 順で表示されるのでは
ないかと思います。

----

* Apolloではこんな感じ(↓)でうまくいっています。

  def new_datset_grid( info )
    // TQuery.create に相当。
    dataset = info.new_query
    // キー項目名
    key_field_name = info.key_field_name
    // キー項目以外の項目名を保存する。
    calc_fields_data = info.field_data.select{|f| f[0] != key_field_name }
    calc_fields = calc_fields_data.collect{|f|f[0]}
    // キー取得用queryのsqlをセットする。
    dataset.sql_text_ex = "select %k from %q order by %k"
    // 計算項目を追加する。
    dataset.add_calc_fields( calc_fields_data )
    // OnCalcFields イベントハンドラをセットする。Query1CalcFields 相当。
    dataset.on_calc_fields = proc{|dataset|
      hash = info.key_select( dataset.key_value ) // Query2 に相当
      calc_fields.each{|f| dataset[f].value = hash[f] }
    }
    return dataset
  end

* 実を言うと、DelphiでのCalcFieldの追加方法を思い出せませんデス。上で
使っている add_calc_fields では実行時に動的に追加している。

http://www.freeml.com/message/ap-ext@xxxxxxxxxx/0000007
def add_calc_field( fname, ftype, fsize, index=nil )

* Apolloはここ(↓)

http://www.moriq.com/apollo/index.html

take_tk = kumagai hidetake


[前][次][番号順一覧][スレッド一覧]

      8470 2003-12-10 19:10 [takuma watanabe <tak] MyODBC の DLL でモジュール違反          
      8484 2003-12-12 13:43 ┣[takuma watanabe <tak]                                       
      8492 2003-12-16 10:01 ┗[takuma watanabe <tak] Delphi+Mysql で Jpeg を登録           
      8493 2003-12-16 10:12  ┣[遠藤 俊裕 <endo_t@xx]                                     
      8494 2003-12-16 10:28  ┃┗[takuma watanabe <tak]                                   
      8495 2003-12-16 10:35  ┃ ┗[遠藤 俊裕 <endo_t@xx]                                 
      8497 2003-12-16 11:25  ┃  ┗[Ito Takahiro <taka@x]                               
      8498 2003-12-16 12:00  ┃   ┗[takuma watanabe <tak]                             
      8499 2003-12-16 12:25  ┃    ┗[遠藤 俊裕 <endo_t@xx]                           
      8496 2003-12-16 11:13  ┣["TAKAHASHI, Tomohiro]                                     
      8500 2003-12-16 15:12  ┣["TAKAHASHI, Tomohiro]                                     
      8501 2003-12-16 16:12  ┃┗[takuma watanabe <tak]                                   
      8503 2003-12-16 16:23  ┃ ┗[遠藤 俊裕 <endo_t@xx]                                 
      8512 2003-12-16 22:03  ┃  ┗["TAKAHASHI, Tomohiro]                               
      8517 2003-12-17 10:33  ┃   ┗[遠藤 俊裕 <endo_t@xx]                             
      8502 2003-12-16 16:17  ┗[take_tk <CQK01016@xx]                                     
      8504 2003-12-16 16:25   ┣[遠藤 俊裕 <endo_t@xx]                                   
      8505 2003-12-16 16:36   ┗[takuma watanabe <tak]                                   
      8506 2003-12-16 18:50    ┣[take_tk <CQK01016@xx]                                 
      8507 2003-12-16 19:01    ┃┗[takuma watanabe <tak]                               
->    8510 2003-12-16 21:08    ┃ ┗[take_tk <CQK01016@xx]                             
      8511 2003-12-16 21:30    ┃  ┗[takuma watanabe <tak]                           
      8513 2003-12-16 22:04    ┗["TAKAHASHI, Tomohiro]                                 
      8514 2003-12-16 22:14     ┗[takuma watanabe <tak]