0

DB 対応コントロールに最初のつまずきのステップを踏んでいます (何か良いチュートリアルはありますか?)。

6 列の MySql テーブルがあり、TDbGrid にロードできました。

ただし、列の 1 つは別のテーブルへのインデックスです。それはバーコードで、それを表示するのではなく、それに関連付けられた製品名を表示したいと考えています。

それ、どうやったら出来るの?

(そして、現在の行を示す「ガター」(?)を左下に隠すことはできますか?)

ありがとう

4

4 に答える 4

4

常にSQL側から結合を実行する必要があります。プログラムで実行するよりもはるかに簡単です

そのような:

SELECT mytable.id, mytable.column1, another_table.barcode
FROM mytable
JOIN another_table ON another_table.id = mytable.barcode_id

ガターを削除するには、オプションで DBGrid プロパティのチェックを外す必要がありますdgIndicator

「DB-Aware コントロール」に関しては、delphi ヘルプを試す必要があります。

于 2012-10-12T10:40:01.593 に答える
2

テーブルの代わりに、クエリを使用します。次に、結合を使用して、次のように製品名を選択します。

SELECT
  t.*,
  p.name
FROM
  YourTable t
  INNER JOIN Product p on p.barcode = t.barcode

正確な列がわからないため、t.* を使用します。実際には、私は を使用せずselect *、代わりに特定の列を指定します。とにかく使用する場合*は、データセット/クエリの TField オブジェクトの Visible プロパティを に設定することで、特定の列を非表示にすることができますFalse

テーブルへの接続にどのコンポーネントを使用しているかはわかりませんが、それらのほとんどには、テーブル名の代わりに SQL を挿入できるクエリ カウンターパートがあります。

ガターはOptions、オブジェクト インスペクタのプロパティに移動し、展開して に設定dgIndicatorすることで非表示にできますFalse

于 2012-10-12T10:38:30.337 に答える
0

記録のために: Paradox や DBF などの ISAM データベースでは、典型的なソリューションはいわゆるmaster-detail tables relationsものであり、SQL でも機能する可能性があります。それは非常に非効率的で遅くなりますが。SQL に関する本を何冊か読むことは間違いありません。

于 2012-10-12T11:24:15.393 に答える
-1

TTableの代わりにTQueryコンポーネントを使用し、上記の推奨されるselectステートメントを使用してSQLプロパティを設定します。表示する列をSQLステートメントに追加するだけで、期待どおりの結果が得られます。「ガター」に関しては、実行時に何らかの方法でグリッドをハックする必要があります。

于 2012-10-12T11:03:35.857 に答える