【问题标题】:Insert query in Access在 Access 中插入查询
【发布时间】:2009-04-21 10:06:05
【问题描述】:

我从 Visual Studio 2005 构建了查询。我正在将 SQL 数据库中的记录插入 Access。

我的查询是

insert into i_mails
   (id,from_mails,to_mails,cc_mails,subject,body,
    anchor_level_id,attachment,forward_status ,reply_status,delete_status,        read_status, 
   received_date,response_date,
   batch,forward_score,delete_score,priority,
    is_auto_reply,parent_mail_id,case_id,time_bound) 

values (1,'a@a.com',  'a@a.com','a@a.com',  'Hi','--long html field--',
        7 , 'True' ,False,False,False,False,
        #12/12/2000 00:00:00# ,#12/12/2000 00:00:00#,
        0, '0','0',  1 , 
        'False',0,2,0)

我在标准表达式中遇到数据类型不匹配错误..
不知道这个错误在查询中是在哪里触发的......请帮助!!

访问数据库结构:

Id - 编号,
from_mails - 备忘录,
to_mails - 备忘录,
cc_mails - 备忘录,
主题 - 备忘录,
正文 - 备忘录,
anchor_level_id - 编号,
附件-是\否,
forward_status - 是\否,
回复状态 - 是\否,
delete_status - 是\否,
读取状态 - 是\否,
received_date - 日期时间,
response_date - 日期时间,
批次 - 编号,
forward_score - 数字, delete_score - 数字,
优先级 - 号码,
is_auto_reply - 是\否,
parent_mail_id - 号码,
case_id - 编号,
time_bound - 数字,

【问题讨论】:

  • 请正确格式化问题,它不可读。
  • 你需要告诉我们桌子的结构/设计。
  • 您不是附加到 Access,而是附加到 Jet 数据存储。
  • 可能是 .accdb 格式文件,因此可能是 Access 数据存储。

标签: sql ms-access


【解决方案1】:

对于 is_auto_reply,使用不带引号的“false”。好像是这个问题

【讨论】:

  • 你怎么知道它不是字符串?
  • is_auto_reply 数据类型在 Access 中为“是\否”
  • 在这种情况下,您不需要引号。
  • 这只是一种直觉。当您开始使用 access 作为编程工具时就会发生这种情况;)
【解决方案2】:

将每个值替换为 null(或其他“零”值)。从第一个开始,然后是第二个(将第一个保留为空),直到您将所有值替换为空值。 每次更改后测试查询。

当查询开始工作时,您更改的最后一个值就是导致问题的值。

附:它可能不是唯一不正确的值,但使用此方法您会发现所有类型错误的值。

希望对你有帮助

【讨论】:

  • 伊恩:我在你之前到达那里 :) 见上面的“或其他‘零’值”:)
  • Varun Mahajan 的回答对我来说是正确的。它现在工作正常
  • 从 Access UI 创建的 Jet 表中的字段的默认值是不需要字段,即它可以为 Null。
【解决方案3】:

不知道表结构和数据类型很难判断,但完全猜测

您尝试插入到 received_dateresponse_date 的值

由于# 符号分隔符不正确...

尝试将它们更改为

'12/12/2000 00:00:00' ,'12/12/2000 00:00:00' 
//i.e. Surround them with apostrophes

【讨论】:

  • # 符号是您在 MS Access 中分隔日期的方式。
  • 不,这并不讨厌。它只是一种不同的 SQL 方言,可以追溯到 SQL 还没有那么广泛的很长一段时间。如果您不喜欢 Jet SQL 的默认设置,请使用允许您使用 ANSI 92 而不是 ANSI 89 的数据访问方法(例如,这意味着 ADO 而不是 DAO)。
  • 一种解决方法是使用 CDATE('2000-12-12 00:00:00') 或任何您喜欢的明确格式,如果您使用 Access Query 对象,这特别好,因为 UI将 # 分隔的日期更改为自己的格式。并且适用于所有查询模式:)
【解决方案4】:

查看您尝试插入字段的数据: 附件和 is_auto_reply 当您尝试插入字符串数据“True”和“False”时,它们应该是布尔值字段。

【讨论】:

    【解决方案5】:

    检查您的“--long html field--”是否包含任何格式问题(例如,它是否包含任何撇号,这将被解释为过早结束该字段)可能值得检查。

    除此之外,其他人所说的:没有表结构的详细信息,没有人能帮助你太多。

    【讨论】:

    • 我如何在这里发布结构设计??
    • 重要的信息是表格的设计视图显示的数据类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    相关资源
    最近更新 更多