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

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

1.确定流程思路

   最近被迫进行了一次VB.NET开发。作为一次痛苦的回忆,有必要记录下来。

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

   以前光玩Java和RoR了,从来没有接触过.net,第一次接触.net技术,经过请教后,制定了大概的思路与方向.

  

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

 

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

 

   最终结构如下

 

2.关键处代码

 

  • 调用WebService代码

 

   '创建报表 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代码

 

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发布方式。

 

 

 

你可能感兴趣的:(Java程序员的第一次VB.NET开发)