Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Access在宏导出到excel后删除查询“查询必须至少有一个目标字段”_Sql_Macros_Ms Access 2010_Export To Excel - Fatal编程技术网

Sql Access在宏导出到excel后删除查询“查询必须至少有一个目标字段”

Sql Access在宏导出到excel后删除查询“查询必须至少有一个目标字段”,sql,macros,ms-access-2010,export-to-excel,Sql,Macros,Ms Access 2010,Export To Excel,当非vba宏将查询内容导出到excel时,MS Access会随机删除SQL查询的内容。最初的导出工作正常,数据被正确导出到Excel,但大约50%的时间。。。查询的基础SQL丢失。这肯定是由导出触发的,您可以在查询前后进行比较 参考了这个问题,并讨论了一个VBA解决方案,该解决方案可以自动重建SQL查询。我更愿意防止这种情况发生,而不是事后修复。还讨论了这个问题。建议的解决方案不相关 问题数据库最初是在Access 2007中设计的,现在正在Access 2010中使用。此问题涉及的所有查询和

当非vba宏将查询内容导出到excel时,MS Access会随机删除SQL查询的内容。最初的导出工作正常,数据被正确导出到Excel,但大约50%的时间。。。查询的基础SQL丢失。这肯定是由导出触发的,您可以在查询前后进行比较

参考了这个问题,并讨论了一个VBA解决方案,该解决方案可以自动重建SQL查询。我更愿意防止这种情况发生,而不是事后修复。还讨论了这个问题。建议的解决方案不相关


问题数据库最初是在Access 2007中设计的,现在正在Access 2010中使用。此问题涉及的所有查询和宏都是使用Access 2007创建的。这些组件在Access 2007中保持稳定。这让我相信,问题并不存在于SQL中。所有SQL查询都是简单的SELECT语句,没有INSERT、drop或make table命令。

您是否尝试使用表达式生成器以access语言表示查询

双击查询设计窗口中的“条件”,然后构建表达式

例如:

SELECT table1.field1 
FROM table1 INNER JOIN table2 on table1.field1 LIKE table2.field1
此查询将被清除,即使它有效。使用表达式生成器生成类似的表达式。应该是这样的:

SELECT table1.field1 
FROM table1 INNER JOIN table2 on table1.field1 = table2.field1
WHERE ((([table1]![field1] LIKE [table2]![field1])));

是否尝试使用表达式生成器以access语言表示查询

双击查询设计窗口中的“条件”,然后构建表达式

例如:

SELECT table1.field1 
FROM table1 INNER JOIN table2 on table1.field1 LIKE table2.field1
此查询将被清除,即使它有效。使用表达式生成器生成类似的表达式。应该是这样的:

SELECT table1.field1 
FROM table1 INNER JOIN table2 on table1.field1 = table2.field1
WHERE ((([table1]![field1] LIKE [table2]![field1])));

我通过修改查询解决了这个问题。最初,查询通过内部联接和外部联接联接三个表。通过使用中间表,我将查询简化为一个联接,之后Access在运行宏后停止删除查询。这肯定是一个bug,当Access的宏被指定运行带有复杂连接的查询时,Access会被阻塞。

我通过修改查询解决了这个问题。最初,查询通过内部联接和外部联接联接三个表。通过使用中间表,我将查询简化为一个联接,之后Access在运行宏后停止删除查询。这肯定是一个bug,当Access的宏任务是运行带有复杂连接的查询时,Access会阻塞它。

我在Access 2010中遇到了这个问题。 对我来说,这是由一个bug引起的,这个bug只有在我在一个组中收集这些查询时才会发生。
一旦我将它们从自定义组中删除并作为未分配的对象保留,查询将保持不变。

我在Access 2010中遇到了这个问题。 对我来说,这是由一个bug引起的,这个bug只有在我在一个组中收集这些查询时才会发生。
一旦我将它们从自定义组中删除并作为未分配的对象保留,查询将保持不变。

