搜索
查看: 8029|回复: 15

我的第二个aardio实用程序——Access数据库管理

  [复制链接]

1

主题

4

帖子

64

积分

一级会员

Rank: 2

积分
64
发表于 2013-1-12 20:30:15 | 显示全部楼层 |阅读模式
本帖最后由 jtzmsqzr 于 2013-1-12 20:37 编辑

我的第二个aardio实用程序——Access数据库管理
写程序经常要用到数据库,桌面软件嘛就用桌面数据库了,因此自然就选了Access,管理网页书签,支持常用的CRUD操作,用listview控件管理记录,前后用了2天,可能对其它新手同学有参考,谨拿出来分享。
遇到的问题与解决方法:
1、代码编写规范。一回生两回熟,必须规范自己的代码格式了,我把代码分以下4个区:
1)系统区:包括所有的import语句,以及窗体设计器生成的代码;
2)变量区:包括常用变量的声明;
3)函数区:包括事件处理函数及其它自定义函数;
4)主程序区:包括启动代码。
2、获取Access所有数据表格。所有表格名单必须自动获取,但遇到出现“不能读取记录;在 ’MSysObjects’上没有读取数据权限”的错误提示。借鉴了http://www.fastcache.com.cn/Know ... flycdn_Tech_02.html的经验,问题解决;
3、combobox控件的下拉极限。默认只能显示30行,而我的记录达40行,以为程序错误,其实设置它的滚动条的竖向为true即可;
4、listview控件的填写问题。listview控件的addItem方法只接受纯字符串的数组,故一定要鉴别转换处理:
        for(i=0;rs.Fields.count-1;1){
                str=rs.Fields(i).Value;
                if(type(str)==type.number) str=tostring(str);
                table.push(tabFields,str);
        }
5、函数的通用化。开始写的listview控件填写记录的函数是针对具体的表格编写,后来一想不行,如果表格结构一改动,程序就得重写,必须写出能够支持所有表格的函数,原来的语句是:
wth={40;500;-1};
for(i=0;rs.Fields.count-1;1){
        mainForm.lvRead.insertColumn(rs.Fields(i).Name,wth[i+1])
}
while(!rs.eof){
        mainForm.lvRead.addItem({tostring(rs.Fields(0).Value);rs.Fields(1).Value;rs.Fields(2).Value});
        rs.movenext()
}
优化后改为:
wth={40;500;-1};
for(i=0;rs.Fields.count-1;1){
        mainForm.lvRead.insertColumn(rs.Fields(i).Name,wth[i+1])
}
while(!rs.eof){
        tabFields={};
        for(i=0;rs.Fields.count-1;1){
                str=rs.Fields(i).Value;
                if(type(str)==type.number) str=tostring(str);
                table.push(tabFields,str);
        }
        mainForm.lvRead.addItem(tabFields)
        rs.movenext()
}
不当之处,请指正。

webBook.zip

10.28 KB, 下载次数: 904

评分

参与人数 1银币 +2 收起 理由
村长大人 + 2 很给力!

查看全部评分

回复

使用道具 举报

13

主题

108

帖子

731

积分

三级会员

Rank: 4

积分
731
QQ
发表于 2013-1-21 12:16:50 | 显示全部楼层

感谢分享。

感谢分享。
回复

使用道具 举报

0

主题

55

帖子

362

积分

二级会员

Rank: 3Rank: 3

积分
362
QQ
发表于 2013-2-19 02:40:11 | 显示全部楼层

谢谢 感谢分享。

谢谢
感谢分享。
回复

使用道具 举报

0

主题

10

帖子

75

积分

一级会员

Rank: 2

积分
75
发表于 2013-3-14 07:25:44 | 显示全部楼层

谢谢分享

谢谢分享
回复

使用道具 举报

1

主题

33

帖子

200

积分

二级会员

Rank: 3Rank: 3

积分
200
发表于 2013-3-14 09:17:03 | 显示全部楼层

谢谢 感谢分享。

谢谢
感谢分享。
回复

使用道具 举报

4

主题

15

帖子

136

积分

荣誉会员

Rank: 8Rank: 8

积分
136
发表于 2013-3-14 09:24:59 | 显示全部楼层

谢谢 感谢分享。

