Свойство Alter Access DB Precision - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь изменить свойство точности столбца с десятичным типом данных. Он создан с точностью 38, но я хочу, чтобы он был 10. Как я могу достичь этого?

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

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Десятичные поля плохо поддерживаются в JET и DAO. Попробуйте подключиться через соединение ADO / ADODB:

Dim cn As ADODB.Connection

Set cn = CurrentProject.Connection
cn.Execute "ALTER TABLE RESP ALTER COLUMN darbskaits DECIMAL(10,3);"
cn.Close
0 голосов
/ 03 марта 2020

Поскольку вы уже используете DAO для создания поля def, вы также можете использовать его для установки точности, здесь на примере текущего db:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...