我在Access 2010中遇到了同样的问题。我可以在宏中的ExportWithFormatting操作之前使用OpenQuery操作,在ExportWithFormatting操作之后使用CloseWindow–Query操作来解决这个问题。这样,查询将在同一宏中打开、导出、然后关闭所有查询。最后我还使用了StopMacro操作。

我在Access 2010中遇到了同样的问题。我可以在宏中的ExportWithFormatting操作之前使用OpenQuery操作,在ExportWithFormatting操作之后使用CloseWindow–Query操作来解决这个问题。这样,查询将在同一宏中打开、导出、然后关闭所有查询。最后我还使用了StopMacro操作。

我自己也遇到了这个错误。这里发布的任何解决方案都不适用于我的案例,我对提供的解决方案不是100%满意,尤其是geeksengine.com,它要求您完全删除查询,并根据存储在VBA中的代码重新创建查询-这不是一个非常通用的解决方案,如果其他人必须维护您的数据库,他们会发现自己很困惑,因为他们发现自己更改的查询偶尔会恢复为其旧代码,这似乎是随机的

因此,我采用了不同的方法,编写了一个通用例程,在导出电子表格之前存储查询的SQL代码,然后在删除代码后立即恢复代码:

Sub-SafeSendQueryQueryName为字符串,FileType为变量,EmailAddresss为字符串,SubjectLine为字符串,BodyText为字符串 Dim QueryCode作为字符串 Access有一个bug,它有时会删除作为电子表格发送的查询的SQL代码 '这将代码存储在一个字符串中,以便我们可以在删除代码后将其还原 QueryCode=CurrentDb.QueryDefsQueryName.SQL DoCmd.SendObject对象类型:=acSendQuery,对象名称:=Query 名称,OutputFormat:=文件类型,收件人:=电子邮件地址,主题:=主题行,MessageText:=正文,EditMessage:=真 '如果SQL代码已被擦除,请还原它 如果CurrentDb.QueryDefsQueryName.SQL查询代码,则 调试。打印缺少的SQL代码,现在将其还原。 CurrentDb.QueryDefsQueryName.SQL=QueryCode 如果结束 端接头 请注意,我是为DoCmd.SendObject编写的,因为我的用户需要通过电子邮件发送电子表格,但它应该也适用于DoCmd.OutputTo-只需将DoCmd.SendObject行替换为DoCmd.OutputTo行,并根据需要修改参数

这是调用它的子例程的样子:

次电子邮件室 Dim QueryName作为字符串 Dim文件类型作为变量 将电子邮件地址设置为字符串 将主题行变暗为字符串 将正文设置为字符串 QueryName=季度数字 FileType=acFormatXLSX 电子邮件地址=bob@company.com; Sally@company.com 主题行=格式日期的季度数字,MM yyyy BodyText=请参阅随附的季度数据和格式日期(mmmm yyyy&)。 调用SafeSendQueryQueryName、文件类型、电子邮件地址、主题行、正文 端接头
我自己也遇到过这个错误。这里发布的任何解决方案都不适用于我的案例,我对提供的解决方案不是100%满意,尤其是geeksengine.com,它要求您完全删除查询,并根据存储在VBA中的代码重新创建查询-这不是一个非常通用的解决方案,如果其他人必须维护您的数据库,他们会发现自己很困惑,因为他们发现自己更改的查询偶尔会恢复为其旧代码,这似乎是随机的

因此,我采用了不同的方法,编写了一个通用例程,在导出电子表格之前存储查询的SQL代码,然后在删除代码后立即恢复代码:

Sub-SafeSendQueryQueryName为字符串,FileType为变量,EmailAddresss为字符串,SubjectLine为字符串,BodyText为字符串 Dim QueryCode作为字符串 Access有一个bug,它有时会删除作为电子表格发送的查询的SQL代码 '这将代码存储在一个字符串中,以便我们可以在删除代码后将其还原 QueryCode=CurrentDb.QueryDefsQueryName.SQL DoCmd.SendObject对象类型:=acSendQuery,对象名称:=QueryName,输出格式:=FileType,收件人:=EmailAddresses,主题:=SubjectLine,MessageText:=BodyText,EditMessage:=True '如果SQL代码已被擦除,请还原它 如果CurrentDb.QueryDefsQueryName.SQL查询代码,则 调试。打印缺少的SQL代码,现在将其还原。 CurrentDb.QueryDefsQueryName.SQL=QueryCode 如果结束 端接头 请注意,我是为DoCmd.SendObject编写的,因为我的用户需要通过电子邮件发送电子表格,但它应该也适用于DoCmd.OutputTo-只需将DoCmd.SendObject行替换为DoCmd.OutputTo行,并根据需要修改参数

