質問

これは私の問題です。ログメッセージをたくさん保管する必要があり、それを簡単に検索してフィルタリングできるようにSQLite3データベースに保管するのが賢明だと思いました。

ログメッセージを標準リストウィジェットに表示します(wxWidgetsを使用)。リストには複数の列があり、ユーザーがソートおよびフィルタリングできます。

現在、これを処理する最善の方法はわかりません。私はいくつかの可能な解決策を考えています:

  1. すべてのメッセージをメモリに読み取ります。 (リスト内のランダムな位置に)新規または変更されたログメッセージがある場合、リスト全体を更新する必要があります。ユーザーがリストをフィルタリングしたり、別の列でソートしたりする場合も同じです。
  2. すべてのIDを配列に読み込み、オンデマンドで完全なログメッセージを取得します(ユーザーがリストをスクロールして表示されるようにします)。
  3. SQLインターフェースを使用してオンデマンドで結果をフェッチし、SQLを使用して必要なサブ結果を正確に選択します。

しかし、実際、私はこの種の問題を扱うことに慣れていないので、どんなヒントでも大歓迎です!

役に立ちましたか?

解決

ページネーションを使用してどうですか?

SELECT *
FROM logs
WHERE ...
ORDER BY ...
LIMIT offset, count

オフセットとカウントは、選択可能な値です。これを使用して、任意の数のログエントリを取得できます。次に、次のボタンを追加して、ユーザーがエントリの次のページを表示できるようにします。フィルタリングおよびソート機能と組み合わせて、ログ検索はこれ以上簡単になりません。

他のヒント

ナディアの答えへのコメントとしてこれを書き始めましたが、私はとりとめを始め、長すぎました:)

ログエントリの数が非常に多くなると、スクロールバーが使用できなくなることに注意してください。スクロール内の最も小さな動きは、リスト内を劇的に移動することになります。そのため、ユーザーがリストの検索に使用することは実用的ではありません。

これらのエントリをユーザーが実際に見ている理由を考え、その周りを設計します。非常に大きなリストは、コードで作業するのが難しいだけでなく、ユーザーが作業するのも困難です。私はおそらく彼らにいくつかのフィルター基準とページングされた結果を与えるでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top