VBからAccessのフィールドプロパティを設定するには


Aika  2003-02-01 00:22:11  No: 76987  IP: [192.*.*.*]

VBからAccess2000データベースのテーブルとフィールド(テキスト)の作成を行いました。
SQL内でキーの設定と値要求のプロパティは設定することができたのですが
空文字の許可とUnicode圧縮のプロパティの設定方法がわかりません。
よろしくお願いします。
作成したフィールドにADOでデータを入れるとフィールドサイズ分の文字列が強制的に
入ってしまい(255のフィールドに一文字入れると残りの分がスペースで埋まってしまう)
Unicode圧縮を変更したら直ったのでプロパティを変更しようと思ったしだいです

編集    削除
怪盗1417  2003-02-01 02:46:13  No: 76988  IP: [192.*.*.*]

主要なプロパティは、
DAO.Field オブジェクトのプロパティとして存在します。
( AllowZeroLength プロパティなど)

しかし、主要でないプロパティは存在しません。
その場合は、
DAO.Field オブジェクトの CreateProperty メソッドで
新規プロパティを作成して下さい。
( Format プロパティなど)

編集    削除
魔界の仮面弁士  2003-02-01 09:39:33  No: 76989  IP: [192.*.*.*]

Unicode圧縮ですが、これは ADOX.Columnオブジェクトの
カスタムプロパティ"Jet OLEDB:Compressed UNICODE Strings"が
相当します。

例えば、こんな感じです。

Dim oConnection As ADODB.Connection
Dim oCatalog As ADOX.Catalog
Dim oTable As ADOX.Table
  (中略)
Set oCatalog = CreateObject("ADOX.Catalog")
Set oCatalog.ActiveConnection = oConnection

oTable.Name = "MyNewTable"
With oTable.Columns
   .Append "AAA", adInteger
   .Append "BBB", adWChar, 50
   With .Item("BBB")
      Set .ParentCatalog = oCatalog
      .Properties("Jet OLEDB:Compressed UniCode Strings").Value = True
   End With
End With
oCatalog.Tables.Append oTable

編集    削除