【问题标题】:ADO recordset addnew datetime field failsADO 记录集 addnew 日期时间字段失败
【发布时间】:2014-05-31 07:58:54
【问题描述】:

这是(非常简单的)问题:

我打开一个 MySql 表作为 ADO 记录集(例如命名为“product”)。假设该表有两个 INT 字段(例如命名为“int1”、“int2”),它们都没有默认值,所以当我向记录集添加新记录时,我必须提供这些字段。

到目前为止,代码工作正常,是这样的:

product.AddNew Array("int1", "int2"), Array(1, 2)

(代码的一些其他细节:

oConn.CursorLocation = adUseClient
product.Open sqlstr, oConn, adOpenStatic, adLockBatchOptimistic, adCmdText
Set product.ActiveConnection = Nothing)

好的,所以问题是,如果我用 on datetime 类型的列扩展表,一切都会失败,尽管我尝试了我能想象到的每一种格式。

product.AddNew Array("int1", "int2", "test"), Array(1, 2, "2014-01-01")
product.AddNew Array("int1", "int2", "test"), Array(1, 2, "20140101")
product.AddNew Array("int1", "int2", "test"), Array(1, 2, "'2014-01-01'")
product.AddNew Array("int1", "int2", "test"), Array(1, 2, dateserial(2014,01,01))

等等……

有错误信息是: 运行时错误“-2147467259 (80004005)”: 数据提供者返回 E_FAIL 状态

那么,用 datetime 类型字段添加新记录的方法是什么,没有默认值?

谢谢你,再见, 伊斯特万

好的,那是别的东西! 我发现这与日期时间格式无关。我实际上想要做的是向 PrestaShop 1.4 'ps_product' 表添加一条新记录,该表作为 ADO 记录集打开(见上文) 该表有 3 个字段,它们没有默认值,但即使我使用正确的格式,我仍然会收到上面相同的错误消息

所以这不起作用:

tmp = ps_product.Fields("date_upd").Value
ps_product.AddNew Array("id_tax_rules_group", "date_add", "date_upd"), Array(1, tmp, tmp)

有什么(新的)想法吗? :)

谢谢。

【问题讨论】:

    标签: mysql vba datetime ado recordset


    【解决方案1】:

    在这种情况下,我认为您可以直接将日期作为日期传递。

    【讨论】:

    • 好吧,不行。 (参见上面的第 4 次尝试)我实际​​上也尝试过。
    • 好吧,我唯一能想到的是 Jet 引擎日期的格式是“#2014-01-01#”,或者你可以只是 oConn.Execute("INSERT INTO ... ")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多