织梦CMS - 轻松建站从此开始!

VBA教程、excel VBA编程、VBA视频、VBA控件,VBA应用教程,vba技巧

当前位置: vba技术联盟>Acces>

access删除满足一组条件的记录

时间:2009-08-11 18:10来源:未知 作者:vba技术联盟 点击:
可使用一种叫作删除查询的特殊查询来删除基于一个或多个条件的记录。如果条件不随时间变化,如条件90 天前下的所有订单,则可以在创建删除查询时,在查询字段的 条件 行中指定条件。如果条件时常变化,并且您想在运行查询时指定条件,则可以让删除查询提示您输入。 条件

可使用一种叫作“删除查询”的特殊查询来删除基于一个或多个条件的记录。如果条件不随时间变化,如条件“90 天前下的所有订单”,则可以在创建删除查询时,在查询字段的“条件”行中指定条件。如果条件时常变化,并且您想在运行查询时指定条件,则可以让删除查询提示您输入。

条件可以基于相同表中的字段,也可以基于另一个表中的字段。例如,可以删除基于下订单日期或基于相应客户所在城市的订单记录。第一种情况中,“订购日期”字段与订单记录在同一个表中;第二种情况中,“城市”字段在另外的表(“客户”表)中。

重要说明  删除查询不会影响表之间的关系的“实施参照完整性”“级联删除相关记录”设置。也就是说,如果在“订单-订单明细”关系中实施了参照完整性但未启用级联删除选项,则试图删除订单记录的删除查询将失败。类似地,如果为该关系启用了级联删除选项,则查询将自动从“订单明细”表中删除订单记录和相关记录。有关详细信息,请参阅删除记录所带来的影响一节。

下面我们来创建一个删除查询,用来删除与 90 天前所下订单对应的记录。您可以修改该查询,以便在查询运行时接受用户输入。在本节接近结束时,还可以修改该查询,以便删除基于相关表中的值的记录。

确保正确建立了关系。右键单击“数据库”窗口的背景,然后单击“关系”。在“关系”窗口中,识别与“订单”表相关的表以及每个关系的设置。“订单”表与“订单明细”表相关 — 该关系实施参照完整性规则并允许级联删除。“订单”表还与“运货商”、“雇员”和“客户”表相关,但这些表不会受删除的订单记录的影响。

