1

MS Access 2007 プロジェクトで、次のレコード ソースを含むレポートがあります。

SELECT SomeTable.SomeCol FROM SomeTable;

SomeCol 1、2、3、6、または 9 桁の長さである必要があります。

最初に 3、6、9 を見てみましょう。そうだと言って123ください - これはそのままにしておく必要があります123。の場合123456、これを に変更する必要があります123.456。の場合123456789、これを に変更する必要があります123.456.7891、またはの場合は、それぞれおよび65に変更する必要があります。001065

これらの変更を実行するにはどうすれば変更できSELECTますか? 長さが 1、2、3、6、9 のいずれでもない場合、文字列は変更されません。

ありがとう!

4

2 に答える 2

1

あまりきれいではありませんが、解決策を見つけました。

実際にSomeTable.SomeColは、は非常に長い文字列であるため、私のシステムではさらに悪いように見えます。SELECTは、複数の を含む非常に大きなクエリの一部であるためJOINSomeTable必須です。これが最善の解決策だと感じています:

SELECT switch(
    len(SomeTable.SomeCol) < 3,
        format(SomeTable.SomeCol, '000'),
    len(SomeTable.SomeCol) = 6,
        format(SomeTable.SomeCol, '000\.000'),
    len(SomeTable.SomeCol) = 9,
        format(SomeTable.SomeCol, '000\.000\.000'),
    true,
        SomeTable.SomeCol
) as SomeCol
FROM SomeTable;
于 2012-09-24T07:55:07.737 に答える
0

私はあなたのロケールを知らないので、数字がデフォルトでストップまたはコンマのどちらに設定されているかわかりません:

SELECT IIf(Len([atext])<4,Format([atext],"000"),Replace(Format(Val([atext]),"#,###"),",",".")) AS FmtNumber
FROM Table2 AS t;

レポートをクエリに基づかずに同様のフォーマット ステートメントを使用することもできますが、関数に設定する前にコントロールの名前を変更してください。

于 2012-09-24T08:28:12.833 に答える