2

TDataSource に接続された TDBGrid を使用しています。この TDataSource は、データセットとして TADOQuery を使用します。TADOQuery は Oracle10g データベースに接続し、次のクエリを保持します。

SELECT ST.desc
FROM my.subsection ST
WHERE  ST.date_disp  = :dated
ORDER BY ST.desc

ST.desc は文字列で、通常は次のようなデータが含まれます。

'1st place'
'2nd place'
'A zone'
'Her zone'
'My zone'
'Zone'

SQLTools でクエリを実行すると、最初に LETTERS で並べ替えられたデータが返され、次に NUMBERS で並べ替えられることを除いて、すべてが完全に機能します。例えば:

'A zone'
'Her zone'
'My zone'
'Zone'
'1st place'
'2nd place'

しかし、アプリケーションを実行すると、結果は最初に NUMBERS になり、次に LETTERS になります。例えば:

'1st place'
'2nd place'
'A zone'
'Her zone'
'My zone'
'Zone'

私は、Oracle が 1 つのソート言語 ( http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch5lingsort.htm ) といくつかの Delphi コンポーネント (TDBGrid または TDataSource?) を使用していることを理解しました。

次に、クエリの結果を Delphi のコンポーネントの順序に合わせようとしました。これはNUMBERS の次に LETTERSです。ただし、ユーザーの自然な順序はLETTERS 、次に NUMBERS であるため、これは望ましくありません。

どのコンポーネントがデータを「再ソート」しているかを確認する方法と、両方のソート順を同じにする方法を知っている人はいますか?

4

1 に答える 1