小编Lun*_*tri的帖子

强制EPPLUS以文本形式阅读

我正在开发一个应用程序来读取xlsx文件,进行一些验证并插入到数据库中.不幸的是,当我尝试读取标记为数字的列(带有EAN-13代码的fe)时,我得到了一个int的miniumum值.用户没有看到这个,因为Excel正确显示它.

如何让它以纯文本形式读取文件?我知道我可以使用OLEBD,但我还需要动态编辑文件,因此epplus ExcelPackage是最佳选择.

这是我使用的代码:

 FileInfo file = new FileInfo(path);
 MainExcel = new OfficeOpenXml.ExcelPackage(file);
 {
   var ws = MainExcel.Workbook.Worksheets.First();
   DataTable tbl = new DataTable();
        for (var rowNum = 1; rowNum <= ws.Dimension.End.Row; rowNum++)      //currently loading all file
                {
                    var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
                    var row = tbl.NewRow();
                    foreach (var cell in wsRow)
                    {
                        row[cell.Start.Column - 1] = cell.Text;
                    }
                    tbl.Rows.Add(row);
                }          
 }
Run Code Online (Sandbox Code Playgroud)

这就是我枚举列的方式

   foreach (var firstRowCell in ws.Cells[3, 1, 3, ws.Dimension.End.Column])
                {
                    System.Type typeString = System.Type.GetType("System.String") ;
                    tbl.Columns.Add( firstRowCell.Text …
Run Code Online (Sandbox Code Playgroud)

c# epplus

10
推荐指数
1
解决办法
1万
查看次数

Dynamics AX - 在AX 2009中以编程方式将表添加到DatabaseLog

我正在寻找一种方法来为某些表启用日志记录更改.
我已经尝试并测试过以编程方式将表添加到数据库日志中,但到目前为止取得了各种成功 - 有时它有时它不起作用(大多数情况下它没有) - 似乎只是将行插入DatabaseLog表中并不是很有效.

我尝试过:
使用正确的tableId,fieldId,logType和添加行.
域名已被指定为"管理员",主要公司,空白场和子公司,结果相同.
我创建了处理插入的类,主要的两个函数是:

public static void InsertBase(STR tableName, domainId _domain='Admin')
{
    //base logging for insert, delete, uptade on fieldid=0
    DatabaseLog DBDict;
    TableId _tableId;
    DatabaseLogType _logType;
    fieldId _fieldId =0;
    List logTypes;
    int i;
    ListEnumerator enumerator;
    ;

    _tableId= tableName2id(tableName);

    logTypes = new List(Types::Enum);

    logTypes.addEnd(DatabaseLogType::Insert);
    logTypes.addEnd(DatabaseLogType::Update);
    logTypes.addEnd(DatabaseLogType::Delete);
    logTypes.addEnd(DatabaseLogType::EventInsert);
    logTypes.addEnd(DatabaseLogType::EventUpdate);
    logTypes.addEnd(DatabaseLogType::EventDelete);

    enumerator = logTypes.getEnumerator();
    while(enumerator.moveNext())
    {
        _logType = enumerator.current();

        select * from dbdict where
                dbdict.logTable==_tableId && dbdict.logField==_fieldId
                && dbdict.logType==_logType;
        if(!dbDict) //that means it doesnt exist …
Run Code Online (Sandbox Code Playgroud)

microsoft-dynamics x++ axapta dynamics-ax-2009

2
推荐指数
1
解决办法
223
查看次数

not in和in与null值之间的差异

我偶然发现我们的数据库中的一些旧代码表现得并不像预期的那样.我设法将其缩小到条款的NULL价值效果IN.

我派生出一个测试来证明它:

declare @test   nvarchar(50) = '8620M/9010';
declare @testLT nvarchar(50) = '8004/9010';
declare @testLV nvarchar(50) =  null;  --'asd'
select case when @test not in (@testLT, @testLV) then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)

如果testLV为null,则NOT IN返回与IN子句相同的结果.

我想了解这种行为背后的机制.有人可以解释一下吗?

PS.我可能会用EXCEPT子句替换它

sql t-sql sql-server null

2
推荐指数
1
解决办法
78
查看次数