• ベストアンサー

ACCESSのFieldの追加方法

VB初心者です。ACCESSのMDBに下記の構文でFieldの追加はできたのですが 少数点以下2桁に設定する方法がわからなく困っています。 Fieldプロパティにも無く、どなたか教えて下さい。 Set field01 = tdfEmployees01.CreateField("Tanka", dbCurrency) tdfEmployees01.Fields.Append field01

質問者が選んだベストアンサー

  • ベストアンサー
  • yoisho
  • ベストアンサー率64% (331/516)
回答No.2

テキストボックスなどのコントロールに対してなら、Decimalplaces = 2 のようにプロパティを設定すればよいのですが、 DA0 で、テーブルの Field オブジェクトに設定する場合には、Properties コレクションに明示的に DisplayControl プロパティを追加してやらないと、VBAから参照できません。 (Access のHELPには、Field オブジェクトのプロパティとして載っていません。) 具体的には、 Dim dbs As Database Dim tdfEmployees01 As DAO.TableDef, field01 As DAO.Field, prp As DAO.Property Set dbs = CurrentDb Set tdfEmployees01 = dbs.CreateTableDef("テーブル名") Set field01 = tdfEmployees01.CreateField("Tanka", dbCurrency) tdfEmployees01.Fields.Append field01 dbs.TableDefs.Append tdfEmployees01 Set prp = field01.CreateProperty("DecimalPlaces", dbByte, 2) Call field01.Properties.Append(prp) のようになります。 (CreateProperty は、テーブルの Append の後で実行してください。)

Likodon
質問者

お礼

早速の回答ありがとうございます。 教えて頂いた通りにコーディングすると小数点2桁が設定できました。 感謝!感謝!です。 私のレベルでは解決まで1週間かかるのではと覚悟していましたが おかげさまで非常に助かりました。 ありがとうございました。

その他の回答 (2)

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.3

すみません、訂正です。 2行目 (誤)明示的に DisplayControl プロパティを・・・・・・ (正)明示的に DecimalPlaces プロパティを・・・・・・ 以前に回答した類似のご質問の一部をそのままコピペしてしまいました。 恥ずかしいので、自信なしで・・・・・・(^_^;)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

Decimalplaces = 2 で小数点以下2桁を設定できます。