谢谢
感谢分享。
回复

使用道具 举报

0

主题

8

帖子

102

积分

培训班

积分
102
发表于 2013-3-14 10:16:52 | 显示全部楼层

好人啊,新手来学习了。。

好人啊,新手来学习了。。
回复

使用道具 举报

5

主题

75

帖子

475

积分

二级会员

Rank: 3Rank: 3

积分
475
发表于 2013-3-14 11:35:05 | 显示全部楼层

{:D}很好的代码,请问wysd.mdb如何生成的?

很好的代码,请问wysd.mdb如何生成的?
回复

使用道具 举报

13

主题

120

帖子

687

积分

三级会员

Rank: 4

积分
687
发表于 2013-3-15 09:55:56 | 显示全部楼层

对于每一个listview进行枚举是亮点啊

对于每一个listview进行枚举是亮点啊
有很多时候,这语言都是相通的。特别是肢体语言。
回复

使用道具 举报

1

主题

4

帖子

64

积分

一级会员

Rank: 2

积分
64
 楼主| 发表于 2013-3-15 20:56:33 | 显示全部楼层

[quote][size=2][color=#999999]dem 发表于 2013-3-14 11:35[/color] [url=forum.php?mod

dem 发表于 2013-3-14 11:35
很好的代码,请问wysd.mdb如何生成的?

用Access,双击该文件即可看其结构。
回复

使用道具 举报

0

主题

3

帖子

36

积分

新手入门

Rank: 1

积分
36
发表于 2014-8-22 19:23:06 | 显示全部楼层

[i=s] 本帖最后由 suncity 于 2014-8-22 20:12 编辑 [/i] 如果你重复选择“选择分类”里面的分类表,会在lvRead里重新生成

本帖最后由 suncity 于 2014-8-22 20:12 编辑

如果你重复选择“选择分类”里面的分类表,会在lvRead里重新生成列,多点几次会生成的更多列,
解决办法,删除列
if(mainForm.lvRead.columnCount>1){                //如果列数N大于1列,则删除列N-1列
        for(i=0;mainForm.lvRead.columnCount-1;1){
                mainForm.lvRead.delColumn(mainForm.lvRead.columnCount)
        }
然后再更新
如数据库不够要再加入列,就会报错
wth={40;500;-1};要把这个改成动态的,不会改,想了一个笨的办法
var wth={-1;-1;-1;-1;-1;-1;-1;-1;-1;-1}
        m=rs.Fields.count;
        for(i=1;m+1;1){
        wth=80        //为数组赋值,确定listview列宽
        }
这样可以支持到等宽小于10列的数据表,如何把那个wth弄成自动大小,可以动态支持更多的列?
把这个改成一个人事查询的
当数据在800行20列的时侯,读取在5秒左右(和机器有关),如可以再快点啊
回复

使用道具 举报

0

主题

3

帖子

36

积分

新手入门

Rank: 1

积分
36
发表于 2014-8-24 19:58:13 | 显示全部楼层

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=67269&ptid=9199][co

suncity 发表于 2014-8-22 19:23
如果你重复选择“选择分类”里面的分类表,会在lvRead里重新生成列,多点几次会生成的更多列,
解决办法, ...

var wth={-1;-1;-1;-1;-1;-1;-1;-1;-1;-1}发现这个写成var wth={-1;-1}这样也行
回复

使用道具 举报

1

主题

54

帖子

371

积分

培训班

积分
371
发表于 2016-4-24 00:02:29 | 显示全部楼层

新手学习

新手学习
回复

使用道具 举报

0

主题

12

帖子

70

积分

一级会员

Rank: 2

积分
70
发表于 2017-1-2 18:52:52 | 显示全部楼层
学习一下。
回复

使用道具 举报

0

主题

12

帖子

70

积分

一级会员

Rank: 2

积分
70
发表于 2017-6-2 13:37:23 | 显示全部楼层
回复

使用道具 举报

2

主题

22

帖子

170

积分

一级会员

Rank: 2

积分
170
发表于 2017-7-31 11:14:00 | 显示全部楼层
谢谢分享,准备写一个密码管理器,管理自己的各种密码~~参开一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-10-21 23:39 , Processed in 0.078125 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表