Flex独立应用程序,没有数据库

时间:2010-06-24 19:46:31

标签: flex excel flex3

我正在尝试开发一个可以由我的队友在本地使用的应用程序。它是一种跟踪报告生成的问题跟踪应用程序。我打算在flex上做这件事。在我的公司环境中,我确实有很多限制,例如,无法安装AIR,没有数据库等等。

所以我打算在flex应用程序上进行开发,并将其放在共享驱动器中。现在主要的问题是如何存储数据。我有一个想法,如使用Excel文件作为数据库。我想要对这个选项有意见,以及如果有人尝试从Flex应用程序读取和编写excel文件,我也想要这些建议。

谢谢,Anoop

2 个答案:

答案 0 :(得分:1)

Flex提供RemoteObject,WebService和HTTPService标记,用于访问远程数据和服务。 AIR扩展了一些用于本地文件访问(File)和SQL Lite数据库的API。

如果没有AIR API,您将无法编写本地文件;而且我怀疑你能不能写出来。您可以尝试将HTTPService与“file://”URL一起使用。我希望跨域问题。

您可以设置Flex应用程序来访问远程服务器吗?如果是这样,您可以让服务器处理创建和编辑Excel文件。但是,如果你能做到这一点,为什么不使用真正的数据库呢?

您可以查看其他工具来从Flex创建桌面应用程序。我相信Janus是一个选择(http://www.janus-flash.com/)。您还可以使用Flash Pro并发布到可执行文件;但是,支持Flex代码很难,但有可能。锌是另一种选择(http://www.multidmedia.com/)。

如果不允许AIR,我不确定为什么会有这些其他选项。我不禁想知道你是不是更好地探索MS Access解决方案,而不是试图将客户端/服务器技术转变为桌面技术。

答案 1 :(得分: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");
        }
    }

}