0

C#プログラム内で使用されるたびに破棄および再作成されるAccessデータベースの文字列フィールドから先行ゼロを削除する必要があります。ほとんどの文字列ライブラリ(SQLライブラリも含む)には、先頭または末尾の空白を削除するためのTrim関数が含まれています。残念ながら、AccessにはLTrim(string s、char []そうしたtrimChars)などがないようです。これを回避するために、私はこの怪物を作りました:

Replace(LTrim(Replace(ADDRNO,'0',  ' ')),' ',  '0')

しかし、これは明らかにAccess関数であるにもかかわらず、Replaceの未定義の関数参照になりました。

私が探しているのは、JETエンジンに置換機能を使用させるか、他の方法で完全にこれらのゼロをトリミングする方法です。

編集:置換関数の構文を修正しました。問題はまだ解決していません。

4

4 に答える 4

3

私は提案します

Val(ADDRNO)

先行ゼロのない数値部分を返します。

于 2010-07-07T21:39:46.640 に答える
0

これを実行しているコンテキストはわかりませんが、これはパラメーターの順序が異なり、一重引用符の代わりに二重引用符を使用していることを示しているようです(しばらくの間Accessを使用していないので、問題ではないかもしれません)。列名の括弧:

http://www.techonthenet.com/access/functions/string/replace.php

Replace(LTrim(Replace([ADDRNO], "0",  " "))," ", "0")

それでも同じエラーが発生する場合は、replace関数を単独で試して、問題を絞り込んでください。

Replace ("alphabet", "a", "e")

これが機能する場合は、置換機能が機能していることがわかりますが、他にも問題があります。

編集:まったく機能しない場合、ReplaceはAccessアプリケーションでのみ使用可能なVBA関数であり、Jetの一部ではない可能性があります。左/右機能のいくつかの組み合わせを試して、文字列を切り刻むことができますが、これはかなり醜いものになる可能性があります。個人的には、レコードセットを繰り返し処理し、C#コードを使用して値を変更します。うまくいけば、これが問題になるほど多くのレコードがないことを願っています。

于 2010-07-07T20:42:59.757 に答える
0

間違っているのはパラメータの順序だけだと思います。

debug.? Replace("My string", "i", "o")   -> "My Strong"
于 2010-07-07T20:43:12.663 に答える
0

トリムと置換を使用できます。

于 2010-07-07T20:45:25.507 に答える