Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
如何从Java运行Microsoft access宏_Java_Ms Access_Macros - Fatal编程技术网

如何从Java运行Microsoft access宏

如何从Java运行Microsoft access宏,java,ms-access,macros,Java,Ms Access,Macros,我们将Access数据库与Java一起用于一个项目。Access数据库中有一些宏,我们需要从Java运行这些宏。有没有办法从Java执行这些宏?下面的代码适用于我在Windows 8.1上的NetBeans 8。它写入一个临时VBScript文件,然后使用cscript.exe运行该文件: 包runaccessmacro; 导入java.io.*; 公共类RunAccessMacro{ 公共静态void main(字符串[]args){ String dbFilePath=“C:\\Users\

我们将Access数据库与Java一起用于一个项目。Access数据库中有一些宏,我们需要从Java运行这些宏。有没有办法从Java执行这些宏?

下面的代码适用于我在Windows 8.1上的NetBeans 8。它写入一个临时VBScript文件,然后使用cscript.exe运行该文件:

包runaccessmacro;
导入java.io.*;
公共类RunAccessMacro{
公共静态void main(字符串[]args){
String dbFilePath=“C:\\Users\\Public\\Database1.accdb”;
字符串vbsFilePath=System.getenv(“TEMP”)+“\\javaTempScriptFile.vbs”;
文件vbsFile=新文件(vbsFilePath);
印刷作家;
试一试{
pw=新的打印写入程序(vbsFile);
println(“Set accessApp=CreateObject(\“Access.Application\”);
println(“accessApp.OpenCurrentDatabase\”“+dbFilePath+”\”);
println(“accessApp.DoCmd.RunMacro\“doRidLogUpdate\”);
println(“accessApp.CloseCurrentDatabase”);
pw.println(“accessApp.Quit”);
关闭();
进程p=Runtime.getRuntime().exec(“cscript/nologo\”“+vbsFilePath+”\”);
p、 waitFor();
BufferedReader rdr=
新的BufferedReader(新的InputStreamReader(p.getErrorStream());
int errorLines=0;
String line=rdr.readLine();
while(行!=null){
errorLines++;
System.out.println(行);//显示错误行(如果有)
line=rdr.readLine();
}
vbsFile.delete();
如果(错误行==0){
System.out.println(“操作成功完成”);
}
}捕获(例外e){
e、 printStackTrace();
}
}
}
注:

  • 这仅适用于安装了Microsoft Access(实际应用程序,而不仅仅是Access数据库引擎)的Windows计算机

  • 运行Java代码的JVM的“位”应与安装的Access版本的“位”匹配(即64位或32位)

  • 在某些情况下可能需要进行一些调整,例如,默认情况下,可能禁止web服务器执行的Java代码剥离到cscript.exe


  • 我对此深表怀疑。Java Access库非常稀少,并且提供非常基本的支持(主要是读写数据)。这很清楚是关于编程的,所以我不知道为什么它会被关闭为离题?