rcom10002 / ccgclient

Automatically exported from code.google.com/p/ccgclient
0 stars 1 forks source link

报表模板管理 #17

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
类似一个sql查询分析器
提供增删改动作,并提供一个可以浏览的功能
增:提供一个录入标题的文本框,用 ^[A-Z_]+$ 
验证,提供一个SQL录入的多行文本框,保存与取消按
钮,按钮保存后跳转至浏览界面。
删:List中放置SQL的标题,并将选中的SQL内容显示在多行文本�
��中,可以删除选中的内容,删除前需要
有确认对话框
改:List中放置SQL的标题,并将选中的SQL内容显示在多行文本�
��中,可以修改内容,然后保存,给出是
否保存成功的提升
浏览:与删除类似,但不提供删除按钮

保存的内容以键值对形式插入表global_config中,类型为:SQL_TEM
PLATE

Original issue reported on code.google.com by rcom10002 on 3 Aug 2009 at 1:20

GoogleCodeExporter commented 9 years ago

Original comment by songjie8...@gmail.com on 5 Aug 2009 at 10:15

GoogleCodeExporter commented 9 years ago
添加一个FunctionWindow,用于运行SQL,菜单名称为“动态报表分
析器”
标题:动态报表分析器
radio-button:使用模板、radio-button:手工录入,开始查询button
textarea模板预览,textarea录入区域。
查询结果:datagrid
错误提示:textarea
前页|后页

根据radio-button值来控制对应textarea的enabled属性,使用绑定。��
�模板选择好,或手工录入SQL后,点击
查询即可开始查询,将结果放于查询结果的datagrid中,如果SQL
有错误,则将错误号和错误信息显示在错误提示的
textarea,点击前后页可以进行翻页,每页显示20条数据。

能实现多少就实现多少功能,尽量哈,下面代码演示了如何��
�态添加column,从服务器端过来的xml可以含有一个
columnCount节点,这样就能知道到底有多少个节点了
原文地址:http://blog.flexexamples.com/2008/03/04/dynamically-adding-new-co
lumns-to-a-
datagrid-control-in-flex/

<?xml version="1.0" encoding="utf-8"?>
<!-- 
http://blog.flexexamples.com/2008/03/04/dynamically-adding-new-columns-to-a-
datagrid-control-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
            import mx.controls.dataGridClasses.DataGridColumn;

            private function addDataGridColumn(dataField:String):void {
                var dgc:DataGridColumn = new DataGridColumn(dataField);
                var cols:Array = dataGrid.columns;
                cols.push(dgc);
                dataGrid.columns = cols;
            }

            private function init():void {
                addDataGridColumn("col4");
            }
        ]]>
    </mx:Script>

    <mx:ArrayCollection id="arrColl">
        <mx:source>
            <mx:Array>
                <mx:Object col1="A.1" col2="A.2" col3="A.3" col4="A.4"/>
                <mx:Object col1="B.1" col2="B.2" col3="B.3" col4="B.4"/>
                <mx:Object col1="C.1" col2="C.2" col3="C.3" col4="C.4"/>
                <mx:Object col1="D.1" col2="D.2" col3="D.3" col4="D.4"/>
                <mx:Object col1="E.1" col2="E.2" col3="E.3" col4="E.4"/>
                <mx:Object col1="F.1" col2="F.2" col3="F.3" col4="F.4"/>
            </mx:Array>
        </mx:source>
    </mx:ArrayCollection>

    <mx:ApplicationControlBar dock="true">
        <mx:Button label="Add column" click="init();" />
    </mx:ApplicationControlBar>

    <mx:DataGrid id="dataGrid"
            dataProvider="{arrColl}"
            width="400"
            rowCount="6">
        <mx:columns>
            <mx:DataGridColumn dataField="col1" />
            <mx:DataGridColumn dataField="col2" />
            <mx:DataGridColumn dataField="col3" />
        </mx:columns>
    </mx:DataGrid>

</mx:Application>

Original comment by rcom10002 on 5 Aug 2009 at 12:27

