【问题标题】:Access - Store values in ComboBox to use as parameters in running a query (Run Query Button)Access - 在 ComboBox 中存储值以用作运行查询的参数(运行查询按钮)
【发布时间】:2014-06-02 08:57:20
【问题描述】:

Form 有 2 个 ComboBox(boxLaborCore、boxPosition)和一个 Button(runQuery)。通过控件向导构建的按钮,一个运行查询按钮。运行具有名为 LaborCore 和 Position 的参数的查询。根据所选工作区域/职位的类型,选择查询中会显示不同的技能。当我手动输入劳动力核心/职位时,查询运行良好,我希望能够自动执行此操作。

我将查询中的条件从 [Enter labour core] 切换为

[Forms]![Form1]![boxLaborCore]

以及从[输入位置]到

[Forms]![Form1]![boxPosition]

我了解到我需要编辑 BoundColumn 属性才能存储值。

有人可以指出我解决此问题的正确方向吗? VBA 代码会使用事件 After_Update 来解决问题吗?

你知道是什么导致了这个问题吗?我的梦想表格看起来像这样:(第 1 步)在组合框中选择劳动力核心/位置(第 3 步)单击运行查询的按钮。生成一个表格,其中包含针对指定参数的正确技能集。

此处用于查询的 SQL 代码。涉及 5 个表,2 tbls 用于 labourcore 和 position,一个 table 用于 labourcore/position 的所有可能组合,称为 workarea,以及一个包含所有技能的 table:

    SELECT tblWorkArea.ID_WorkArea, tblWorkArea.[Labor Core], tblWorkArea.Position, tblSkills.Wiring, tblSkills.[Wire Type], tblSkills.[Terminal Types], tblSkills.[NEMA Ratings], tblSkills.[UL 508], tblSkills.[Attention to Detail], tblSkills.[Lifting 50lbs], tblSkills.[Knowledge of Procedure], tblSkills.Crimper, tblSkills.[Heat Gun], tblSkills.Screwdriver, tblSkills.Stripper, tblSkills.[Impact Drill], tblSkills.[Radial Saw], tblSkills.Multimeter, tblSkills.[Torque Screwdriver/Wrench], tblSkills.[Tape Measure], tblSkills.Vacuum, tblSkills.[Drill Press], tblSkills.[Jig Saw], tblSkills.[Troubleshooting Components], tblSkills.[Problem Solving], tblSkills.Organization, tblSkills.[Large Panel], tblSkills.[Test Procedures], tblSkills.[Functional Testing], tblSkills.[Writing Test Procedures], tblSkills.[Material Management], tblSkills.[Set Meter Ability], tblSkills.[Tone Generator], tblSkills.[Megger Testing], tblSkills.[Network Tracer], tblSkills.Components, tblSkills.Fuses, tblSkills.[Heat Shrink Color Codes], tblSkills.[Proper Lug or Crimping], tblSkills.[Resistors Knowledge], tblSkills.Oscilloscopes, tblSkills.Waveforms, tblSkills.[Voltage Separation], tblSkills.[Skill x_Stapling]

    FROM ((tblLaborCore INNER JOIN tblWorkArea ON tblLaborCore.[Labor Core] = tblWorkArea.[Labor Core]) INNER JOIN tblPosition ON tblWorkArea.Position = tblPosition.Postion) INNER JOIN tblSkills ON tblWorkArea.ID_WorkArea = tblSkills.ID_WorkArea

    WHERE (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Reading Schematics])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Wiring)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Wire Type])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Terminal Types])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[NEMA Ratings])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[UL 508])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Attention to Detail])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Lifting 50lbs])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Knowledge of Procedure])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Crimper)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Heat Gun])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Screwdriver)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Stripper)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Impact Drill])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Radial Saw])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Multimeter)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Torque Screwdriver/Wrench])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Tape Measure])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Vacuum)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Drill Press])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Jig Saw])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Troubleshooting Components])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Problem Solving])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Organization)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Large Panel])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Test Procedures])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Functional Testing])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Writing Test Procedures])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Material Management])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Set Meter Ability])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Tone Generator])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Megger Testing])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Network Tracer])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Components)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Fuses)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Heat Shrink Color Codes])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Proper Lug or Crimping])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Resistors Knowledge])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Oscilloscopes)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.Waveforms)<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblSkills.[Voltage Separation])<>0)) OR (((tblWorkArea.[Labor Core])=[Forms]![SkillsMatrix]![boxLaborCore]) AND ((tblWorkArea.Position)=[Forms]![SkillsMatrix]![boxPosition]) AND ((tblSkills.[Skill x_Stapling])<>0));

谢谢!

【问题讨论】:

  • 糟糕,我打错字了。居然有boxWorkArea 不行
  • 好的。发在上面!此代码中没有错误消息。当我尝试通过表单将参数存储在组合框中时出现问题。不填充选择查询
  • 该死,没用。您认为问题出在表单中组合框的属性上吗?

标签: sql vba ms-access combobox ms-access-2010


【解决方案1】:

我使用的技巧是在字符串中构建您的查询,将字符串打印到即时窗口,并在视觉上验证它是您想要的。然后创建一个新查询并将该字符串用作 SQL。当您尝试切换到设计视图时,Access 会告诉您是否存在语法错误。如果没有语法错误,请尝试运行查询,看看您是否在数据集中获得了所需的内容。

在您创建的字符串中,不要将表单引用放在引号中。强制 VBA 在将这些字段值添加到字符串之前解析它们。当你这样做时,你带到查询构建器的 SQL 中将没有表单引用。

PS> 如果任何表单引用解析为字符串,请确保在构建 SQL 语句时引用这些字符串。这与我上面写的并不冲突:您实际上是在将引号编码到您的 SQL 字符串中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 2014-08-17
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    相关资源
    最近更新 更多