与“订单”表相关的表

  1. 在“数据库”窗口 (“数据库”窗口:在打开 Access 数据库或 Access 项目时出现的窗口。它显示用于新建数据库对象和打开现有对象的快捷方式。)中的“对象”下,单击“查询”按钮图像,然后单击“数据库”窗口工具栏上的“新建”。 DateAdd 函数(英文)的详细信息,请访问 MSDN 网站。显示我不希望每次运行该查询时总看到这些消息框 显示我不希望每次运行该查询时总看到这些确认消息

    下面讲述如何删除基于相关表中的值的记录。我们将创建一个删除查询,用来删除由某个特定城市的客户所下订单的记录。城市信息位于“客户”表(与“订单”表相关的表)的“城市”字段中。

    1. “数据库”窗口 (“数据库”窗口:在打开 Access 数据库或 Access 项目时出现的窗口。它显示用于新建数据库对象和打开现有对象的快捷方式。)中的“对象”下,单击“查询”按钮图像,然后单击“数据库”窗口工具栏上的“新建”显示我没有在查询中看到联接对象的线段显示我不希望每次运行该查询时总看到这些消息框

      删除重复记录。原始和重复记录可能在单个表或不同的表中。

      很多情形都涉及到查找和删除重复数据。有关这些情形及查找、隐藏和删除重复数据的分步过程,请参阅文章

      查找、消除或隐藏 Access 中的重复记录。

       

      1. 显示我收到消息“该向导未安装或已禁用”

        这可能是因为 Access 正运行于沙盒模式,但您的计算机上尚未安装 Microsoft Jet 4.0 SP8 或更高版本。启用沙盒模式后,必须安装有 Jet 4.0 SP8 或更高版本,Access 才能完全发挥作用。

        有关安装 Jet 升级的详细信息,请参阅 Office Online 文章关于 Microsoft Jet 4.0 SP8 或更高版本。

        有关沙盒模式的详细信息,请参阅 Office Online 文章关于 Microsoft Jet Expression Service 沙盒模式。


      2. 选择“订单”表,因为该表包含您感兴趣的记录。然后单击“下一步”
      3. 单击“客户”表,因为这是您要对比的表。然后单击“下一步”
      4. 您将看到在两个列表中“客户ID”字段均选中。这表明,这些表将基于客户 ID 联接。单击“下一步”
      5. 选择视图中需要的字段。这里,应添加“订单ID”、“客户ID”和“订购日期”字段。单击“下一步”
      6. 接受建议的查询名称,单击“完成”以在数据表视图中查看记录。您会看到其“客户ID”字段为空或无效的记录,如下所示。

        “客户”列中的值为空或无效的记录

      7. 删除全部或部分显示的记录。有关分步信息,请参阅在数据表视图中删除记录一节。

       

    2. “新建查询”对话框中,单击“设计视图”,然后单击“确定”
    3. “显示表”对话框中,双击“客户”“订单”表,然后单击“关闭”

      这些表具有一对多的关系,因此您看到一条线段联接了两个表。

       

      如果查询基于两个不相关的表,或一个表和一个查询,则看不到联接两个对象的线段。如果删除查询基于不相关的对象,则在运行查询时,可能看到“无法从指定表删除”消息。

      为避免出现此消息,需要在两个对象间建立一个关系。具体方法是:将通用字段从第一个表或查询拖到第二个表或查询的相应字段中。然后,右键单击查询窗口上半部分的背景,单击“属性”显示查询属性工作表。最后,将“唯一的记录” 属性设置为“是”


       

    4. 在工具栏上,单击“查询类型”按钮图像旁的箭头,然后单击“删除查询”。这将使选择查询变成删除查询。
    5. 将星号 (*) 从“订单”表拖到查询设计网格中。

      将星号 (*) 从“订单”表拖到第一列的“字段”行

      在第一列中,“From”出现在“删除”行,而“订单”出现在“表”行。这表明那些行将从“订单”表上删除。

    6. 接下来,需要在“条件”行中指定条件。不能在星号 (*) 列指定条件。需要将条件字段添加到网格中,然后指定条件。例如,要删除位于伦敦的客户所下订单的记录。将“城市”字段从“客户”表拖到查询设计网格的第二列中。

      在第二列中,“Where”出现在“删除”行。

    7. “城市”列的“条件”行中,键入 = "伦敦"

       

       提示   为了允许用户在运行查询时键入城市,请在“条件”行中键入=[输入客户城市]

       

    8. 在工具栏上,单击“视图”按钮图像来预览要删除的记录。

      来自伦敦客户的订单

    9. 您将看到位于伦敦的客户所下的所有订单的记录。保存并关闭查询。
    10. 在“数据库”窗口中找到该查询并双击它。如果尚未关闭确认消息,则会询问您是否继续该删除操作。单击“是”两次,以确认要通过使用该查询删除记录。

       

      “工具”菜单上,单击“选项”。单击“编辑/查找”选项卡。在“确认”下,清除“操作查询”复选框。
    11. 如果您执行了上述所有步骤,并且有权删除数据库的记录,而数据库不处于锁定或只读状态,则此删除查询将删除来自伦敦的订单。在数据表视图中打开“订单”表,验证记录是否被删除。另外,打开“订单明细”表,确认相关详细记录是否被删除。
    <返回目录>
  2. “新建查询”对话框中,单击“设计视图”,然后单击“确定”
  3. “显示表”对话框中,双击“订单”,然后单击“关闭”
  4. 在工具栏上,单击“查询类型”按钮图像旁的箭头,然后单击“删除查询”。这将使选择查询变成删除查询。
  5. 将星号 (*) 从该表拖到查询设计网格中。

    将星号 (*) 拖到“字段”行

    在第一列中,“From”出现在“删除”行,而“订单”出现在“表”行。这表明那些行将从“订单”表上删除。

  6. 接下来,需要在“条件”行中指定条件。不能在星号 (*) 列指定条件。需要将条件列添加到网格中,然后指定条件。这里,我们要删除当前日期与订购日期相差 90 天以上的记录,因此要将“订购日期”列添加到网格中。

    设计网格中的“订购日期”列

    在第二列中,“Where”出现在“删除”行。

  7. 在第二列的“条件”行中键入 <DateAdd("d",-90, Date())DateAdd 函数在给定日期上增加或减去一个时段。本例中,该函数返回当前日期前 90 天的日期。“<” 运算符将该日期与每个订单的下单日期做比较,然后选择订购日期早于该计算值的记录。

    有关

  8. 在工具栏上,单击“视图”按钮图像来预览要删除的记录。如果当前日期是 1996 年 10 月 14 日,则 1996 年 7 月 17 日之前所下订单的记录将被删除。

    将被删除的订单记录

  9. 将查询另存为“删除订单”,关闭查询,然后返回到“数据库”窗口。
  10. 在“数据库”窗口中找到该查询并双击它。如果尚未关闭确认消息,则会询问您是否继续该删除操作。单击“是”两次,以确认要通过使用该查询删除记录。

     

    “工具”菜单上,单击“选项”。单击“编辑/查找”选项卡。在“确认”下,清除“操作查询”复选框。
  11. 如果您执行了上述所有步骤,并且有权删除数据库的记录,而数据库不处于锁定或只读状态,则此删除查询将成功删除旧记录。在数据表视图中打开“订单”表,验证记录是否被删除。另外,打开“订单明细”表,确认相关详细记录是否被删除。

