我在Excel VBA中运行一个简单的shell命令,它在指定的目录中运行批处理文件,如下所示:
Dim strBatchName As String
strBatchName = "C:\folder\runbat.bat"
Shell strBatchName
Run Code Online (Sandbox Code Playgroud)
有时批处理文件在某些计算机上运行可能需要更长时间,并且正在进行的VBA代码依赖于批处理文件来完成运行.我知道你可以设置如下的等待计时器:
Application.Wait Now + TimeSerial(0, 0, 5)
Run Code Online (Sandbox Code Playgroud)
但这可能不适用于某些速度太慢的计算机.有没有一种方法,系统地告诉Excel中使用VBA代码的其余部分进行到后壳具有完成运行?
我一直在尝试运行这个通过Postgre数据库服务器的批处理文件并运行两个不同的sql文件,如下所示:
set PGPASSWORD=blah
cls
@echo on
"C:\Progra~1\pgAdmin III\1.16\psql" -d [db name] -h [server name] -p 5432 -U postgres -f C:\query1.sql
"C:\Progra~1\pgAdmin III\1.16\psql" -d [db name] -h [server name] -p 5432 -U postgres -f C:\query2.sql
Run Code Online (Sandbox Code Playgroud)
但问题是,有时我会为query1或query2的命令得到以下错误:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Run Code Online (Sandbox Code Playgroud)
这有时只会发生,所以我不完全确定它为什么会发生.有人可以解释为什么会这样,如果有解决这个问题的方法.谢谢!
更新:尝试在实际的Postgre应用程序中打开远程服务器时,我也得到相同的错误:"发生了错误:"服务器意外关闭了连接这可能意味着服务器在处理请求之前或处理时异常终止."
我点击错误弹出窗口后,我也得到了这个Guru Hint的东西:
数据库编码创建数据库VA-trac以使用SQL_ASCII编码存储数据.此编码仅针对7位字符定义; 未定义第8位设置的字符(非ASCII字符127-255)的含义.因此,服务器无法将数据转换为其他编码.如果要在数据库中存储非ASCII数据,强烈建议您使用表示区域设置字符集的正确数据库编码,以便在需要时自动转换为不同的客户端编码.如果将非ASCII数据存储在SQL_ASCII数据库中,则可能会遇到由代码转换问题导致写入或读取数据库的奇怪字符.使用不同的客户端程序和驱动程序访问数据库时,这可能会让您头疼.对于大多数安装,Unicode(UTF8)编码将提供最灵活的功能.
无论如何,服务器之后仍然打开,我可以从那时起访问数据库.
我想知道当你尝试将文件提交到存储库时是否有办法将复选框默认设置设置为不检查/ none.提交的默认设置设置为全部检查,但我想避免遇到我意外错误地检入项目的情况.有没有办法配置SVN的设置,以便在您第一次点击提交按钮时取消选中框?
所以我有一个这样的表:
id mod n1 n2 n3
1 1 1 1
1 2 2
1 3 3
2 1 1
2 2 2
3 1 1
Run Code Online (Sandbox Code Playgroud)
我想将特定id的所有行的每个值总结为列调用总数,但我不想将id组合在一起,因为它们具有不同的mod编号.我想要一个这样的结果:
id mod total
1 1 7
1 2 7
1 3 7
2 1 3
2 2 3
3 1 1
Run Code Online (Sandbox Code Playgroud)
我不能使用group by,因为它会给我每个行的总数.我如何实现我想要的结果?
我希望能够使用Java代码打开目录,目录意味着一个包含文件夹的“文件夹”,而文件夹又包含文件。这是我现在拥有的代码的一部分:
public void listFiles(String folder) {
File directory = new File(folder);
File[] contents = directory.listFiles();
System.out.println(contents);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,如果我将文件夹指向目录级别,它会返回以下行:
[Ljava.io.File;@67d07b41
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其指向下一层(在文件夹级别,直接包含文件),那么它会很好地列出文件夹中的文件名。有人可以告诉我为什么这对我不起作用吗?
我一直在努力想出一种创建HashMap的方法,该方法将具有相同键的值(列表)分组.这就是我的意思:
说我有以下键和值:
Value Key *Sorry I got the columns swapped
1 10
1 11
1 12
2 20
3 30
3 31
Run Code Online (Sandbox Code Playgroud)
我想将这些值放入
Hashmap <Integer, List<Integer>>
Run Code Online (Sandbox Code Playgroud)
这样它就会将值组合到具有相同键的List Integer中,如下所示:
(1,{10,11,12}),(2,{20}),(3,{30,31})
现在键和值存储在一个
Hashmap <Integer, Integer>
Run Code Online (Sandbox Code Playgroud)
而且我迷失了如何遍历这个Hashmap以使用键创建新的Hashmap:List of Values对.有没有人对这个话题有好的方法?
我正在尝试设置列日期的日期字段,让表示在表1中的'10/11/2012',当表2的所有金额的总和与该id相关(通过fk_id)= 0.这就是我的意思:
从:
表格1
id date
1 10/11/2011
2
3 10/12/2011
Run Code Online (Sandbox Code Playgroud)
表2
fk_id amount
1 200
2 0
2 0
3 100
Run Code Online (Sandbox Code Playgroud)
至:
表格1
id date
1 10/11/2011
2 10/11/2012
3 10/12/2011
Run Code Online (Sandbox Code Playgroud)
表2
fk_id amount
1 200
2 0
2 0
3 100
Run Code Online (Sandbox Code Playgroud)
这就是我目前所拥有的:
update table1
set date = '10/11/2012
FROM table1 inner join table 2 on table1.id = table2.fk_id
HAVING sum(table2.amount) = 0
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗?
我试图找到一种方法将视频嵌入到Excel VBA中的用户表单中,但我面临的问题是,根据某些网站,您需要添加"Shockwave Flash对象"控件并使用它将youtube视频嵌入到用户表单中,但我似乎无法在附加控件列表中找到Shockwave Flash对象.我需要添加一些参考吗?或者是否有更简单的方法将YouTube视频嵌入到用户表单中?
我一直在试图弄清楚如何处理这个问题,但基本上我想要一种方法来打印出 B 列中的值给定与 A 列匹配的特定值。例如:
Column A Column B
1 ABC
2 DEF
3 GHI
1 JKL
Run Code Online (Sandbox Code Playgroud)
我想在使用 find/findnext 或其他任何东西后打印出这个字符串:
ABC JKL
Run Code Online (Sandbox Code Playgroud)
我尝试使用
Set cellFound = ActiveWorkbook.Worksheets("sheet1").Range("F1:F1000000").Find("1")
string = cellFound.Offset(0, 1).value
Run Code Online (Sandbox Code Playgroud)
我有一个循环来循环尽可能多的时间来处理所有行。但是随着 find 它不断返回相同的第一个字符串(“ABC”)并且该字符串最终是 ABC ABC 而不是 ABC JKL
我尝试使用 FindNext 而不是 find,但我得到的是 1004 错误。所以我不确定我在哪里做错了。任何人有任何想法?
我正在尝试编写一个脚本来删除除最顶层之外的所有记录(如果它只是任何一个也没关系,那么只需要留下一条记录).这是我现在的格式:
DELETE FROM table
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM table
ORDER BY id DESC
LIMIT 1 ))
Run Code Online (Sandbox Code Playgroud)
但我意识到LIMIT在SQL Server 2005中并不是一个公认的功能,所以我对于该做什么感到困惑.任何人都有关于这个主题的专业知识?并且这些记录不会重复,我只想取出除一条记录以外的所有记录.
更新:
我意识到我在这里想要完成的事情并不完全清楚.我需要做的是删除该表中除了顶部记录之外的所有记录,因为它在另一列中具有相同的值(让我们称之为'anotherid').
所以它是这样的:
id value anotherid
1 3 1
2 4 1
3 5 2
4 6 2
5 7 2
Run Code Online (Sandbox Code Playgroud)
对此:
id value anotherid
1 3 1
3 5 2
Run Code Online (Sandbox Code Playgroud) 使用 SQL*Plus 我尝试使用 select union 语句来组合同一表中两列的结果,如下所示:
select substr(startdate,4,3) milestone
from projects
union
select substr(enddate,4,3) milestone
from projects
Run Code Online (Sandbox Code Playgroud)
使用列的别名milestone,但由于某种原因,结果显示为列名称mil。由于某种原因它被截断了,我认为这substr部分是问题所在,因为它从stardateandenddate列中获取了 3 个字符。我应该如何解决这个问题?
我正在尝试在 Excel 中导出一个表格,以在 Outlook 中创建具有给定主题、开始日期、结束日期的全天事件。这是我所拥有的:
With olAppt
.AllDayEvent = True
.Start = "7/29/2015"
.End = "7/29/2015"
.Subject = "All Day Event"
.Save
End With
Run Code Online (Sandbox Code Playgroud)
我得到的是一个事件,上面写着“12:00am 全天事件”,它被放置为一个 12:00am 事件而不是日历 UI 上的全天事件(该事件不应该附加 12:00am 时间在主题名称前面,但由于某种原因它是)。如果我单击事件详细信息,它会选中全天事件复选框,并且开始结束时间都是上午 12:00。
我不想向上滚动才能在 UI 中看到上午 12:00 的事件,而是希望在顶部显示应该放置全天事件的事件。
以前有人遇到过这个问题吗?谢谢!
sql ×5
excel ×4
vba ×4
java ×2
batch-file ×1
cmd ×1
excel-vba ×1
hashmap ×1
mysql ×1
oracle ×1
outlook ×1
postgresql ×1
shell ×1
sql-server ×1
sqlplus ×1
svn ×1
tortoisesvn ×1