2017-09-06 3 views
1

J'ai utilisé le code ci-dessous pour créer la colonne décimale dans accessdb, mais quand j'exécuter le code qu'il retourne field definition errorcomment créer un champ décimal dans la base de données d'accès?

dbname = r'C:/Users/Dhana/Documents/NewDB.accdb' 
accApp = Dispatch("Access.Application") 
dbEngine = accApp.DBEngine 
workspace = dbEngine.Workspaces(0) 

dbLangGeneral = ';LANGID=0x0409;CP=1252;COUNTRY=0' 
newdb = workspace.CreateDatabase(dbname, dbLangGeneral, 64) 

newdb.Execute("""CREATE TABLE AAA (ID COUNTER, Field1 DECIMAL(10,3));""") 

Mais je suis en mesure de créer le champ décimal via l'interface de base de données d'accès (GUI). S'il vous plaît aidez-moi à résoudre ce problème.

+1

Un soupçon de http://allenbrowne.com/ser-49.html: [DECIMAL] * Non disponible dans l'interface de requête d'accès ou DAO. Utilisez ADO pour exécuter l'instruction de requête DDL. * (Pas 100% sûr que c'est le problème) – Andre

+0

@Andre merci beaucoup – dhana

Répondre

1

@Andre a raison, le problème est que vous ne pouvez pas utiliser le type de données DECIMAL dans DAO, vous avez besoin d'ADO.

Vous pouvez utiliser les éléments suivants:

dbname = r'C:/Users/Dhana/Documents/NewDB.accdb' 
accApp = Dispatch("Access.Application") 
dbEngine = accApp.DBEngine 
workspace = dbEngine.Workspaces(0) 

dbLangGeneral = ';LANGID=0x0409;CP=1252;COUNTRY=0' 
newdb = workspace.CreateDatabase(dbname, dbLangGeneral, 64) 
conn = accApp.CurrentProject.Connection 
conn.Execute("CREATE TABLE AAA (ID COUNTER, Field1 DECIMAL(10,3));") 
+0

Merci beaucoup – dhana