任务管理模块遇到的问题-上

我本是菜鸟,真正写代码还不到三个月,最可怕的是我都没有系统的学过,真的是脑袋空空啊,上来就叫我做监测任务管理,这个模块做了大概一个月,还好有zz,帮我理顺思路,解决了很多难题。这可是我做的第一个软件项目呀,小小激动。此软件的开发环境是:vs2008c++语言开发。我把整个过程中可以算作里程碑的问题列出来,以便以后参考回顾。

第一个问题:vc开发环境下,连接oracle数据库。首先是选择连接方式的问题,网上有至少四种方式连接数据库,比如ODBColeDB,我最终选择的是ADO,在网上down了一些参考代码,由于对其中一些变量的含义不太明白,再加上自己本身的编程功底不是很强,思路也不清晰,所以最终也没成功。拿给zz看,他不到十分钟就搞定了。哎,好伤心啊。

第二个问题:GridCtrl的使用。本软件需要以网格的形式显示数据库中的任务信息,比如任务制定者,监测站,任务开始日期,结束日期,循环类型等,GridCtrlListCtrl差不多,只是功能更丰富和完善,不过,到现在看来,我似乎还没用到ListCtrl实现不了的方法,不过GridCtrl包已经导入了,就继续用吧,懒得改了。这个的用法本来自己也是一头雾水,后来同事写了个例子,同时又查了些资料才开始正常使用。这个问题的关键不是GridCtrl里边的方法不会用,而是怎么用GridCtrl,就是怎么把这个和我要开发的工程关联起来。打个比方,就像去某家很有特色的小吃店,我现在不明白的是怎么去,至于到店里之后吃什么,那就不必教了。

第三个问题:类的封装及数据传递,即重复使用同一个对话框资源。具体来说就是,我的主窗口有四个功能按钮:“新增”,“修改”,“删除”,“查询”,我为了做“新增任务”,新建了一个对话框资源,之后添加了一个类,起名为VVEditDialog,然后在主窗口(类名为:VVTaskDialog)点击“新增”按钮时,就显示这个对话框,但现在做到修改任务这个功能的时候,我希望还是使用这个对话框资源,只是显示的时候是将数据库中已存的任务按相应的字段名称显示出来,以便修改。

我首先采用的方法是,在VVTaskDialog “修改”按钮的响应函数中,实例化VVEditDialog一个对象 editDlg,用这个对象从数据库中获取值,然后SetCurSel将其设定显示,最终没能成功,报错。求救于zz,他也咨询了一下高手之后,搞定了。但是这个方法我现在也没能完全理解,他是又新建了一个类VVAutoDialog,将要修改的那条记录的值封装给他,该类里全是GetSet函数,有点类似java里边的vo。在VVEditDialog的头文件中,实例化VVAutoDialog一个对象m_VVAutoDlg,响应“修改”按钮时,遍历网格内该条记录的所有值,然后赋给VVAutoDlg。从而实现数据的封装,然后后边怎么让这些值在修改对话框里显示出来,我还没搞明白。人家做好之后我看都看不明白,这就是差距啊!

第四个问题:属性页。我现在还不确定我所要描述的这个问题是不是叫做属性页,太菜了。笨点描述,就是相当于一个对话框上有两个标签,点击两个标签,切换响应页面。这个问题现在还没搞定。出现的问题是:有标签12,首先显示的是1的页面,当点击了2之后,再点击1打算回到1的页面,程序就死掉了,然后cpu利用率也是飚得很高。我试验了一下,如果1页面和2页面总共只有1个工具栏的控件的话,就不会死,切换自如,多放就不行了。至今没解决。。。。。

第五个问题:vc中向oracle数据库插入时间类型的字段。本身将时间在Grid里显示出来对我来说就是个难题了,现在这个本以为不是问题的问题却狠狠的绊了我一脚。代码中我写了一个方法是将Time型转换为CString型,然后在Grid显示出来很方便。在写insert语句的时候,用了format,拼好的语句在PLsqlDeveloper里可以执行,在VC里就执行不了,报错是:IDispatch3092#,可能是这种方式不行,准备换个方式。

最后一个是收获,就是在写将数据库中的任务信息显示在Grid中时,我本身一个格一个格的赋值,经过zz的修改,两句话就把字段赋进来了,只是要写几个函数来对类型进行特殊处理。

第四和第五个问题解决的话,本模块也算告一段落了,基本功能实现,需要紧急完善的是:约束的判断,比如任务开始日期没有选择,或者结束日期早于开始日期,等等,鉴于还有好几个模块要写,先放放吧。以后再完善。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值