代码之家  ›  专栏  ›  技术社区  ›  ashveli

MS访问日期/时间格式问题?

  •  1
  • ashveli  · 技术社区  · 8 年前

    这可能是重复的,但我对MS Access DB有一个奇怪的问题。

    当我更新 日期/时间 请求日期

    10-03-2017
    

    正在更新如下

    其中为

    10-18-2017
    

    18-10-2017
    

    我在c#中使用以下代码来执行查询:

    query = "update gb_jobs set req_delivery=myDate"
    myCMD = new OleDbCommand(query, con, trans);
    int tempCnt = myCMD.ExecuteNonQuery();
    

    其中,as myDate已从日期时间转换为字符串,

    根据Albert的解决方案,我连接了 #我的日期# 但它引发了以下错误:

    query = "update gb_jobs set req_delivery=#myDate#"
    
    Error : Data type mismatch in criteria expression.
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   June7    8 年前

    一般来说,如果VBA变量类型是实际的日期类型变量,则可以将此类值直接分配给代码中的控件或记录集。

    但是,如果任何代码使用字符串结果,则无论计算机的区域设置如何,都必须将字符串格式化为USA格式。因此,您的区域设置将日期显示转换为漂浮在船上的任何内容。

    因此,任何日期格式都必须是mm/dd/yyyy。根据您的示例,您似乎遵循了该格式。这表明您的显示设置为DD/MM/yyyy。因此,从理论上讲,到目前为止,你给出的是正确的行为。

    因此,在VBA代码中,要更新(或查询)某些数据,您必须:

    dtStart    as date
    dtEnd      as date
    

    如果您设置了上述两个日期的值,那么要查询数据,您必须执行以下操作:

    strWhere = "InvoiceDate >= #" & format(dtStart,'mm/dd/yyyy') & "#" & _
           " and InvoiceDate <= #" & format(dtEnd,"mm/dd/yyyy") & "#"
    
    Docmd.OpenReport "rptInvoice",acViewPreview,,strWhere
    

    推荐文章