関連するQ&A

  • ACCESSデータベースにVB6(DAO)でフィールドを追加したい

    既存のACCESSデータベースのテーブルにVB6のDAOでフィールドを追加したいのですが、テーブル名.Fields.Append とかいうメソッドがあるようですが、使用方法がわからずフィールドを追加が出来ません。 具体的には、フィールド名"電話番号"で、文字型で固定文字数13を追加したいのです。 どうぞよろしくお願いします。

  • VB6,Access2000のMDBでのデータ型指定

    VB6でAccess2000のMDBを使用しています。 次のような形で一時的なレコードセットRS(0)を作成しようと思うのですが、このときの DataTypeEnum に相当するデータ形式がわかりません。 目的はMDBテーブルから作成したレコードセットRS(1)とのデータ交換です。そのMDBテーブルで数値としてあるフィールドとやりとりするRS(0)側のフィールドのデータ型(DataTypeEnum)を何に設定していいのかわかりません。 選択肢は次のページにあります。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpado260/htm/mdcstdatatypeenum.asp Set RS(0) = New ADODB.Recordset RS(0).Fields.Append "LinNo", adDouble ← この adDouble の位置で 何を指定するか。。。 RS(0).Fields.Append "JobID", adDouble RS(0).Fields.Append "JobName", adVarChar, 200 RS(0).Open よろしくお願いします。

  • VBAでのフィールド追加処理

    AccessVBAにて既に定義されているテーブルにフィールドを追加する処理にて、'**の部分でエラー(同名のフィールドが既にあるエラー)が起きます。以下の記述をしています。 フィールド追加は2つのテーブルに対して実施しています。 Do While iC < rstH.Fields.Count For Each fldLoop In tdfM.Fields sName = rstH.Fields(iC).Value If sName = fldLoop.Name Then 'H_workにはフィールドを設定 tdf1.Fields.Append tdf1.CreateField(sName, dbText, 100) Else Set fd = tdfM.CreateField(sName, dbText, 100) '空文字列の許可=true fd.AllowZeroLength = True tdfM.Fields.Append fd '** tdfM.Fields.Refresh 'Test tdf1.Fields.Append tdf1.CreateField(sName, dbText, 100) End If iC = iC + 1 If iC = rstH.Fields.Count Then Exit For End If rstH.MoveFirst Next fldLoop Loop 既に設定されているフィールド名の場合は、If sName=fldloop・・・の部分を通るはずですが、何故か 想定と違った分岐をしてしまっています。原因が解りません。どなたか教えて下さい。

  • Access 2000 の VB での テーブル作成について質問です。

    下記のようにAccess 2000のVBからDAOを使ってテーブルを作っておりますが、 作るフィールドに規定値の設定もVBからできないのでしょうか?DAOだと無理なのでしょぅか? 教えてください Dim db As DAO.Database Dim tbdef As DAO.TableDef Dim flID As DAO.Field Set db = CurrentDb Set tbdef = db.CreateTableDef("テーブル") Set flID = tbdef.CreateField("ID", dbInteger)   tbdef.Fields.Append flID   db.TableDefs.Append tbdef db.Close: Set db = Nothing

  • DAOでテーブルを作成

    DAOでテーブルを作成したいのですが 主キーにしてオートナンバー型にするにはどうすればいいですか? Sub MyTableCreate() Dim db As DAO.Database Dim tbdef As DAO.TableDef Dim Field1 As DAO.Field Dim Field2 As DAO.Field Set db = CurrentDb Set tbdef = db.CreateTableDef("T_test") Set Field1 = tbdef.CreateField("ID", dbInteger) Set Field2 = tbdef.CreateField("氏名", dbText, 20) tbdef.Fields.Append Field1 tbdef.Fields.Append Field2 db.TableDefs.Append tbdef db.Close: Set db = Nothing End Sub これで、IDフィールドを主キーにしつつ、 dbIntegerではなくオートナンバー型にしつつ、 主キーを付与する方法を教えてください。 DAOのType プロパティのヘルプを見たのですがありませんでした。 今回は http://www.accessclub.jp/dao/20.html を参考にしました。

  • データベース操作(DAO)でのフィールド追加について

    データベース(Access)のあるテーブルのフィールドをVBのコード(プログラム)から追加したのですが、現在Appendとかいうメソッドを使ってテーブルの中にあるフィールドの一番最後尾に追加するということはできました。 しかし、好きな場所(前から2番目とか…)に挿入することができません。こんなことって可能なのでしょうか?? データベースをコードから操作する上ではフィールドがどの位置にあっても関係ないのですが、メンテナンスなども考えてできればやりたいのですが、どなたか分かる方おられたら教えてもらえませんか?? (操作方法はDAOです) どうぞよろしくお願いしますm(__)m

  • Access :ALTER TABLE で作成した文字列フィールドがトリミングされない

    いつもお世話になっております。 Access2000を使用しております。 Accessで作成した、あるシステムのバージョンアップを行っております。 その際、複数のテーブルにフィールドを追加する移行プログラムを作成しております。 Dim DB As DAO.Database Set DB = OpenDatabase("外部DB.MDB") DB.Execute ("ALTER TABLE 既存テーブル ADD 追加フィールド CHAR(255)") DB.Close 'データベースを閉じる Set DB = Nothing 上記のようなプログラムを走らせたのですが、 作成された追加フィールドにデータを入力すると、 入力した値の後に指定サイズ分の空白文字ができてしまいます。 つまり、10文字入力した場合 255-10=245文字が空白として登録されてしまいます。 Unicode圧縮プロパティのせいかな、と思い、 Dim TBL As DAO.TableDef Dim FLD As DAO.Field Dim prUC As DAO.Property Set TBL = DB.TableDefs("既存テーブル") Set FLD = TBL.Fields("追加フィールド") Set prUC = FLD.Properties("UnicodeCompression") prUC.Value = True と、フィールド追加後にプロパティを変更してみたりもしたのですが、 やはり、空白が出てしまいます。 作成したフィールドの空白文字がセットされないようにするにはどのようなことを行えばよいのでしょうか。 ご教授のほど、宜しくお願い致します。

  • Accessのテーブルへ複数の主キーを設定するには

    Access2003のVBAを使って開発していますが、 サーバーから取得したローカルテーブルに 複数の主キーを設定したいのですが、うまくいきません。 ソースは下記です。 Dim db As Database Dim Tbdef As TableDef Dim Fld As Field Dim Idx As Index Set db = CurrentDb Set Tbdef = db.TableDefs("TWorker") Set Idx = Tbdef.CreateIndex("INDEX_WORKER") Idx.Fields.Applend Idx.CreateField("作業者番号") Idx.Fields.Applend Idx.CreateField("登録日時") ★ Idx.Primary = True Tbdef.Indexes.Append Idx ★行で落ちるというか、終了してしまいます。 1つの主キーなら設定できるのですが、 複数設定する方法をご教授いただけますか。 よろしくお願いします。

  • アクセス2000のデータベースにテーブルを追加して、フィールドを作成したい 

    アクセス2000のデータベースがあります。 このファイル「c:\ynet\Hz2data1.mdb」に新しいテーブル「会費管理2」を追加して、フィールドを作成したいのです。 現在は「会費管理2」テーブルがあるのを前提に下記のように書き込みしてみましたが・・・ 新しく「会費管理2」テーブルを指定したファイル「c:\ynet\Hz2data1.mdb」に作成してフィールドも作成するのを同時にできるのかしら? どなたか助けていただければ幸いです。                                           かしこ Private Sub コマンド1_Click() Beep If (MsgBox("データをアップデートしますが宜しいですか? 作業は一瞬で終わりますよ!!") = 7) Then End If Dim cnn As ADODB.Connection Dim catDB As ADOX.Catalog Dim tbl As ADOX.Table Dim colAdo As ADOX.Column strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" strCon = strCon & "Data Source=c:\ynet\Hz2data1.mdb" Set cnn = CurrentProject.Connection Set catDB = New ADOX.Catalog catDB.ActiveConnection = cnn Set tbl = New ADOX.Table tbl.Name = "会費管理2" '以下追加したいフィールド Set colAdo = New ADOX.Column With colAdo .Name = "個別台帳ID" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "会費名称ID" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "会費区分ID" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "年度" .Type = adInteger .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "入金日" .Type = adDate .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "入金額" .Type = adCurrency .Attributes = adColNullable End With tbl.Columns.Append colAdo Set colAdo = Nothing Set tbl = Nothing Set catDB = Nothing cnn.Close End Sub

  • Accessのテーブル定義作成をVBAから行う

    こんばんは フィールド定義の方法はネットで検索してある程度分かりました。 しかし、次の指定が解りません。 値要求と空文字列の許可です。 指定しないとどちらもいいえになります。はいにするにはどうすればよいのでしょうか。 今は次のようにしています。 Dim Table As DAO.TableDef Dim Field As DAO.Field Set Field = Table.CreateField("フィールの名称", dbText, 文字列の長さ) Table.Fields.Append Field

専門家に質問してみよう