本帖最后由 wwwaauto 于 2013-10-7 11:51 编辑 【阅读对象】初学者 本人是刚学aauto没几天的初学者,昨天做数据库(access)练习的时候,由于对table不熟悉,碰到一个问题折腾了半天才搞定,感觉这个问题的解决对初学者应该很有帮助,于是就写出来献丑一下,希望大牛们多多指点,以求进步。 为了做实验,建了一个简单的数据库 【数据库】access 数据库文件名:data.mdb 表名:用户信息 字段:ID(自动编号)、学号(文本类型)、姓名(文本类型)、性别(文本类型) 连接数据库,这里使用绝对路径,也可以使用相对路径,对于初学者做实验建议使用绝对路径比较容易实现 import access; var db = access("D:/Access数据库/data.mdb") 新增内容只要按照aauto的范例做都没问题,但是aauto的查询显示范例都是在控制台(黑屏)模式下显示,暂时没找到用listview等来显示的,或者在论坛找到的要么很复杂,要么也没有直接满足我的需求,不过看了有的帖子也受到了启发,最后终于解决了我想要的问题。 在窗体放一个查询的按钮,和一个用于显示的listview的控件,显示网格设为true,然后在查询按钮的执行代码输入下面的代码: mainForm.listview.clear(); //每次显示前把以前的内容清掉 if(mainForm.listview.columnCount<=0){ //这个条件限制第一次执行,后面的查询不需要再添加显示列了 mainForm.listview.insertColumn("学号",80); mainForm.listview.insertColumn("姓名",80); mainForm.listview.insertColumn("性别",80); } //下面这段是关键,折腾了我好久 var tb = db.getTable("select 学号,姓名,性别 from 用户信息"); for (a,s in tb) { mainForm.listview.addItem({s["学号"]; s["姓名"]; s["性别"];} ); } 以上代码中的for (a,s in tb),一定要a,s两个变量,如果for (s in tb)就不行了。通过实验,for (a,s in tb)的变量a对应的是table的行号,s才是对应行的内容。虽然这里用不到行号a,但是还是要放在那里,否则就不行了。不过我现在对table的结构或者使用还是很不了解,希望大牛有空谢教程给予详细使用范例,特别是二维的,一维的范例给的也很多,学习不难,就是范例给的多维数组(或table)范例太少了,初学者很难理解。 var tb = db.getTable("select 学号,姓名,性别 from 用户信息"); for (a,s in tb) { mainForm.listview.addItem({s["学号"]; s["姓名"]; s["性别"];} ); } 这段代码也可以用 for (rs in db.each("select * from 用户信息")) { mainForm.listview.addItem({rs("学号").value;rs("姓名").value;rs("性别").value}); } 来代替,不过对于数据量很大的时候,不知道哪种方式性能好些 |
|