掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DBGridにSELECT結果を表示させるには (ID:43725)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
yTakeです。度々、お世話になっています。 今回はデータベースに関してご教授頂ければと思います。 DELPHI XEでFirebirdをDBとして使用する事とします。 コンポーネントは、IBTable, IBQuery, IBTransaction, IBDatabase, DataSource に DBGrid, DBNavigaor を使用しています。 コンポーネントを配置し関係性を設定しただけで、Firebirdデータベースからその内容が表示されレコード間移動や追加編集がコンポーネント操作だけでSQL分を一切用いず実現され、便利さに驚いていますが、少し複雑な処理をさせる場合のプログラミング手法がよくわかりません。 具体的には、検索条件を設定してその結果をDBGrid上に表示させたいのですが、SQL文を作成しExecuteしてその結果まで得られているのですが、DBGridへの表示の仕方がわかりません。 ソース抜粋: Form2.IBQuery2.SQL.Clear(); Form2.IBQuery2.SQL.Add( 'SELECT * FROM patient_tbl ' ); Form2.IBQuery2.SQL.Add( ' WHERE MU_CALC_DATE BETWEEN ''' + FormatDateTime( 'yyyy-mm-dd', begin_Date ) + ''' AND ''' + FormatDateTime( 'yyyy-mm-dd', end_Date ) + '''' ); Form2.IBQuery2.Open(); if Form2.IBQuery2.IsEmpty = True then ShowMessage( 'Empty' ) else begin Form2.IBQuery2.RecordCount; Form2.IBQuery2.FieldCount; while Form2.IBQuery2.Eof = False do begin for i := 0 to Form2.IBQuery2.FieldCount - 1 do begin // Form2.DBGrid2.Fields[ i ] ; Form2.IBTable2.FieldValues[ 'INFO5' ] := Form2.IBQuery2.FieldByName( 'INFO5' ).Value; end; Form2.IBQuery2.Next(); end; end; Form2.IBQuery2.Close(); ここまで、 試しに一つのフィールドのみ代入させてみましたが、EIBClientError:’編集中ではありません’が出ます。 DBGrid2.Fields[ i ]へ直接代入しようとも思いましたが、読み出し専用なので不可です。 なお、IBQuery2.RecordCountで検索に掛かったレコード数が反映されると思いましたが、違う様です。複数ヒットさせても、常に'1'でした。 どの様に、DBGridに結果を表示させるべきでしょうか? 参考になるサイトがあればそこをご紹介頂けるだけでも構いません。 これまでも色々と参照しましたが、よく分かりませんでした。 以上です。よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.