首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alter Access DB Precision属性

Alter Access DB Precision属性
EN

Stack Overflow用户
提问于 2020-03-03 18:54:06
回答 2查看 68关注 0票数 0

我正在尝试更改具有decimal数据类型的列的Precision属性。它是用38的精度创建的,但我希望它是10。我如何才能实现它?

代码语言:javascript
复制
Sub MakeDBfile()
Dim daoDB As DAO.Database
Dim daoTable As DAO.TableDef
Dim strSQL As String
Dim FileName as String

FileName = "path to file & file name"

'Creates access file using provided path and file name
Set daoDB = DBEngine.CreateDatabase(FileName, dbLangGeneral)
'Creates table
Set daoTable = daoDB.CreateTableDef("RESP")

'Creates columns and their headers
With daoTable
  .Fields.Append .CreateField("darbskaits", dbDecimal)
End With

'Appends table to access file
daoDB.TableDefs.Append daoTable

strSQL = "ALTER TABLE RESP ALTER COLUMN darbskaits DECIMAL(10,3);"
daoDB.Connection.Execute strSQL
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-03 22:58:35

JET和DAO不能很好地支持小数字段。尝试通过ADO/ADODB连接进行连接:

代码语言:javascript
复制
Dim cn As ADODB.Connection

Set cn = CurrentProject.Connection
cn.Execute "ALTER TABLE RESP ALTER COLUMN darbskaits DECIMAL(10,3);"
cn.Close
票数 1
EN

Stack Overflow用户

发布于 2020-03-03 23:29:47

由于您已经使用DAO创建了字段def,因此您还可以使用它来设置精度,这里以current db为例:

代码语言:javascript
复制
Sub MakeDBfile()
Dim daoDB As DAO.Database
Dim daoTable As DAO.TableDef
Dim f As Field
Dim p As Property

Set daoDB = CurrentDb

Set daoTable = daoDB.CreateTableDef("RESP")

With daoTable
  ' keep field reference (not necessary, can be retreived by name later)
  Set f = .CreateField("darbskaits", dbDecimal)
  .Fields.Append f
End With

daoDB.TableDefs.Append daoTable

' set field property
Set p = f.CreateProperty("Precision", dbByte, 10)
daoDB.TableDefs("RESP").Fields("darbskaits").Properties.Append p
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60505634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档