アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

VBAにてテーブルを作成した際の、書式設定についてご教授願います。
以下のようにテーブルを作成しております。

Set cdb = CurrentDb()

Set ctb = cdb.CreateTableDef("TBL")
ctb.Fields.Append ctb.CreateField("A番号", dbInteger)
cdb.TableDefs.Append ctb

Set ctb = Nothing
cdb.Close
Set cdb = Nothing

この『A番号』フィールドは数値型で、書式を3桁にしたいと思っております。
テーブルのデザインでは書式のところに『000』と入れれば、001、002・・・となりますが、上記のようにVBAでテーブル作成したとき、どのようにすればよいか分かりません。

以上、宜しくお願い致します。

A 回答 (4件)

リンク先をもう一度確認してください


>Set prp = fld.CreateProperty("Format", dbInteger, "000")
Set prp = fld.CreateProperty("Format", dbtext, "000")
ですよ。

追加して
fld.Properties.Append prp
の後に
Application.RefreshDatabaseWindow
を足してください
(無くても問題は有りませんがデータベースウィンドウが即更新します)
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
早速、dbtextに変更したところ3桁になりました。

勉強不足ですみません。この箇所はてっきり当該フィールドのデータ型を指定する所かと思い、dbintegerとした次第です。

ありがとうございました。
大変助かりました。

お礼日時:2012/05/02 11:43

こちらで解決するでしょう。


http://www.ruriplus.com/msaccess/Exp/exp0140.htm
ただ、DAO と ADO の両方に参照設定がしてあると
期待しない方のライブラリを見に行ってしまうかもしれないので
Dim db As Database → なにもしない
Dim tdef As TableDef → DAO.Tabledef
Dim fld As Field → DAO.Field
Dim prp As Property → DAO.Property
にしてください。
んで、"@@@@"の部分を、"000" で、

また、『書式』が『Format』なのは分かったけど他のは?は、
設定していないものは参照できませんので一旦手作業で設定します
その後

Sub てすと()
Dim db As Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim prp As DAO.Property
On Error Resume Next
Set db = Application.CurrentDb
Set tdf = db.TableDefs("てーぶる名")

For Each fld In tdf.Fields
Debug.Print "fieldName= " & fld.Name
For Each prp In fld.Properties
Debug.Print , "name=" & prp.Name _
, "type= " & prp.Type _
, "value= " & prp.Value
Next
Next
End Sub
なんてので調べてました。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

教えて頂いたサイトを参考にし、以下のようにしました。
しかし、テーブル自体は作成されますが、やはり書式が設定できません。

Dim db As Database
Dim tdef As DAO.TableDef
Dim fld As DAO.Field
Dim prp As DAO.Property

Set db = CurrentDb
Set tdef = db.CreateTableDef("TBL")
Set fld = tdef.CreateField("A番号", dbInteger)

tdef.Fields.Append fld
tdef.Fields.Refresh
db.TableDefs.Append tdef
db.TableDefs.Refresh

Set fld = tdef.Fields("A番号")
Set prp = fld.CreateProperty("Format", dbInteger, "000")
fld.Properties.Append prp


どこか間違っておりますでしょうか。

お礼日時:2012/05/02 10:08

こちらなどが分かりやすいですね。


http://www.accessclub.jp/bbs3/0461/superbeg13504 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

教えて頂いたサイトを参考にし、以下のようにしました。
しかし、テーブル自体は作成されますが、やはり書式が設定できません。

Dim oDb As DAO.Database
Dim oTd As DAO.TableDef
Dim oPrp As DAO.Property
Dim flTNK As DAO.Field

Set oDb = CurrentDb
Set oTd = oDb.CreateTableDef("TBL")

Set flTNK = oTd.CreateField("A番号", dbInteger)
oTd.Fields.Append flTNK
oDb.TableDefs.Append oTd

Set oPrp = flTNK.CreateProperty("Format", dbInteger, "000")
flTNK.Properties.Append oPrp

どこか間違っておりますでしょうか。

お礼日時:2012/05/02 10:04

以下ではだめですか?



ctb.Fields.Append ctb.CreateField("A番号", dbInteger , 3)
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

試してみましたが、3桁にはなりませんでした。
また、
ctb.Fields.Append ctb.CreateField("A番号", dbInteger , "000")
もダメでした。

お礼日時:2012/05/01 18:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A