2010-06-24 85 views
0

我正在嘗試開發一個應用程序,可以由我的團隊成員在本地使用。它是一種帶有報告生成的問題跟蹤應用程序。我打算在flex上做。在我公司的環境中,我有一個很多喜歡的限制,無法安裝AIR,沒有數據庫等Flex獨立應用程序,無數據庫

所以我打算在Flex應用程序開發,並把它放在一個共享驅動器。現在主要的問題是我如何存儲數據。我有一個像使用Excel文件作爲數據庫的想法。我想要關於這個選項的意見,以及如果有人嘗試從Flex應用程序讀取和寫入excel文件,我想要的建議也。

感謝,Anoop

回答

1

Flex提供該RemoteObject,WebService的,和的HTTPService標籤訪問遠程數據和服務。 AIR擴展了一些本地文件訪問(File)和SQL Lite數據庫的API。

沒有空氣的API,你將不能夠寫入本地文件;我懷疑你可以寫出來。您可以嘗試使用帶有「file://」URL的HTTPService。我希望跨域問題。

你可以設置Flex應用程序來訪問遠程服務器?如果是這樣,你可以讓服務器處理創建和編輯excel文件。但是,如果你能做到這一點,爲什麼不使用真正的數據庫?

你可以看一下其他工具創建的Flex桌面應用程序。我相信傑納斯是一種選擇(http://www.janus-flash.com/)。您也可以使用Flash Pro併發布到可執行文件;但要實現Flex代碼的支持將會很困難,但也有可能。鋅是另一種選擇(http://www.multidmedia.com/)。

如果不允許AIR,我不知道爲什麼這些其他的選擇會是這樣,雖然。我不禁想知道,如果您最好探索一種MS Access解決方案,而不是試圖將客戶端/服務器技術轉變爲桌面技術。

0

可以讀/使用FileReference類寫入本地文件。我使用FileReference類來打開和保存圖像,而不使用服務器端代碼。

下面是一個例子:

package 
{ 
    import flash.display.Loader; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.net.FileFilter; 
    import flash.net.FileReference; 
    import flash.net.FileReferenceList; 

    public class Main extends Sprite 
    { 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init);   

      //load a file when the application starts 
      var fileRef:FileReference = new FileReference(); 
      var fileRefList:FileReferenceList; 
      fileRefList = new FileReferenceList(); 
      fileRef.addEventListener(Event.SELECT, function(evt:Event):void { 
        fileRef.load();      
      }); 


      fileRef.addEventListener(Event.COMPLETE, function(evt:Event):void 
       {  
        //do something with the loaded data here 
        trace(fileRef.data);   
        onSave(); 
       }); 

      var arr:Array = []; 

      arr.push(new FileFilter("Data file", "*.dat")); 

      //prompt the user for the file to load 
      fileRef.browse(arr); 
     } 

     private function onSave():void 
     { 
      var fileRef:FileReference = new FileReference(); 
      fileRef.save("this is my data to save"); 
     } 
    } 

}