- ベストアンサー
Access VBAによるテーブル作成時の書式
- Access VBAにおいて、テーブルを作成する際の書式設定についての方法を教えてください。
- テーブル作成時に数値型のフィールドの書式を3桁にする方法が知りたいです。
- テーブルのデザインでは書式を『000』とすることで3桁になりますが、VBAでテーブルを作成する際はどのようにすれば良いですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
リンク先をもう一度確認してください >Set prp = fld.CreateProperty("Format", dbInteger, "000") Set prp = fld.CreateProperty("Format", dbtext, "000") ですよ。 追加して fld.Properties.Append prp の後に Application.RefreshDatabaseWindow を足してください (無くても問題は有りませんがデータベースウィンドウが即更新します)
その他の回答 (3)
- nicotinism
- ベストアンサー率70% (1019/1452)
こちらで解決するでしょう。 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 なんてので調べてました。
お礼
ご回答ありがとうございます。 教えて頂いたサイトを参考にし、以下のようにしました。 しかし、テーブル自体は作成されますが、やはり書式が設定できません。 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 どこか間違っておりますでしょうか。
- m3_maki
- ベストアンサー率64% (296/460)
こちらなどが分かりやすいですね。 http://www.accessclub.jp/bbs3/0461/superbeg135048.html
お礼
ご回答ありがとうございます。 教えて頂いたサイトを参考にし、以下のようにしました。 しかし、テーブル自体は作成されますが、やはり書式が設定できません。 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 どこか間違っておりますでしょうか。
- KEN87778
- ベストアンサー率66% (4/6)
以下ではだめですか? ctb.Fields.Append ctb.CreateField("A番号", dbInteger , 3)
お礼
早速のご回答ありがとうございます。 試してみましたが、3桁にはなりませんでした。 また、 ctb.Fields.Append ctb.CreateField("A番号", dbInteger , "000") もダメでした。
お礼
ご回答ありがとうございます。 早速、dbtextに変更したところ3桁になりました。 勉強不足ですみません。この箇所はてっきり当該フィールドのデータ型を指定する所かと思い、dbintegerとした次第です。 ありがとうございました。 大変助かりました。