数据库
Access如何对交叉查询产生报表
ACCESS提供一个交叉查询的功能,为用户提供许多方便,它也可以直接打印。 但如果你需要使用这个交叉查询来制作一个报表,由于交叉查询产生的列是不定的,且根据数据而变,所以制作报表存在一些问题,请大家就这个问题进行讨论,提出一个比较好的解决方案。以后每周均会以这种形式对ACCESS的一些难题进行讨论。 表现优秀者将由版主或站长予以各种形式的嘉奖!!! ganrong 加够多的控件,然后用不到的隐藏起来 不知这种方法是否可行cnwang 先加控件再隐藏,或动态创建控件应该都可以。用交叉查询做报表源,其最大难点应该在于字段名的不固定,下面这句可以帮点忙啦:CurrentDb.QueryDefs("交叉查询1").Fields(2).Name老大这个点子非常不错!!!!!!! tmtony cnwang兄,我现在采取的办法是也是创建足够多的控件。 但我根据查询表或窗体(一般是子窗体)的列(动态列)来动态显示和重新定位报表中的列,使整个报表永远比较美观,但在处理上始终不是十分方便。 所以想知道高手在这方面的经验。yuab 我做了个例子可解决以上问题。最关键是不会影响速度。 文件下载tmtony 很不错,看来大家的思路都是一样的 我的程序基本上与你的是类似的。 我过几天整理一下也放上来 不过,想知道还有没有其它办法tmtony 上传了我的例子,由于有客户的数据,所以只放上报表和程序,无法取具体数据,大家看看程序即要明白。 根据产生的查询窗体的列的多少自动设置报表显示的列及重新排列各列的位置。 自动根据数据窗体栏目宽度的变化而自动改变报表各列的宽度的功能还正在完善(即所见即所得)文件下载
VB调用Access的报表的几种方法
在VB中也可使用ACCESS的报表VB可以生成独立的exe执行程序,但VB的报表不是很方便。 通过vsreport这个控件,你完全可以使用ACCESS来设计好报表,然后在VB中调用这些报表,效果与你直接在ACCESS调用报表一样。 VB的报表一直是它的弱项,在以前很长一段时间我都是使用这个方法来做报表的 beetle 提供的使用Access的Application对象的方法来调用 Dim MSAccess As Access.Application Set MSAccess = New Access.Application MSAccess.OpenCurrentDatabase (app.path & "\*.mdb") MSAccess.Visible = True MSAccess.DoCmd.OpenReport "报表名", acViewPreview tmtony(另一种VB调用Access报表的方法)我以前用过vsReport来调用,主要是调用ACCESS的报表,要找找,以前是1.1版本。对中文有一点问题,后来好像解决了
Access与sql server在查询中处理BIT / BOOLEAN 逻辑字段不同之处
1.在Access中可以用下面的查询语句: SELECT field FROM table WHERE boolField=TRUE -- or SELECT field FROM table WHERE boolField=FALSE 2.这两条语句在SQL Server中通不过,所以要改成下面的形式: SELECT field FROM table WHERE bitField=1 -- or SELECT field FROM table WHERE bitField=0 3.令人烦恼的是上面这两条语句在Access中也会出问题,因为Access把-1当作True,而不是1。在搞清楚了这个问题后,我们可以写出在两种环境中都能运行的查询语句: SELECT field FROM table WHERE bitField<>0 -- or SELECT field FROM table WHERE bitField=0 tmtony 我也是这么做的 当年花很多时间调错就是在这里, 常常是-1 和1 在捣鬼 huanghai 我的不知道怎么回事时用文本框的值等于选择框,结果是-1还是true什么的就知道了:)zhuyiwen 只能这么做, 这是没有办法的事情, 两种语言定义的不一样
Access2016数据库开发教程10
6.6 创建员工编码相关窗体模块 进入Main.mdb的设计界面,选中SysFrmLogin窗体,如下图6-24所示: 图6-24 窗体显示区 双击运行SysFrmLogin窗体,进入平台主界面,在左边导航区,选中【开发者工具】à【数据模块创建向导】,如下图6-25所示: 图6-25 数据模块自动生成器 用鼠标双击【数据模块创建向导】,将显示“数据模块创建向导”界面,如下图6-26所示: 图6-26数据模块自动生成器(1)
Access判断报表有否数据及打开时让报表最大化
问题: Access判断报表有否数据及打开时让报表最大化 如何点击自制“报表预览”按钮,弹出最大化的报表视图? 另如何判断报表有否数据,没有数据就不需要打印报表解决办法(tmtony) 在报表的open事件中 加入docmd.Maximize 即可而判断报表有否数据,可以在报表的NoData事件中Private Sub Report_NoData(Cancel As Integer) msgbox "没有数据" Cancel=trueEnd Sub
通过VBA代码动态设置Access报表Graph控件的数据源
如何通过程序动态设置报表中GRAPH控件的数据源?能否写出具体的设置语句 我的GRAPH就是微软OFFICE 2000自带的。tmtony1. 初次尝试:G_1.RowSource=SQL语句不行吗 g_1是graph 清空为 select fld1 as "空", fld2 as 0 from table1caijun64 回复 不行,我就是这样做的,但不行,出错,错误信息为:“运行时错误2455,你输入的表达式对属性rowsource的引用无效。”。注:我是在Access 2000中report的Open事件中对Graph控件的Rowsource属性赋SQL语句的。 2. 再次尝试: 我找到我原来的有图表的报表程序,发现我说错一件事。 图表的rowsource在程序中是无法真正动态产生的(我为此找过很长一段时间啦,微软也没给过正确答案给我) 我现在所谓的动态生成是生成它的源,即图表绑定到一个查询,你动态改变这个查询 改变查询的方法:Dim mydb As dao.Database Dim qdf As dao.QueryDef Set mydb = CurrentDb Set qdf = mydb.QueryDefs("test_v") qdf.SQL = Form_SPCÊý¾Ý²éѯ.¿ØÖÆͼ.Form.¿ØÖÆͼ.RowSource qdf.Close
Access数据库简介
Microsoft Access是Microsoft的数据库管理系统(DBMS),它将关系型Microsoft Jet数据库引擎与图形用户界面和软件开发工具结合在一起。它是专业版和更高版本的Microsoft Office应用程序中包含套件的成员。Microsoft Access存储的信息称为数据库。 要使用MS Access,需要遵循以下四个步骤 -
Access2016数据库开发教程9
6.5 创建报销明细相关窗体模块 完成了6.4节的准备工作后,现在可以利用平台特有的“数据模块创建向导”来快速生成具备“增、删、改、查找等功能”的窗体。 进入Main.mdb的设计界面,选中SysFrmLogin窗体,如下图6-14所示: 图6-14 窗体显示区 双击运行SysFrmLogin窗体,进入平台主界面,在左边导航区,选中【开发者工具】à【数据模块自动生成器】,如下图6-15所示: 图6-15 数据模块自动生成器 用鼠标双击【数据模块自动生成器】,将显示“数据模块自动生成器”界面,如下图6-16所示:
Visio 生成数据库字典的问题
Visio提供的Report功能可以生成许多种报表,其中就包括Table Report。 具体操作如下:选择菜单Database->Report,在弹出的页面中选择Table Report,下一步,在Print或者Preview前选择Default To: Table Report。 其中一个表的效果如下:
MySQL 数据库碎片优化、整理方法详细步骤图解教程
起因:查看线上数据库中Table Information时发现有一个日志表数据大小和索引大小有915M,但实际行数只有92行。该表需要频繁插入并且会定时去删掉旧的记录。表类型为Myisam,已建立一个索引,所以应该是产生了大量碎片,使用 Optimize table 表名 优化后大小变为2.19M,少了很多, 同时可以看出该表上的索引建的多余,因为插入操作比查询操作要多很多,而且查询不多,查询的数据量也一般比较小。借此延伸下MYSQL中Myisam、InnoDB碎片优化方式:Myisam清理碎片 OPTIMIZE TABLE table_nameInnoDB碎片优化 if you frequently delete rows (or update rows with variable-length data types), you can end up with a lot of wasted space in your data file(s), similar to filesystem fragmentation.If you’re not using the innodb_file_per_table option, the only thing you can do about it is export and import the database, a time-and-disk-intensive procedure.But if you are using innodb_file_per_table, you can identify and reclaim this space!Prior to 5.1.21, the free space counter is available from the table_comment column of information_schema.tables. Here is some SQL to identify tables with at least 100M (actually 97.65M) of free space:SELECT table_schema, table_name, table_comment FROM information_schema.tables WHERE engine LIKE ‘InnoDB’ AND table_comment RLIKE ‘InnoDB free: ([0-9]{6,}).*‘;Starting with 5.1.21, this was moved to the data_free column (a much more appropriate place):SELECT table_schema, table_name, data_free/1024/1024 AS data_free_MB FROM information_schema.tables WHERE engine LIKE ‘InnoDB’ AND data_free > 100*1024*1024;