2017-05-24 7 views
2

クエリにフィールドがあり、フィールドが短すぎる場合はゼロで左にパディングし、Format()関数を使用してこれを行います。しかし、奇妙な結果を生む値がいくつかあります。Format関数が間違った値を返します

Format("14425112-8","00000000-00") 

はほとんどの入力の値が「00019330から78」

を返し、文字列が期待される、8桁の数字、ハイフン、2桁の数字としてフォーマットされます。しかし、ごくまれにしか値が変更されません。これは誰のためにも繰り返すことができますか?誰か説明がありますか?

ありがとうございました。

答えて

1

これは、あまりにも役立つようにするアクセスの例です。これらの値を日付として解釈しているようですが、日付インジケータ(例:(dd、mm、yyyy)など)を使用しなかったため、1-1を日付に変換してから表示しようとしました小数形式:日付に変換する場合、1/1/2017となり、小数値42736ある

debug.print Format("1-1","000000-00") 

戻り000427-36。これは、 "1-1"と解釈されるアクセスです。

にもかかわらず、アクセスは-文字を日付フォーマットを象徴するものとして予約しているようです。この関数は、実際の日付や価格などの数値を書式設定する場合にのみ便利です。書式関数を使用してオンに設定されている場合は、区切り記号を小数点に変更する必要があります。小数点は、先頭と末尾のゼロで必要なものだけを表示する唯一の文字です。

それ以外の場合は、独自の関数を作成する必要があります。

+0

ありがとうございました。これは貴重な洞察です。 – Greenspark

1

このように数字のような文字列を書式設定することはできません。試してみてください:

PaddedNumber = Right(String(8, "0") & "14425112-8", 10) 
+0

情報をお寄せいただきありがとうございます。これは、左にゼロを埋め込む興味深い方法です。しかし、私は実際にこの点でフォーマット機能がなぜ失敗するのかを理解することを望んでいるだけで、「あなたはそうすることはできません」 – Greenspark

+0

フォーマット機能は「失敗」しません。文字列を数字のように書式設定することはできません。ですから、きれいな文字列処理を行うか、文字列を数値に変換して、必要に応じてフォーマットしてください。 – Gustav

関連する問題