Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 更改列数据类型和格式_Ms Access_Ms Access 2007 - Fatal编程技术网

Ms access 更改列数据类型和格式

Ms access 更改列数据类型和格式,ms-access,ms-access-2007,Ms Access,Ms Access 2007,将excel导入access 2007时,某些日期字段已变为文本字段。所以我想在access中运行查询,将这些列的数据类型更改为datetime。如何在sql中传递日期格式(“dd-mmm-yyyy” 谢谢 Joe如果您从Excel导入了一个列(字段),并且该列以文本格式结束,那么您应该非常小心,不要简单地切换到日期时间格式。如果Access没有将该字段视为混合数据类型,则应该已经将其解释为DateTime。您应该创建一个新的DateTime列,并以明确的格式使用年、月、日对其进行更新 假设您的

将excel导入access 2007时,某些日期字段已变为文本字段。所以我想在access中运行查询,将这些列的数据类型更改为datetime。如何在sql中传递日期格式(“dd-mmm-yyyy”

谢谢


Joe

如果您从Excel导入了一个列(字段),并且该列以文本格式结束,那么您应该非常小心,不要简单地切换到日期时间格式。如果Access没有将该字段视为混合数据类型,则应该已经将其解释为DateTime。您应该创建一个新的DateTime列,并以明确的格式使用年、月、日对其进行更新

假设您的列是mm/dd/yyyy,一个选项是:

UPDATE Table SET NewDateTime = Right(DT,4) & "/" & Left(DT,2) & "/" & Mid(DT,4,2)
WHERE DT Like "##/##/####"
您不能使用DDL设置Format属性,它与MS Access之外的内容无关。通常,我建议您不要在表中使用Format属性,最好在窗体和报表中对其进行控制。当查询无法按预期方式工作时,设置格式将不可避免地使某些人感到困惑

如果确实必须设置格式,则必须使用VBA、DAO和TableDef

Dim db As Database
Dim tdf As TableDef
Dim fld As DAO.Field
Dim prp As Property
Dim prpName As String
Dim prpValue As String
Dim prpType As Long

    Set db = CurrentDb
    Set tdf = db.TableDefs("Table1")
    Set fld = tdf.Fields("ADate")

    prpName = "Format"
    prpValue = "yyyy/mm/dd"
    prpType = dbText

    On Error Resume Next
    fld.Properties(prpName) = prpValue

    If Err.Number = 3270 Then
        Set prp = fld.CreateProperty(prpName, prpType, prpValue)
        Err.Clear
        fld.Properties.Append prp
    End If

    Debug.Print fld.Properties("Format")

如果您从Excel导入了一个列(字段),并且它以文本格式结束,那么您应该非常小心切换到日期时间格式。如果Access没有将该字段视为混合数据类型,则应该已经将其解释为DateTime。您应该创建一个新的DateTime列,并以明确的格式使用年、月、日对其进行更新

假设您的列是mm/dd/yyyy,一个选项是:

UPDATE Table SET NewDateTime = Right(DT,4) & "/" & Left(DT,2) & "/" & Mid(DT,4,2)
WHERE DT Like "##/##/####"
您不能使用DDL设置Format属性,它与MS Access之外的内容无关。通常,我建议您不要在表中使用Format属性,最好在窗体和报表中对其进行控制。当查询无法按预期方式工作时,设置格式将不可避免地使某些人感到困惑

如果确实必须设置格式,则必须使用VBA、DAO和TableDef

Dim db As Database
Dim tdf As TableDef
Dim fld As DAO.Field
Dim prp As Property
Dim prpName As String
Dim prpValue As String
Dim prpType As Long

    Set db = CurrentDb
    Set tdf = db.TableDefs("Table1")
    Set fld = tdf.Fields("ADate")

    prpName = "Format"
    prpValue = "yyyy/mm/dd"
    prpType = dbText

    On Error Resume Next
    fld.Properties(prpName) = prpValue

    If Err.Number = 3270 Then
        Set prp = fld.CreateProperty(prpName, prpType, prpValue)
        Err.Clear
        fld.Properties.Append prp
    End If

    Debug.Print fld.Properties("Format")