問題タブ [tdbgrid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - DB グリッド: ある行の現在の行の列を別の行のインデックスとして使用する方法は?
質問のタイトルが十分に明確かどうかわかりませんが、自由に編集してください。
基本的に、2 つのデータベース テーブルを反映する 2 つの DB グリッドがあり、各グリッドには 1 つが表示されます。
ユーザーが最初のテーブルの行を選択すると (それを と呼びましょうoders
)、最初のテーブルの選択された行の列に一致する行の詳細で 2 番目のテーブルを更新します。
たとえば、そのテーブルorders
に列customer_id
があり、2 番目のテーブル ( と呼びましょうorder_details
) に、その顧客からのすべての注文の詳細 (行ごとに 1 つの注文) を入力したいとします。
2 つの@ データソース、クエリ、および接続を 2 つの s に接続できますが、SQLTDbGrid
のコーディング方法に行き詰まっています。order_details
の SQLorders
は だけSELECT * from orders
ですが、他の?
私は何かが欲しいSELECT * from order_details WHERE cutomer_id=<orderQuery>.currentRow.FieldByName("customer_id").AsInteger
- しかし、私はそれを行う方法がわかりません...
誰かが Delphi コードで私を助けることができますか?
また、その関係を設定すると、DB グリッドで新しい行を選択すると、orders
DB グリッドが自動的に更新されorder_details
ますか? または、そのためのコードを追加する必要がありますか。
Psbooks
タグがもうないことはわかっていますが (これ以上は残念です)、DB 対応コントロールのプログラミングの基礎を説明する優れた本を誰かお勧めできますか? 私は明らかにそれが必要です。ありがとう
delphi - 行選択をオフにしてDBGridの行全体に色を付けるにはどうすればよいですか?
RowSelect は OnCellClick の機能を壊すので、RowSelect をオフにする必要があります。では、現在の行のすべてのセルを強調表示して、行選択の外観をシミュレートするにはどうすればよいですか?
delphi - dgRowSelect=Falseで選択した行を追跡する方法
dgRowSelect = Falseの場合、OnDrawColumnCellメソッド内で選択した行を検出するにはどうすればよいですか?
選択したセルではなく、選択したセルを含む行。
delphi - dgRowSelect が True に設定されている場合、TDBGrid でクリックされたセルを検出しますか?
Delphi 2010 ではdgRowSelect
、 True に設定されているときにクリックされたセルを検出する方法はありますか?
通常はOnCellClick(Column: TColumn)
イベント ハンドラを使用しますが、期待どおりに動作しません。このdgRowSelect = False
手順では、クリックされた列が渡されますが、dgRowSelect = True
この手順では、クリックされた列に関係なく、最初の列が渡されます。
この奇妙な動作を修正する方法を見つけることができたとしてもOnCellClick
、パラメーターの受け渡しを呼び出すコードがどこにあるのかわかりません。TColumn
delphi - DBgridをCSVにエクスポートしますか?
ソートされたDBグリッドがあります(ユーザーが表示に影響を与えるためにいくつかのラジオボタンとチェックボックスをクリックしました)。
同じように並べ替えられたすべてのデータ(グリッドに表示されているものだけでなく)をCSVにエクスポートしたいのですが、どうすればよいですか?データ-明確にするために、ユーザー設定ではありません。
助けてくれてありがとう
[更新]sqlQuery
チェックボックスとラジオグループのユーザー設定に応じて少しずつ構築し、そのうちの1つが変更されると、
つまり、ハードコードされたクエリはなく、さまざまであり、現在の設定をエクスポートしたいと思います。
グリッドまたはデータセットからエクスポートするかどうかは十分にわかりませんが(私はdbの人ではなく、これが私の最初のDBgridです)、グリッドには次のフィールドのサブセットがあるため、グリッドが必要だと思われます。彼のデータセット。
それはジェダイのコンポーネントだと思いTJvDBGridCSVExport
ます(?)私は、膨大なコレクションをインストールするよりも、目立たないスタンドアロンのコンポーネントを好むので、これまでのところ、それらを避けようとしました。それは賢いことではないかもしれませんが、それは私が感じる方法です-ymmv(そしてprollyはそうします)
mysql - C++ Builder XE で計算フィールド値を編集する方法
いくつかの計算フィールドを表示する TDBGrid があります。私はMySQLデータベースを使用しています。
「日付」という計算フィールドのフィールド値を編集する必要がありますが、編集できません。StringField タイプを持つ「Description」という他のフィールドを編集しようとしましたが、うまくいきました!
Date は、DayOfTheMonth メソッドを使用して Day のみを表示する修正された DateTime 型の値を示しています。
これを行う方法?計算フィールドの値を編集する方法はありますか? お願い助けて...
前もって感謝します。
delphi - DBGrid の列幅を自動的に調整する方法
この Delphi コードを C++ Builder XE で使用しようとしました。言語を手動で C++ Builder 言語に変換します。
この手順は正しく機能していました。DBGrid を保持するフォームを最大化しようとすると、この手順により、グリッド幅に従って列幅が正常に分割されました。ただし、フォームの右または左でマウス コントロールを使用してフォーム幅を最小化しようとすると、この手順では列幅が各列の値の長さやラベルの長さに調整されませんでした。
それを修正する方法はありますか?または、このような問題を解決する別の手順を持っている人はいますか?
編集:わかりました、これがコードです。上記のコードを次のコードに手動で変換しました。
前もって感謝します。
delphi - TDBGrid 列のサイズ変更イベントがトリガーされた場所
TDBGrid コンポーネントがあります。グリッドの列のサイズを変更しているときにトリガーされるイベントをキャッチする必要があります。
delphi - TDBGridの垂直スクロールバーが表示されないのはなぜですか?
フォームに2つのDBグリッドがあり、一方には垂直スクロールバーがあり、もう一方にはありません。データソースクエリがグリッドの表示行よりも多くの結果を返す場合でも同様です。
の垂直スクロールバーがTDBGrid
表示されないのはなぜですか?
[更新]AnyDacを使用したDelphiXE2スターター。
プログラムを最初に起動したとき、DBグリッドには垂直スクロールバーがありますが、後で消えて絞り込みましたが、問題を修正する方法を理解できません。
2つのMySqlテーブルと2つのDBgridがあります。1つはすべてのテスト実行の概要であり、もう1つはテスト実行中に行われた測定の詳細を含みます。ユーザーが「概要」グリッドの行をクリックすると、「詳細」グリッドのクエリのパラメーターが更新されます。これは機能し、スクロールバーは削除されません。
新しいtetsの実行を開始し、「summary」テーブルに新しい行を挿入すると、問題が発生します。 「details」テーブルのスクロールバーが消えます。
AnyDacクエリは、それぞれ、
と
ご覧のとおり、テーブルにはテーブルmeasurements
への参照がありますtest_runs
次のSQLを実行すると、測定値テーブルのスクロールバーが消えます。
誰かが私が間違っていることを教えてもらえますか?ありがとう0x000F4240
[更新]ここでも問題は、テーブルに行を追加すると、test_runs
テーブルのクエリを反映するDBグリッドの垂直スクロールバーがmeasurements
消えることです。
したがって、どういうわけか、1つのDBグリッド/データセット/テーブルが他のDBグリッドに影響を与えています。
実際のMySqlデータベースのデータは問題ありません。この問題は、コマンドを使用しINSERT INTO
て2つのdecicatedクエリ(SQLは設計時に修正され、変更されていない)を使用するか、@kobikの提案を使用するかに関係なく発生しますdataset.append
。
データベースの内容は問題なく、DBの内容は正しいです。要約test_runs
DBグリッドをクリックすると、詳細measurements
DBグリッドの内容が正しく更新されます。
唯一の問題は、クエリのテーブルに行を挿入するとtest_runs
、DBグリッドのDBグリッドからスクロールバーが消えることmeasurements
です。
コメントすると、DBグリッドをクリックして、スクロールバーを表示せずにtest_runs
テストの実行を切り替えることができますが、DBグリッドにエントリがないため、現在のテストに戻ることはできません。
新しいテストを最初に開始したときdataset
、.RecordCount`はもちろんゼロです。これにより、スクロールバーが消える可能性がありますか?
ただし、測定が行われると(1秒ごと、タイマーベース)、チェックしてdataset
.RecordCount`の値が増加するので、2回目の測定後にスクロールバーを表示する必要がありますか?または、コントロールが不要であると判断した場合は、強制的に表示する必要がありますか?(DBグリッドを無効にしても、欠落しているスクロールバーは表示されませんでした)
[更新]@kobikが提案したように、run_idをテーブルのプライマリ、自動インクリメントキー、test_runs
およびテーブルのインデックスにしましたmeasurements
。上記の表の詳細を更新しました。またmastersource
、テスト実行DBグリッドにデータを入力するクエリのをテスト実行「要約」DBグリッドのクエリのデータソースに設定しました。
データベースを削除します(私のコードは最初の実行時に自動的にデータベースを再作成します)。最初は、どちらも空だったため、どちらのDBグリッドにも垂直スクロールバーがありませんでした。最初のテストを追加したとき、「概要」DBグリッドにはスクロールバーがありませんでした。これは、エントリが1つしかないため、「詳細」DBグリッドには0とエントリにスクロールバーがなく、スクロールバーが2番目の測定セットとともに表示されたためです。
2番目のテスト実行を追加すると、「sumamry」DBグリッドには2つのエントリがあるためスクロールバーがありましたが、2番目のエントリを要約に追加するとすぐに、スクロールバーは「details」DBグリッドから消えました(単一のテスト実行があった場合は実行されませんでした)、エントリの数に関係なく(測定の各セットが追加され、0、1、2measurementsQuery.RecordCount
になることを確認してブレークポイントを設定します...)
これは、(最初の))以外の新しいテスト実行を追加した場合にのみ発生することを指摘しておく価値があります。プログラムを起動すると、両方のDBグリッドに期待どおりのスクロールバーがあります(> 1エントリ)。そして、要約をクリックまたはマウスホイールで移動して、対応するテスト実行の詳細を無効にすることができます。スクロールバーが消えることはありません。新しいテスト実行を追加するまで、サマリーDBグリッドに行が挿入されます。
[更新] https://stackoverflow.com/questions/15399769/why-is-the-vertical-scrollbar-on-a-tdbgrid-not-displayed-redux
をご覧ください