问题﹕
在VB中调用Access报表﹐以下的是Access对象的引用.
Dim MSAccess As Access.Application
Set MSAccess = New Access.Application
MSAccess.OpenCurrentDatabase (“D:\SalaryCount\SalaryCount.mdb”) MSAccess.DoCmd.OpenReport "salary",acViewPreview,FilterName,WhereCondition
我想问 FilterName参数主要怎样用?
WhereCondition 条件参数的具体写法是怎样?
在VB中调用Access报表﹐以下的是Access对象的引用.
Dim MSAccess As Access.Application
Set MSAccess = New Access.Application
MSAccess.OpenCurrentDatabase (“D:\SalaryCount\SalaryCount.mdb”) MSAccess.DoCmd.OpenReport "salary",acViewPreview,FilterName,WhereCondition
我想问 FilterName参数主要怎样用?
WhereCondition 条件参数的具体写法是怎样?
解决方案 »
- 用VB操作将金额这一列数字每个都减10,并保存为文本,如何实现????
- 厦门技术QQ群号(18242731)欢迎在厦门工作的加入。
- 报表打印!!!急用!!
- C++做的COM组件,传给VB一个字符数组,VC里用的是BSTR,在VB里得到的数组是LONG类型的,怎么转换?
- 如何通过查询语句,查询Access表中,所有字段中数据不为空和不等于0的字段和数据,显示在网格控件中。(附代码)
- 一个小菜的问题,请多指教!
- richtextbox和textbox中如何将光标移到末尾????
- 关于api函数sendmessage的问题!
- vb与mapinfo问题,知道的朋友请进来看一下!
- VB中返回数组的函数被调用的问题。
- 如何在vb程序中调用word中的插入对象对话框——100分,高手指教
- RandomArray(ptr) = Int(Rnd() * 100)这句语句有问题吗,我照书上抄的,难道还是我的VB有问题
如果在程序数据库中执行包含 OpenReport 方法的 Visual Basic 代码,Microsoft Access 将首先在程序数据库中,使用该名称搜索报表,然后再到当前数据库中搜索。 view 下列固有常量之一:
acViewDesign
acViewNormal(默认值)
acViewPreview
如果该参数空缺,将假设为默认常量 (acViewNormal)。acViewNormal 将立刻打印报表。 filtername 字符串表达式,代表当前数据库中查询的有效名称。 wherecondition 字符串表达式,不包含 WHERE 关键字的有效 SQL WHERE 子句。 说明wherecondition 参数的最大长度为 32,768 个字符(而“宏”窗口中的 Where Condition 操作参数的最大长度为 256 个字符)。语法中的可选参数允许空缺,但是必须包含参数的逗号。如果有一个或多个位于末端的参数空缺,在指定的最后一个参数后面不需使用逗号。
你先看看帮助吧,能自己解决的就自己解决,这样提高会快些.
使用 OpenReport 操作,可以在“设计”视图或“打印预览”中打开报表或立即打印报表。也可以限制需要在报表中打印的记录。设置OpenReport 操作具有下列参数:操作参数 说明
Report Name 打开报表的名称。“宏”窗口“操作参数”中的“报表名称”框中显示了当前数据库中所有的报表。这是必需的参数。
如果在程序数据库中执行包含 OpenReport 操作的宏,Microsoft Access 将首先在程序数据库中查找具有该名称的报表,然后再到当前数据库中查找。
View 打开报表的视图。可在“视图”框中选择“打印”(立刻打印报表)、“设计”或“打印预览”。默认值为“打印”。
Filter Name 用于限制报表记录的筛选。可以输入一个已有的查询名称或保存为查询的筛选名称。不过,查询必须包含要打开的报表的所有字段,或将查询的 OutputAllFields 属性设置为“是”。
Where Condition 有效的 SQL WHERE 子句(不包含 WHERE 关键字),或 Microsoft Access 用来从报表的基表或基础查询中选择记录的表达式。如果选择“筛选名称”参数指定的筛选,Microsoft Access 将把 WHERE 子句应用于筛选的结果。
如果要打开报表,并使用某个窗体控件的数值来限制报表中的记录,可使用下列表达式:[fieldname] = Forms![formname]![controlname on form]FieldName 参数是要打开的报表的基础表或基础查询的名称。ControlNameon form 参数是窗体控件的名称,该控件包含需要报表记录与之匹配的数值。
注意 Where 条件参数最长为 256 个字符。如果需要输入更复杂、更长的 SQL WHERE 子句,可使用 Visual Basic 中 DoCmd 对象的 OpenReport 方法。在 Visual Basic 中可以输入最长为 32,768 个字符的 SQL WHERE 子句。
说明View 参数的“打印”设置将使用当前的打印机设置立即打印报表,而不打开“打印”对话框。也可以使用 OpenReport 操作打开并设置报表,然后使用 PrintOut 操作进行打印。例如,可能要在打印前修改报表,或使用 PrintOut 操作改变打印机设置。用户所应用的筛选和 Where 条件将成为报表的 Filter 属性设置。OpenReport 操作与选择报表后单击“数据库”窗口中的“设计”按钮、“预览”按钮或“文件”菜单上的“打印”命令的功能相似。提示 如果要用不同的数据设置来打印类似的报表,可以使用筛选或 WHERE 子句来限制打印在报表上的记录,然后编辑宏,以应用不同的筛选或改变 Where Condition 参数。
可以在“数据库”窗口中选择报表,并将其拖动到宏的操作行中,来自动创建在“打印预览”中打开报表的 OpenReport 操作。
TO : qingming81(晴明)我还有一个问题请教你们﹐我做的Access报表是根据Access的两个查询得到的﹐一个主表里面加上一个子报表﹐他们的输入参数相同﹐但我在VB里面调用
Access报表时报表打不开。我不知道是查询条件写错还是其它问题﹐麻烦你们给看一下。代码如下﹕主报表的查询﹕
SELECT w.CardID, s.SalaryYear+"年"+s.SalaryMonth+"月" AS SalaryDate, s.TotalSalary, s.Tax, s.PaySalary, s.WorkID
FROM salary_count AS s, worker_info AS w
WHERE w.CardID= [txtcardid] And s.SalaryYear=[txtyear] And s.SalaryMonth= [txtmonth] And s.WorkID=w.workid子报表的查询﹕
SELECT w.workid, w.outlayid, outlayname, outlay
FROM worker_outlay AS w, param_outlay AS p, worker_info m
WHERE w.outlayid=p.outlayid and w.workid=m.workid and m.cardid=[txtcardid] And year(begindate)=[txtyear] And month(begindate)=[txtmonth]VB调用过程﹕
Private Sub ExecuteReport(CardID As String, theYear As Integer, theMonth As Integer)
Dim MSAccess As Access.Application
Set MSAccess = New Access.Application
MSAccess.OpenCurrentDatabase ("D:\SalaryCount\SalaryCount.mdb"
strCondition = "[PayRoll]![txt_cardid]='" & CardID & "'
and [PayRoll].[txtYear]=" & theYear & "
and [PayRoll].[txtMonth]=" & theMont
MSAccess.DoCmd.OpenReport "PayRoll_Main", acViewPreview
MSAccess.CloseCurrentDatabase
Set MSAccess = Nothing
'注﹕[PayRoll]是报表名称
End Sub
MSAccess.DoCmd.OpenReport "PayRoll_Main", acViewPreview,, strCondition