用sql设置access的默认值
2018-09-06 11:26
简述:
如何定义字段默认值
问题:
如何设定表的某字段默认值?
方法一:
用JETSQL来完成
ALTERTABLETABLENAMEALTERCOLUMNFIELDNAMETEXT(40)DEFAULT默认值
请注意,上述语句要用NECTION.EXECUTE等方法来执行,直接用上述代码建立一个查询无法保存或者运行,会得到ACCESS的错误提示。
方法二:
ADOX可以。
FunctionChengTableFieldPro_ADO()
DimMyTableNameAsString
DimMyFieldNameAsString
DimGetFieldDesc_ADO
DimGetFieldDescription
MyTableName=ke_hu
MyFieldName=dw_name
DimMyDBAsNewADOX.Catalog
DimMyTableAsADOX.Table
DimMyFieldAsADOX.Column
OnErrorGoToErr_GetFieldDescription
MyDB.ActiveConnection=CurrentProject.Connection
SetMyTable=MyDB.Tables(MyTableName)
GetFieldDesc_ADO=MyTable.Columns(MyFieldName).Properties(Description)
DimproAsADODB.Property
ForEachproInMyTable.Columns(MyFieldName).Properties
Next
WithMyTable.Columns(MyFieldName)
.Properties(nullable)=True必填
必填无法用上述代码设置,出错提示为:
多步OLEDB操作产生错误。如果可能,请检查每个OLEDB状态值。没有工作被完成。
目前可以用以下语句设置:
CurrentDb.TableDefs(ke_hu).Fields(DW_NAME).Properties(Required)=False
.Properties(JetOLEDB:AllowZeroLength)=True允许空
.Properties(default)=默默默默认认认认默认值
EndWith
SetMyDB=Nothing
Bye_GetFieldDescription:
ExitFunction
Err_GetFieldDescription:
Beep
Debug.PrintErr.Description
MsgBoxErr.Description,vbExclamation
GetFieldDescription=Null
ResumeBye_GetFieldDescription
EndFunction
关于“多步错误”的一些参考:
SubChangeUnicode()
DimtdfAsTableDef
DimfldAsField
DimdbAsDatabase
DimproAsProperty
Setdb=CurrentDb
ForEachtdfIndb.TableDefs
ForEachfldIntdf.Fields
Iffld.Type=dbTextThen
IfDBEngine.Errors(0).Number=3270Then
Setpro=fld.CreateProperty(UnicodeCompression,1,0)
fld.Properties.Appendp
EndIf
fld.Properties(UnicodeCompression)=True
EndIf
Nextfld
Nexttdf
EndSub