AccessのNull文字を取るには?


しんじ  2014-03-17 18:42:26  No: 46126  IP: [192.*.*.*]

お世話になっています。Windows7、Delphi6Proを使って開発しています。ADOを使いAccessのデーターベースを利用しているのですがNull文字(空白文字)に悩まされtいます。例えば以下の様なプログラムを行うとNull文字(空白文字)が登録され以降空白が残り続けてしまいます。空白をクリアする方法はありませんでしょうか?
宜しくお願いします。

ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
  ADOQuery1.Edit;
  ADOQuery1.FieldByName('FIELD1').AsString :='';
  ADOQuery1.Post;
  ADOQuery1.Next;
end;
ADOQuery1.Close;

編集    削除
かず  2014-03-18 19:50:01  No: 46127  IP: [192.*.*.*]

以降空白が残り続けてしまいます
意味がよくわからないですね。いったんNullを指定すると、以降Editで文字が入力できなくなる?
それともnullを指定したのに、空白(スペース)埋められているということ?
プログラムではnullを保存したので正常な動作ではないかと。

編集    削除
しんじ  2014-03-18 21:25:39  No: 46128  IP: [192.*.*.*]

かずさん、どうもです。データーは空白’  'で埋められています。
通常、何もしないと''のままですが...

編集    削除
かず  2014-03-19 02:24:57  No: 46129  IP: [192.*.*.*]

Accessデータベースは詳しく知りませんが、文字列はChar(固定長文字列)のようですね。
Varchar(可変長文字列)は指定できないのでしょうか?
SQLSeverであれは、上記のいづれかで文字列が指定できます。

余談ですが昔の汎用機やオフコンのデータベースは固定長文字列が当たり前でした。
RDBもこの仕様をいまだに使えます。PCの世界だと変な感じですが

編集    削除
しんじ  2014-03-20 00:08:00  No: 46130  IP: [192.*.*.*]

Accessでは可変長文字列はありませんでした。あきらめるしかないですかね...

編集    削除
かず  2014-03-20 00:46:06  No: 46131  IP: [192.*.*.*]

よくある話だったような、nullとSpace(n字)を同一視するようなプログラムを書くことになりますね。
Space(n字)が"      ”というような書き方だと、仕様が変わった時に不具合の原因になりやすいです。
ちょっと面倒(>_<)

COBOLだとSPACEと書くと、n個のSPACE文字でもよいので上記のようなことはありません。
固定長文字列自体がCOBOLの仕様に合わせたデータ形式です。

編集    削除
しんじ  2014-03-21 22:15:46  No: 46132  IP: [192.*.*.*]

Accessのサイトを見ると一度でも編集をした文字には以降SPACE(1)文字が付加されるとの事です。これは編集があったかどうかを識別するものらしいですがDelphiのプログラム上ではTrim(文字フィールド)と書かなければならないので少し面倒です。それで質問したわけです。

編集    削除