Java程序员的第一次VB.NET开发

 

ava程序员的第一次VB.NET开发


1.确定流程思路
   最近*进行了一次VB.NET开发。作为一次痛苦的回忆,有必要记录下来。

   项目是一个报表改造项目,客户提供了旧项目的水晶报表RPT模板文件和新项目的SQL语句。

   以前光玩Java和RoR了,从来没有接触过.net.

 

   经过请教后,制定了大概的思路与方向.


            读取数据源->转变成自定义DateTable->和水晶报表绑定

    因为由于本次项目连接的是Oracle,采用了OLDDB.NET的方式,所以需要安装Oracle的驱动包(100多兆呢),但由于因为最终要做成WebForm形式,所以希望的依赖包相对要求精简一些,就调整了一下项目结构,追加了WebService方式。

   最终结构如下


Java程序员的第一次VB.NET开发
 


2.关键处代码

调用WebService代码

  
view plaincopy to clipboardprint?
'创建报表  
  Dim report As rpt_report1 = New rpt_report_1  
  '获取远程接口   
  Dim client As ServiceReferenceQuery.ServiceSoapClient = New ServiceReferenceQuery.ServiceSoapClient   
  '调用远程接口,id和参数  
  Dim s As String = client.Query(Common.rpt_report1, DataFormatter.SerializeList(Me.Params))   
  '获取查询结构,也就是自定义DateTable  
  report.SetDataSource(DataFormatter.DeserializeDataTable(s))   
  '与水晶报表模板绑定  
  MdiStaffCrpViewer.ReportSource = report  

 

  • 遇到的问题

       序列化问题: 我一开始考虑WebService传递数据最好是序列化DataTable,一查,新版果然支持。一用,序列化后没有列头信息,只有数据。这样不行,无法进行数据绑定。具体原因没有查出来。

      只好自己弄了一个序列化的函数,最后还要在客户端反一下.

              大数据量问题:由于是报表,所以可能存在数据量过大的问题,google 了一下,一般方案是进行数据zip一下。由于介绍采用的是c#调用第三方zip库的原因,本次项目就没有进一步优化。

                DataTableName问题:序列化之前不设置TableName,会有错误提示的.

创建自定义DateTable代码
view plaincopy to clipboardprint?
Dim TargetDs As DataTable = New DataTable   
With TargetDs.Columns  
       .Add("s61_1", GetType(String))  
       .Add("s61_2", GetType(String))  
       .Add("s61_3", GetType(String))  
       .Add("s61_4", GetType(String))  
       .Add("s61_5", GetType(String))  
End With  

 

  • 遇到的问题

   类型定义: 由于客户只提供了SQL语句,无法判定字段据具体类型,  只好采用无敌的String了。但个别字段在水晶报表中要参与运算必须设置成Integer,否则会保存。

数据检索:
               1.和Java不同的是不光有connectionString还有一个Provider。刚转过来,不太了解其作用。

               2.Oracle连接设置的话,需要建立一个alias,在oracle\product\10.1.0\Client_1\network\ADMIN\TNSNAMES.ORA,alias包括SERVICE_NAME/Service/Port,在connectionString中包含UserName,Pass,ailas.

        3.连接Oracle的话用OleDbConnection/OleDbCommand/OleDbDataAdapter。

              其他的也和Java差不多啦。

              中间使用的时候查询了不少资料,关键点也就这几句话了。

水晶报表
因为这次是维护项目,没有新建报表的任务,也就不知道新建的具体流程了。说点知道的。

               1.客户给的报表在设计期间可以预览。 并且有真实数据。第一次看到以为连接到了客户数据库上,大骂MS安全性太差,可是怎么也没有找到数据库链接......,后来才知道原来是缓存数据,可是缓存在哪里?

               2.客户报表有的是一个报表对应多张表(一个DataSet多个DataTable),而新的SQL一般都是输出一个DataTable,只好修改报表数据源,n合1,然后才对上DataTable。

               3.报表可以自己进行一些统计/分组,SQL文也可以实现相关功能。具体谁好,不太清楚,有经验的兄弟告知一下。

 


     最后总结

           1. 水晶报表确实很强大。

           2. WebService第一次接触感觉不错。

           3. vb.net语言太烂,没有存在的必要。

           4. vs2008速度挺快,功能一般般。装个sp1比安装还慢。

           5. WebForm思路不错,单机程序开发模式,Web发布方式。