2012-08-02 17 views
2

我正在開發的項目的一部分是以編程方式創建一系列MDB文件,這些文件將成爲最終的可交付成果。來自客戶端的規格要求表中的一些字段有3位小數。在MDB數據庫中設置小數位

我首先使用python創建mdb文件,然後爲了能夠將列更改爲DECIMAL(10,3),我使用了ADODB(C#,.NET 4.0) - 因爲我找不到合適的東西在Python中。問題是,這對於客戶來說是不夠的。他們希望打開MDB,並在設計模式下查看這些字段的Decimal位置設置爲3.如果它們不是,則不接受該文件。

現在我已經花了3天的時間試圖想出一個解決方案的最好的部分。一個可能的候選人是DAO和Field2對象,但是這個對象迄今爲止已經不見了。我使用Microsoft DAO 3.6對象,但Field2似乎不是程序集的一部分。甚至不知道這是否會實際上做什麼需要...

有沒有人知道一種方法來做到這一點?不在乎它的DAO,ADO,OLEDB或其他任何3字母的縮寫是否誠實?我怎樣才能從這個獲得:

enter image description here

本 - 編程?

enter image description here

+0

您的客戶是否意識到小數位數屬性不影響可在該字段中存儲*的內容?它僅適用於值的顯示方式。 – HansUp 2012-08-02 16:34:58

+0

不幸的是,可能不是 – mapoholic 2012-08-02 16:42:52

回答

1

我可以告訴你如何做到這一點的VBA/DAO,這可能會給你一些想法。您必須首先追加屬性:

sSQL = "create table testX (id counter, anumber decimal(10,3))" 
CurrentProject.Connection.Execute sSQL 

Dim db As Database 
Dim tdf As TableDef 
Dim fld As dao.Field 

Set db = CurrentDb 

Set tdf = db.TableDefs("testX") 
Set fld = tdf.Fields("anumber") 
'fld.Properties("DecimalPlaces") = 3 
Set prp = fld.CreateProperty("DecimalPlaces", dbByte, 3) 
tdf.Fields("anumber").Properties.Append prp 
+0

謝謝@Remou這是否也適用於現有的表?無論如何,我會繼續努力 – mapoholic 2012-08-02 16:11:54

+0

是的,它會的。頂部的行的點是說明該表是用ADO創建的,但小數位是用DAO設置的。但是,請注意,如果小數位數屬性已創建,您將收到一個可捕獲的錯誤。 – Fionnuala 2012-08-02 16:13:56

+0

你是明星!這在C#中非常好用,非常感謝。想想下次我會更早地使用這個網站:-) – mapoholic 2012-08-02 17:05:49