按日期排序的目录中的文件列表

时间:2015-12-23 15:57:44

标签: microsoft-dynamics dynamics-nav dynamics-nav-2013 dynamics-nav-2015

如何从NAV中按日期排序的目录中获取文件列表? 我无法使用File虚拟表,因为日期没有键。 我尝试使用DotNet但是实现IComparer接口对我来说太复杂了。

有什么想法吗?

干杯

2 个答案:

答案 0 :(得分:1)

作为一种低技术解决方案(即不需要任何外部组件),如何创建一个缓冲文件记录的临时文件记录变量,使用文件的可排序字符串表示填充Path字段' s日期和时间字段合并为DateTime? [请忽略PAGE.RUN - 那只是出于调试目的。]

Code

在我的机器上,第一次调用ShowFileOrder会显示:

Sorted by name

第二个电话显示:

enter image description here

这就是Windows资源管理器中的文件:

enter image description here

我希望这有帮助! :)

答案 1 :(得分:0)

File表的键有什么问题?据我所知,日期和时间都是可排序的。测试导航2015年。 Sorting virtual File table

无论如何,如果你真的想用.net做这个例子。基表是select t1.*, (select min(t2.Date) from TAB t2 where t2.ID > t1.ID t2.Name = t1.Name) NextDate from TAB t1 。页面属性File。在将所有文件信息发送到arrey后,您可以使用它并按照您喜欢的方式对其进行排序。 或者您可以使用数组中的值填充临时文件表并使用SourceTableTemporary = Yes LOL

setcurrentkey

Reading file list

或者您甚至可以使用sort

.Net文件列表
di  DotNet  System.IO.DirectoryInfo.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
fi  DotNet  System.IO.FileSystemInfo.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'  
arr DotNet  System.Array.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'  
i   Integer     

di := di.DirectoryInfo('c:\Temp\Tmp');
//arr.CreateInstance(GETDOTNETTYPE(fi),1); //not needed
arr := di.GetFileSystemInfos();
for i := 0 to arr.Length-1 do
 begin
  fi := arr.GetValue(i);
  Name := fi.Name;
  evaluate(Date, format(fi.LastWriteTime,8,1));
  insert;
 end;