mercoledì 21 marzo 2012

RTC: importare file con XMLPort

Per importare un file da un percorso specificato senza richiedere la selezione del file stesso dall’utente, è necessario:
1 – implementare un XMLPort con le caratteristiche desiderate; assegnare la proprietà “UseRequestForm” = NO.


2 – implementare una funzione “SilentUpload” nella codeunit 419 “3-Tier Automation Mgt.” (tale funzione sembra essere presente sul database NAV tedesco, ma non su quello italiano o W1):

SilentUpload(ClientFilePath : Text[1024];VAR ServerFilePath : Text[1024]) Status : Boolean
IF ISCLEAR(FileObject) THEN
  CREATE(FileObject, TRUE, TRUE);
Ext := FileObject.GetExtensionName(ClientFilePath);
ClientTempFilePath := ClientTempFileName('',Ext);
ClientTempFile := FileObject.GetFileName(ClientTempFilePath);
FileObject.CopyFile(ClientFilePath,ClientTempFilePath,TRUE);
ServerFilePath := ServerTempFileName('',Ext);
Status := UPLOAD('',Magicpath,'',ClientTempFile,ServerFilePath);
// IF FileObject.FileExists(ClientTempFilePath) THEN
//  FileObject.DeleteFile(ClientTempFilePath);
EXIT(Status);

dove:
FileObject: Automation 'Windows Script Host Object Model'.FileSystemObject   
Ext: Text (30)
ClientTempFilePath: Text (1024)
ClientTempFile: Text (1024)


3 – chiamare l’XMLPort da codice utilizzando un InStream e la funzione creata:
txtFileName := “…”; // mio file
txtServerFileName := cduRBMgt.ServerTempFileName('','txt'); //File temporaneo su server
IF NOT cduRBMgt.SilentUpload(txtFileName,txtServerFileName) THEN
 ERROR(txcFileError);
InFile.OPEN(txtServerFileName);
InFile.CREATEINSTREAM(IStream);
MyXMLPort.SETSOURCE(IStream);
IF MyXMLPort.IMPORT THEN
  OblnExecute := TRUE
ELSE
  OblnExecute := FALSE;
InFile.CLOSE;

Nessun commento:

Posta un commento