質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.10%

検索結果を再度画面を表示したときも残すようにしたい。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 368

rozeo

score 14

 前提・実現したいこと

DelphiでMySQLのデータを検索する機能を作っています。
検索結果を出力した後に、画面を閉じ、再度画面を開いた際に、前回の検索結果が表示される状態にしたいと思っています。
どの点に着目して、どういう設定にすればいいのかご教授頂けたらと思います。
プロシージャ内のソースコードが怪しいのか、プロパティなどか、データモジュール側なのか。
その他など。

 該当のソースコード

// 表示初期化
procedure Tfrmitems2.FormShow(Sender: TObject);
var
  strSQL : String;
begin
  DataModuleitems.openModule;

  strSQL := 'select 省略';
  with DataModuleitems.FDQmitem_list2 do
  begin
    SQL.Text := strSQL;
    Active := False;
    Active := True;
  end;

end;


// 検索
procedure Tfrmitems2.FrmBtn41btnsrchClick(Sender: TObject);
var
  strSQL1 : String;
  strSQL2 : String;
begin
  FrmBtn41.btnsrchClick(Sender);

  strSQL1 := 'select 省略 '
  strSQL2 := '省略';

  strSQL1 := strSQL1 + strSQL2 + ' order by 省略';
  with DataModuleitems.FDQmitem_list2 do
  begin
    SQL.Text := strSQL1;
    Active := False;
    Active := True;
  end;

end;

// 閉じる
procedure Tfrmitems2.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  DataModulePickitems.closeModule;
end;

 試したこと

上記の仕様が出来ているフレームがあり、そちらと見比べて、表示初期化、検索、クローズのソースコード、プロパティ、イベントなどを一通り見比べて修正デバッグ実行を試したのですが、上手くいきませんでした。

 補足情報(FW/ツールのバージョンなど)

Embarcadero® Delphi 10.1 Berlin

<追記1>
検索フレームのソースコード、表示、検索、閉じるを追記。必要ない箇所はかなり簡略化しました。
SQL文とデータベース側は問題ないかと思われるのでテーブル情報は一先ず置いておいきます。

<追記2>
簡略化したコードを眺めて気づいたのですが、DataModuleitems.FDQmitem_list2に検索でSQL文を埋めた後、再表示すると元のSQL文をまた再表示してしまってることに気づきました。テーブルを別々にして試してみようと思います。
⇒データクエリを二つ作ってみたのですが、表示するグリッドを一つにしたいので断念しました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Orlofsky

    2018/11/21 12:26

    現象を再現できる最小限のコード、使っているテーブルの CREATE TABLE, 数件で良いからテーブルのデータのINSERTを質問に追記しては?

    キャンセル

  • rozeo

    2018/11/21 13:04

    ご指摘ありがとうございます。後程追記します。

    キャンセル

回答 2

checkベストアンサー

+2

単にその検索結果をどこかに保存しておいて、表示するときにそれをあてがってやればいいだけでは。

#ふわっとした質問なのでふわっとした回答になっております

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/21 13:05

    ご回答ありがとうございます。
    仰るとおりですね。
    出来ているフレームとの違いにばかり固執していました。

    キャンセル

  • 2018/11/21 13:14

    簡単にするなら、その検索フォームを閉じるときに破棄せずに非表示にするだけにしといて、
    あとそれを再表示するだけにしておくとか

    キャンセル

  • 2018/11/21 14:40

    再表示の際に、表示初期化がされるためSQLが元に戻ってしまうようです。
    検索時にフラグを立てて、フラグが有効時はSQLを上書きしないようにするのはどうでしょうか?

    キャンセル

0

検索時にフラグを立てて、フラグが有効時はSQLを上書きしないようにしました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る