用sql设置access的默认值

时间:2021-05-18

简述:
如何定义字段默认值

问题:
如何设定表的某字段默认值?

方法一:

用JETSQL来完成
ALTERTABLETABLENAMEALTERCOLUMNFIELDNAMETEXT(40)DEFAULT默认值


请注意,上述语句要用ADODB.CONNECTION.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
Debug.Printpro.Name&":"&pro.Value&"----type:"&pro.Type
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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章