如何缩短此示例代码(最好使用循环)?
private static void CleanAbc()
{
using (var sql = Program.Connection())
{
sql.Execute(@"
declare @expiration datetime = DATEADD(DAY, -21, cast(GETDATE() AS DATE));
with topfew as (select top 100000 * from abc with(paglock)
WHERE [time] < @expiration)
delete topfew;
set @expiration = DATEADD(MONTH, -6, cast(GETDATE() AS DATE));
with topfew as (select top 100000 * from abc with(paglock)
WHERE [time] < @expiration)
delete topfew;
", commandTimeout: 60 * 60 * 12);
}
}
我创建的MS Word VBA正在获取“过程太大”错误,因此,我想缩短我的代码。
public static void Start() => new Action[]
{
CleanAbc
}.ToList().ForEach(clean => new Thread(() =>
{
while (true)
{
try
{
Thread.Sleep(TimeSpan.FromMinutes(1));
if (IsClean())
{
clean();
}
}
catch (Exception ex)
{
}
}
}).Start());
private static bool IsClean() =>
TimeSpan.FromHours(5) < DateTime.Now.TimeOfDay
|| DateTime.Now.TimeOfDay < TimeSpan.FromHours(19);
变量是正在打开的.docx文件,并且内容已粘贴到主文档中。
有118个.docx文件与此相关...这是118个If语句块中的一个,可以提供您的想法:
NPCodes_Doc1.Close False
NPCodes_Doc2.Close False
NPCodes_Doc3.Close False
NPCodes_Doc4.Close False
NPCodes_Doc5.Close False
因此,有118个文档供代码选择,每次匹配时,该文档将被打开并复制到主文档中。在搜索了所有118个文档后,匹配(打开和复制)的文档随后将关闭:
NPCodes_Doc
答案 0 :(得分:0)
自行采取此代码
NPCodes_Doc1.Close False
NPCodes_Doc2.Close False
NPCodes_Doc3.Close False
NPCodes_Doc4.Close False
NPCodes_Doc5.Close False
不能缩短。 NPCodes_Doc1
,NPCodes_Doc2
等是完全独立的变量,并且无法集体引用它们。
您是否有任何理由要同时打开所有118个文档?我猜不是。您可能应该重新构建代码,一次只打开一个文档,从中复制粘贴,然后关闭它,然后转到下一个文档。重复。 &lt; - 那是一个循环。
我看不到你的具体内容,所以我不能为你编写工作代码,但它看起来像这样:
Dim doc As Document
For i = 1 To 118
Set doc = Documents.Open(NPCodes_Path & "\" & "Document" & i & ".docx")
'
' put code to copy and paste here
'
doc.Close False
Next i