- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将下面的代码用于我的 SAP Business One 插件,该插件从对话框中读取 Excel 工作表。在测试我的插件时,我在
处放置了一个断点Thread.Sleep(1); // Wait a sec more
在 Visual Studio 2012 中。这使对话框能够打开,以便我可以选择 Excel 文件,因为在 SAP 中
在 Visual Studio 中进行调试/测试时,插件运行良好,可以选择一个 Excel 工作表复制到矩阵。但是,当我用 .exe 文件制作一个 .ard 以在 SAP(一个可执行文件)中注册时,当我在对话框中选择一个 excel 文件(按确定)后,插件很快就会挂起。
我在代码中做错了什么?#
private void GetFileHeader()
{
using (GetFileNameClass oGetFileName = new GetFileNameClass())
{
oGetFileName.Filter = "Excel files (*.csv)|*.csv";
oGetFileName.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
Thread threadGetExcelFile = new Thread(new ThreadStart(oGetFileName.GetFileName));
threadGetExcelFile.SetApartmentState(ApartmentState.STA);
try
{
threadGetExcelFile.Start();
while (!threadGetExcelFile.IsAlive) ; // Wait for thread to get started
Thread.Sleep(1); // Wait a sec more
threadGetExcelFile.Join(); // Wait for thread to end
var fileName = string.Empty;
fileName = oGetFileName.FileName;
if (fileName != string.Empty)
{
string connString = "";
System.Data.DataTable dt = new System.Data.DataTable();
// Initialize connection string
connString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=YES\"", fileName);
// Connect
OleDbConnection myConnection = new OleDbConnection(connString);
// Open connection if closed
if (myConnection.State != ConnectionState.Open)
myConnection.Open();
string fName = fileName;
fName = System.IO.Path.GetFileNameWithoutExtension(fName);
string sql = "SELECT * FROM [" + fName + "$] WHERE RecordKey IS NOT NULL";
OleDbCommand cmd = new OleDbCommand(sql, myConnection);
cmd.CommandType = CommandType.Text;
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
adapter.Fill(dt);
if (dt != null)
{
获取文件名类
using System;
using System.Diagnostics;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
namespace SBOPlugins.Enumerations
{
public enum eFileDialog { en_OpenFile = 0, en_SaveFile = 1 };
}
namespace CoreFrieght_Intraspeed
{
/// <summary>
/// Wrapper for OpenFileDialog
/// </summary>
public class GetFileNameClass : IDisposable
{
#region The class implements FileDialog for open in front of B1 window
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
System.Windows.Forms.FileDialog _oFileDialog;
// Properties
public string FileName
{
get { return _oFileDialog.FileName; }
set { _oFileDialog.FileName = value; }
}
public string[] FileNames
{
get { return _oFileDialog.FileNames; }
}
public string Filter
{
get { return _oFileDialog.Filter; }
set { _oFileDialog.Filter = value; }
}
public string InitialDirectory
{
get { return _oFileDialog.InitialDirectory; }
set { _oFileDialog.InitialDirectory = value; }
}
//// Constructor
//public GetFileNameClass()
//{
// _oFileDialog = new OpenFileDialog();
//}
// Constructor
public GetFileNameClass(SBOPlugins.Enumerations.eFileDialog dlg)
{
switch ((int)dlg)
{
case 0: _oFileDialog = new System.Windows.Forms.OpenFileDialog(); break;
case 1: _oFileDialog = new System.Windows.Forms.SaveFileDialog(); break;
default: throw new ApplicationException("GetFileNameClass Incorrect Parameter");
}
}
public GetFileNameClass()
: this(SBOPlugins.Enumerations.eFileDialog.en_OpenFile)
{
}
// Dispose
public void Dispose()
{
_oFileDialog.Dispose();
}
// Methods
public void GetFileName()
{
IntPtr ptr = GetForegroundWindow();
WindowWrapper oWindow = new WindowWrapper(ptr);
if (_oFileDialog.ShowDialog(oWindow) != System.Windows.Forms.DialogResult.OK)
{
_oFileDialog.FileName = string.Empty;
}
oWindow = null;
} // End of GetFileName
#endregion
#region WindowWrapper : System.Windows.Forms.IWin32Window
public class WindowWrapper : System.Windows.Forms.IWin32Window
{
private IntPtr _hwnd;
// Property
public virtual IntPtr Handle
{
get { return _hwnd; }
}
// Constructor
public WindowWrapper(IntPtr handle)
{
_hwnd = handle;
}
}
#endregion
}
}
感谢任何帮助。
最佳答案
您可以做的最简单的事情就是不创建新线程,而是在方法 GetFileHeader()
中直接调用 oGetFileName.GetFileName()
。
不需要新线程,因为它的意图似乎是应用程序应该等到文件被选中。
希望对你有帮助弗雷德里克
关于c# - 对话框不适用于 SAP Business One 附加组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17040978/
我们考虑为我们的一位需要改造其 B2B 网站的客户使用阔叶树。阔叶的一切看起来都很好,但一个主要的挑战是这个客户在 SAP 中拥有他的所有产品、订单、促销等。 有没有人曾经集成或覆盖阔叶树来调用/保留
我正在寻求一些帮助。 1.) 有人对 SAP 的自动化测试解决方案有任何意见/建议吗? 2.) hp 的统一功能测试 (UFT) 是否具有与 SAP 集成的框架? 非常感谢您的帮助,并提前致谢。 最佳
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 3 年前。 Improve this ques
如何检查字段是否存在?我试过了: If session.findById("wnd[1]").setFocus Then 最佳答案 你可以试试以下内容: on error resume next se
如何检查字段是否存在?我试过了: If session.findById("wnd[1]").setFocus Then 最佳答案 你可以试试以下内容: on error resume next se
当我尝试调用我开发的 WCF 服务时,我收到此错误消息:“方法或操作未实现”。 让我解释一下我面临的情况,我会给你更多的细节,代码等: 我正在 Windows 8/Visual Studio 2012
当我连接到我的 sap hana 数据库时,它抛出以下异常但如果我没有指定任何数据库名称,那么它默认连接到 sap hana 的十六进制数据库。 com.sap.db.jdbc.exceptions.
我正在处理一个项目,为流程提取一些数据,需要从指定为长文本的 SAP 任务中提取文本。我需要单击一个按钮来打开一个包含长文本作为段落的文档。此数据包含在一个 Microsoft 字样文档中,该文档显示
我目前正在涉足 SAP ECC,为一家服装公司配置解决方案。我正在实现一个将库存发送到零售店的解决方案。关于我应该查看哪些模块和这些模块中的事务代码的任何线索? 最佳答案 您可以使用 SAP 模块 M
我正在使用 SAP GUI 脚本代码通过 SAP 表单提交批量记录。它从excel文件中逐一挑选记录并提交到SAP系统中。 我的问题: 我想在其中包含错误处理。因此,如果在任何特定记录提交时发生任何错
是否可以通过 RFC 从外部读取 SAP 结构的内容?我知道 RFC_READ_TABLE 可用于读取表数据,但是否有类似的结构? 或者结构只是类型定义而不包含任何数据? 最佳答案 是的,结构只是类型
我是 SAP 新手。我可以访问 SAP 数据库,但不能访问 SAP GUI。我想知道表关系,即如何连接两个表。 假设,如果我想知道VNVK的所有关系,我应该从哪里开始?我只能查看所有表的主键,而不能查
我是 SAP 新手。我可以访问 SAP 数据库,但不能访问 SAP GUI。我想知道表关系,即如何连接两个表。 假设,如果我想知道VNVK的所有关系,我应该从哪里开始?我只能查看所有表的主键,而不能查
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 2 年前。 Improve
我正在 SAP ABAP 中的 Adobe Forms(交互式表单)中处理一个项目,并且我有一个表,该表可以根据某些 Select 语句包含或不包含数据。当它包含数据时,表格将被打印出来,否则表格
我的公司运行了几个 B2B 应用程序(用 Rails 编写)处理零件和库存,我们一直在努力找出与我们的一些大用户集成的最佳方式。我们已经提供了 Rails 附带的 REST 风格的 API,但这当然需
In Hybris Backoffice, when any of the type nodes is selected (e.g. products, customers, etc.) by def
是否可以在本地开发盒上安装 SAP ECC 6.0?我需要测试与另一个应用程序(通过 BAPI)与 SAP 的集成,但很难找到任何类型的开发人员版本,甚至是可以快速测试的虚拟设备。有什么指点吗? 最佳
我对 python 很陌生,我的任务是从 SAP 系统中将数据提取到 python 中。我正在按照以下链接进行连接,但它在我的环境中不起作用。 另外,我的问题是我可以将 python 3.6 客户端连
我有一个输入字段 (sap.m.Input),我需要将其类型设置为 Float。我尝试使用 sap.ui.model.type.Float() 但它不起作用。 如何为我的输入字段使用自定义类型。我没有
我是一名优秀的程序员,十分优秀!