下面,我们来修改“删除订单”查询,使之可以提示您输入一个自定义日期范围作为删除记录的条件。首先,从写表达式开始,假定日期不变。在这里,表达式的形式是“>日期值 And <日期值”。现在,用方括号中的消息代替表达式中的日期,如[输入起始日期] and [输入结束日期]。现在的表达式为:

>[输入起始日期] And <[输入结束日期]

当运行该查询时,Access 尝试计算该条件。如果条件中包括消息,Access 则在单独的消息框中显示该消息,如下所示。

提示输入参数以计算查询条件的消息框

在第一个消息框输入一个值并单击“确定”时,Access 显示第二条消息。这些值将代替消息来计算条件。

注意,可以显示多条消息。消息可涉及一个字段,也可涉及多个字段。例如,要显示某个特定客户在任何两个特定日期间所下的订单,可以提示用户三次 — 分别提示起始日期、结束日期和客户 ID。

本例中,将显示两条消息:一条起始日期消息和一条结束日期消息,用来让用户指定日期范围以便删除记录。 

  1. 在“数据库”窗口中,找到该查询,单击它一次来选择该查询。不要双击它,双击将使查询运行。
  2. 在“数据库”窗口工具栏上,单击“设计”以在设计视图中打开查询。
  3. 在网格中,删除“订购日期”列的“条件”行的内容,然后在“条件”行中键入 >[输入起始日期] And <[输入结束日期]
  4. 在工具栏上,单击“视图”按钮图像
  5. 出现要求输入起始日期的消息。如下图所示,键入一个日期,如 1/1/97

    “输入参数值”对话框

  6. 单击“确定”。出现要求输入结束日期的另一条消息。键入 12/1/97,然后单击“确定”
  7. 您将看到订购日期在 1997 年 1 月 1 日 到 12 月 1 日间的订单记录。如果在运行查询时指定这些值,在该视图中看到的记录将被删除。

    运行查询时将删除的记录

  8. 保存并关闭查询,然后返回到“数据库”窗口。
  9. 在“数据库”窗口中找到该查询并双击它。单击“是”一次,然后指定起始和结束日期。再次单击“是”,以确认要通过使用该查询删除记录。

     

    “工具”菜单上,单击“选项”。单击“编辑/查找”选项卡。在“确认”下,清除“操作查询”复选框。
  10. 如果您执行了上述所有步骤,并且有权删除数据库的记录,而数据库不处于锁定或只读状态,则此删除查询将删除订购日期在指定范围内的记录。在数据表视图中打开“订单”表,验证记录是否被删除。另外,打开“订单明细”表,确认相关详细记录是否被删除。
(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
栏目列表
推荐内容