这是调用它的子例程的样子:

次电子邮件室 Dim QueryName作为字符串 Dim文件类型作为变量 将电子邮件地址设置为字符串 将主题行变暗为字符串 将正文设置为字符串 QueryName=季度数字 FileType=acFormatXLSX 电子邮件地址=bob@company.com; Sally@company.com 主题行=格式日期的季度数字,MM yyyy BodyText=请参阅随附的季度数据和格式日期(mmmm yyyy&)。 调用SafeSendQueryQueryName、文件类型、电子邮件地址、主题行、正文 端接头
嘿正在清除的查询的原始SQL已与表达式生成器创建的格式匹配。不确定这是否是问题所在,但感谢您的建议!我会继续戳它,看看它是否有什么不同。在现有的SQL WHERE语句中,替换句点。带感叹号的字符!。您的SQL查询可能如下所示:其中[table1].[field1]类似于[table2].[field1];但它应该看起来像[表1]![field1]就像[table2]![field1];。试过了!最终没有成功。问题似乎根源于宏观经济本身。此宏一次导出多个查询;修改宏副本以一次导出一个查询似乎可以解决此问题。然而,这不是期望的行为。我尝试从头开始重新创建宏,但没有解决问题。嘿!正在清除的查询的原始SQL已与表达式生成器创建的格式匹配。不确定这是否是问题所在,但感谢您的建议!我会继续戳它,看看它是否有什么不同。在现有的SQL WHERE语句中,替换句点。带感叹号的字符!。您的SQL查询可能如下所示:其中[table1].[field1]类似于[table2].[field1];但它应该看起来像[表1]![field1]就像[table2]![field1];。试过了!最终没有成功。问题似乎根源于宏观经济本身。此宏一次导出多个查询;修改宏副本以一次导出一个查询似乎可以解决此问题。Th
然而,这不是期望的行为。我尝试从头开始重新创建宏,但没有解决问题。这不仅仅是在宏中执行。当我手动将查询导出到Excel时,右键单击“查询->导出->Excel->…。哦,它所攻击的不是你刚才导出的查询,而是它所依赖的查询!!?!??!!?!?!!!????我还有一个已保存的查询,只要打开它,它就会使Access崩溃。我把它命名为Z_RunToCrashAccess。这是一个特色。让任何一个无意中听到这条评论的人得到警告:永远不要使用访问权限进行任何事情。从来没有。从来没有,从来没有,从来没有,从来没有,我的性格。我通过在VBA中硬编码查询,然后在原始宏的导出步骤完成后立即运行VBA宏来修复它。这将每次替换查询并防止其丢失。底层b/c中的真正痛苦人们必须随时更新VBA代码来更改查询。这不仅仅是在宏中进行的。当我手动将查询导出到Excel时,右键单击“查询->导出->Excel->…。哦,它所攻击的不是你刚才导出的查询,而是它所依赖的查询!!?!??!!?!?!!!????我还有一个已保存的查询,只要打开它,它就会使Access崩溃。我把它命名为Z_RunToCrashAccess。这是一个特色。让任何一个无意中听到这条评论的人得到警告:永远不要使用访问权限进行任何事情。从来没有。从来没有,从来没有,从来没有,从来没有,我的性格。我通过在VBA中硬编码查询,然后在原始宏的导出步骤完成后立即运行VBA宏来修复它。这将每次替换查询并防止其丢失。真正的麻烦在底部b/c任何时候都必须更新VBA代码来更改查询。