GoogleCodeExporter commented 9 years ago
var c1:DataGridColumn = new DataGridColumn("@c1");
var c2:DataGridColumn = new DataGridColumn("@c2");
var c3:DataGridColumn = new DataGridColumn("@c3");

dataGrid = new DataGrid();
dataGrid.columns = [c3, c1, c2];
dataGrid.rowCount = 5;
dataGrid.dataProvider = dp;
addChild(dataGrid);

Original comment by rcom10002 on 5 Aug 2009 at 3:04

GoogleCodeExporter commented 9 years ago
目前遇到个问题
1.后台接收到SQL文,用什么方向来执行它,并返回什么结果
我目前是用Query query = 
HibernateSessionFactory.getSession().createSQLQuery(sql);
info.setEntityList(query.list());
return toXML(info, getAliasTypes());
2.前台接收到的应该是什么样的结果集,用什么方法来遍历有
用的字段列
我目前用var colsLen:int = 
e4xResult.entityList.children()[0].children().length();
            var cols:Array = new Array();
            for (var ind : int = 0; ind < colsLen; ind ++) {
                cols.push(new DataGridColumn
(e4xResult.entityList.children()[0].children()[ind].name()));
            }
            datagridResult.columns = cols;
            datagridResult.dataProvider = e4xResult.entityList.children
();
……附件中的图片是我返回的结果,这个结果是否正确,如��
�取到有用的字段列名及内容
PS:帮忙看一下,是否能在这基础上改,要是方向不对请给个
解决方案。

Original comment by songjie8...@gmail.com on 12 Aug 2009 at 1:54

Attachments:

GoogleCodeExporter commented 9 years ago
1.方法正确!
2.你可以参考PlayerProfile中角色和用户关系路径RLS来做,返回��
�果是一个map
<result>
  <tag>
    <map>
      <col1>xxx</col1>
      <col2>xxx</col2>
      <col3>xxx</col3>
    </map>
    <map>
      <col1>xxx</col1>
      <col2>xxx</col2>
      <col3>xxx</col3>
    </map>
    <map>
      <col1>xxx</col1>
      <col2>xxx</col2>
      <col3>xxx</col3>
    </map>
  </tag>
</result>
并且e4x支持for 
each语句的形式,看PlayerProfile的角色和关系路径

把结果集显示在datagrid,动态生成列就行了

Original comment by rcom10002 on 12 Aug 2009 at 2:02

GoogleCodeExporter commented 9 years ago
xstream很灵活,可以根据需要生成不同形式的xml,自己定义个�
��理方案就行

对于模板中的内容,还需要传入参数的,这样可以更加灵活��
�

String sql = request.getParameter("SQL_TEMPLATE");
/*
 * sql的内容为:
 * SELECT user_id, rls_path, current_score, create_time 
 *   FROM player_profile 
 *  WHERE rls_path LIKE CONCAT(?, "%")
 *    AND current_score > ? 
 * ?..=user1,500
 */
参数格式为:?..=参数值,参数值...

觉得难度大的话,可以稍后再做

Original comment by rcom10002 on 12 Aug 2009 at 2:11

GoogleCodeExporter commented 9 years ago
参数格式为:?..=参数值,参数值...
?..=user1_String,500_Integer

这样可以把类型也跟上,对于数字,全部采用Integer,字符串�
��用String,日期时间戳,也用String,在SQL中将传
入的字符串转成日期时间戳格式,或是把数据库中日期时间��
�转成String后进行比较

可以写个共同专门用于赋值,Query.setParameter(paramIndex, 
paramValue);

Original comment by rcom10002 on 12 Aug 2009 at 2:25

GoogleCodeExporter commented 9 years ago
管理的模块赶紧赶出来~这样你就可以从模板里调用SQL了,��
�用写假的了

Original comment by rcom10002 on 14 Aug 2009 at 12:04

GoogleCodeExporter commented 9 years ago
动态报表分析器,运行出错时,显示具体的错误信息,如SQL��
�息和SQL错误号,这样便于错误分析

Original comment by rcom10002 on 15 Aug 2009 at 9:39

GoogleCodeExporter commented 9 years ago

Original comment by songjie8...@gmail.com on 21 Aug 2009 at 5:58