0

ファイルの日付で配列を制限する方法はありますか? ドライブからすべてのファイルが必要ですが、ファイルの日付が最後に保存されたインポート日時の場合のみです。「アスタリスク.アスタリスク」でアレイを構築すると、時間がかかりすぎます。何かご意見は?

fsLAST = ''
USE CMEMAILS IN 0 
SELECT CMEMAILS 
SET ORDER TO DTSTAMP    && DTSTAMP
GO BOTTOM
fsLAST = CMEMAILS.DTSTAMP
local array MyFiles[1,5]
        nFilesFound = ADIR( MyFiles, ALLTRIM(cmcontrol.cpath) + '*.*')

    for i = 1 to nFilesFound
        SELECT cmemails
    DO CASE
    CASE DATETIME(YEAR(MyFiles[ i, 3]), MONTH(MyFiles[ i, 3]), DAY(MyFiles[ i, 3]), VAL(LEFT(MyFiles[ i, 4], 2)), VAL(SUBS(MyFiles[ i, 4], 4, 2)), VAL(SUBS(MyFiles[ i, 4],7,2))) > fsLAST
            insert into cmemails (cprimary, csubject, ddate, dtime, cattribs, dtstamp) values ;
            (generateGuid(26), MyFiles[ i, 1], MyFiles[ i, 3], MyFiles[ i, 4], MyFiles[ i, 5],DATETIME(YEAR(MyFiles[ i, 3]), MONTH(MyFiles[ i, 3]), DAY(MyFiles[ i, 3]), VAL(LEFT(MyFiles[ i, 4], 2)), VAL(SUBS(MyFiles[ i, 4], 4, 2)), VAL(SUBS(MyFiles[ i, 4],7,2))) )
    ENDCASE
endfor
4

1 に答える 1

1

配列には要素 3 が日付として、要素 4 が時刻として含まれているため、実行できます。

for i = ...
   ltFileTime = CTOT( DTOC( MyFiles[1,3] ) + " " + MyFiles[1,4] )
   if ltFileTime > fsLast
     */ do your insert...

   endif 
endfor

確認する必要があるかもしれません

世紀をオンに設定

適切な日付/時刻変換を保証します。

読みやすくするために、DATETIME(年、月、日など)の代わりにltFileTimeを使用することもできます...

于 2013-10-24T17:06:29.980 に答える