我正在尝试开发一个可以由我的队友在本地使用的应用程序。它是一种跟踪报告生成的问题跟踪应用程序。我打算在flex上做这件事。在我的公司环境中,我确实有很多限制,例如,无法安装AIR,没有数据库等等。
所以我打算在flex应用程序上进行开发,并将其放在共享驱动器中。现在主要的问题是如何存储数据。我有一个想法,如使用Excel文件作为数据库。我想要对这个选项有意见,以及如果有人尝试从Flex应用程序读取和编写excel文件,我也想要这些建议。
谢谢,Anoop
答案 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");
}
}
}