当前位置:编程学习 > VB >>

vb程序中打印报表的问题

程序中增加了DataEnvironment和datareport,然后在DataEnvironment的connection下增加了一个command,我想在command中使用一个sql语句,其中该sql语句中要用到该程序的一个变量,如何实现?请教 --------------------编程问答-------------------- 1.
sqlstr = "select * from yourtable where result ='" & text1.Text & "'"
DataEnvironment1.Commands("Command1").CommandText = sqlstr

2.
在dataenvironment command 属性-通用-sql中输入select * from yourtable where fname=?
然后到属性页 Parameters 中给参数指定名称、类型、长度等。 

调用:DataEnvironment1.Command1 "abc" 'abc将会传递给上面command的?号,注意参数的类型要一致。

3.(推荐)
建议直接使用adodb作为datareport的数据源。
--------------------编程问答-------------------- 建议直接使用adodb作为datareport的数据源。 --------------------编程问答-------------------- 感谢上面两位,我将我的程序说具体一点吧!
我现在的程序是一个简单的点菜系统,包括两个表:点菜表、菜品表
点菜表用来记录哪个桌点了什么菜,数量和单价,字段包括:序号,菜名,单价,合计,数量,桌号
菜品表是提供的菜,包括序号,菜名,单价
我的点菜和退菜功能已经实现,我现在想实现的是做个报表进行结账,要从点菜这个表中提取出要结账的包间所点菜,列出清单及汇总并打印,现在就是在这里卡住了,我在程序中增加了DataEnvironment和datareport,该怎么实现?再就是我已经将要结账的包间的点菜信息显示在了结账窗口的msflexgrid控件中,如果能打印控件并汇总也是可以实现的,请教如何实现? --------------------编程问答--------------------
引用 3 楼 xiuxiuyyd 的回复:
感谢上面两位,我将我的程序说具体一点吧!
我现在的程序是一个简单的点菜系统,包括两个表:点菜表、菜品表
点菜表用来记录哪个桌点了什么菜,数量和单价,字段包括:序号,菜名,单价,合计,数量,桌号
菜品表是提供的菜,包括序号,菜名,单价
我的点菜和退菜功能已经实现,我现在想实现的是做个报表进行结账,要从点菜这个表中提取出要结账的包间所点菜,列出清单及汇总并打印,现在就是在这里卡住了,我在程序中增加了DataEnvironment和datareport,该怎么实现?再就是我已经将要结账的包间的点菜信息显示在了结账窗口的msflexgrid控件中,如果能打印控件并汇总也是可以实现的,请教如何实现?

如果这样你直接me.printform吧,别搞什么datareport什么数据环境这么复杂了。 --------------------编程问答-------------------- me.printform不好用,不是很方便,还是请教用datareport和dataenviornment进行打印的问题?就是打印一个数据库中的一部分(进过sql语句筛选的,而且where语句中有一个程序中用到的变量) --------------------编程问答-------------------- [img=http://b26.photo.store.qq.com/http_imgload.cgi?/rurl4_b=8553897c6d56ac24b80932ecf2119f9042a09c49c8cf3a12a22f592060be97621633fd8a464a6e6304d7a7b6a660cec10699d8076e6dcea500a1585640007d414b940d8ea2ee1d8431d0254a81876084478bbcb4][/img]
这个是我的dataenviornment中的connection下command属性页,其中我希望是从表“点菜”中选出我所要的桌号的记录,其中n是一个变量,这个变量是程序中一个窗体控件的值
[img=http://b26.photo.store.qq.com/http_imgload.cgi?/rurl4_b=8553897c6d56ac24b80932ecf2119f90af090233c6afa3b444512d5821d17737adcecb51682e545742ed1586689f8e8e956d1a3cbdac755438c86d663b5c38527a42f09d120c5638763579fef0b6a828fe90f69e][/img]
这个是按照2楼的第二种方法弄的,但是打印的报表里面什么都没有!不知道怎么搞的,可能值没有传过来!
我如果在sql语句后面直接输入一个string值,则可以正常的打印!请教各位高手!不胜感激! --------------------编程问答-------------------- 懒得写adodb的连接了,就用adodc做个简单示例吧。
Private Sub Command1_Click()
'添一adodc,设置好让它能正常连接数据库,新建一datareport,并在Section1里添加一个rpttextbox,这是示例,就什么属性都不需要设置了。
Set DataReport1.DataSource = Form1.Adodc1.Recordset
DataReport1.Sections("Section1").Controls(1).DataField = "num" 'num是adodc的recordset里的其中一个字段
DataReport1.Show
End Sub
--------------------编程问答--------------------
引用 6 楼 xiuxiuyyd 的回复:
这个是我的dataenviornment中的connection下command属性页,其中我希望是从表“点菜”中选出我所要的桌号的记录,其中n是一个变量,这个变量是程序中一个窗体控件的值

这个是按照2楼的第二种方法弄的,但是打印的报表里面什么都没有!不知道怎么搞的,可能值没有传过来!
我如果在sql语句后面直接输入一个string值,则可以正常的打印!请教各位高手!不胜感激!

你的图片什么都看不见.
另外,你不会是真的把"select * from yourtable where fname=?"整个输入到command1的sql语句框去吧,这样你设置参数类型的时候怎么可能会通过?那个问号的意思是你可以随意设一个合法的参数名,之后你就可以在command1的参数设置页看到这个参数名了,例如:
select * from yourtable where fname=kkk
然后就应该可以在参数设置页看到有参数kkk的各项设置,最后在程序中:
DataEnvironment1.Command1 "h"
DataReport1.Show
就可以了,相当于列印出select * from yourtable where fname="h"的记录. --------------------编程问答-------------------- 不过还是建议用adodb或adodc的方法,简单方便灵活快捷. --------------------编程问答-------------------- lsftest,非常感谢,你在7楼所说的adodc的方法是将一个表所有该字段打印出来吧,但是我需要将表中满足一个条件的字段打印出来,请指教! --------------------编程问答-------------------- DataReport1.Sections("Section1").Controls(1).DataField = "num" 'num是adodc的recordset里的其中一个字段


执行到这行出现“对象不支持该属性和方法”
如何解决? --------------------编程问答--------------------
引用 10 楼 xiuxiuyyd 的回复:
lsftest,非常感谢,你在7楼所说的adodc的方法是将一个表所有该字段打印出来吧,但是我需要将表中满足一个条件的字段打印出来,请指教!

设置adodc的recordsource属性,在编程环境中将这个属性设为1(即adcmdtext),然后可以在下面的sql框中输入语句如:
select * from yourtable where......

或者在程序运行的时候修改这个属性:
Private Sub Command1_Click()
Adodc1.RecordSource = "select  * from testtable where num='h'"
Adodc1.Refresh
DataGrid1.Refresh
End Sub --------------------编程问答--------------------
引用 11 楼 xiuxiuyyd 的回复:
DataReport1.Sections("Section1").Controls(1).DataField = "num" 'num是adodc的recordset里的其中一个字段


执行到这行出现“对象不支持该属性和方法”
如何解决?


注意这个语句是随手写的,所以用了两种引用的方法,其中Section1是名字引用,所以你要看看你的Section1(即细节)有没有另外设置了名字,如果有就要用你设置的名字代替上面语句的Section1。
而里面的控件问题,可能是你是用自己的程序在试,而你自己本身的程序的Section1里的第一个control并不是rpttextbox。所以出错。可以把它也改为名字引用:
DataReport1.Sections("Section1").Controls("text1").DataField = "num" 'num是adodc的recordset
这个text1就是你Section1里的一个rpttextbox的名字。 --------------------编程问答--------------------
引用 13 楼 lsftest 的回复:
引用 11 楼 xiuxiuyyd 的回复:
DataReport1.Sections("Section1").Controls(1).DataField = "num" 'num是adodc的recordset里的其中一个字段


执行到这行出现“对象不支持该属性和方法”
如何解决?


注意这个语句是随手写的,所以用了两种引用的方法,其中Section1是名字引用,所以你要看看你的Section1(即细节)有没有另外设置了名字,如果有就要用你设置的名字代替上面语句的Section1。
而里面的控件问题,可能是你是用自己的程序在试,而你自己本身的程序的Section1里的第一个control并不是rpttextbox。所以出错。可以把它也改为名字引用:
DataReport1.Sections("Section1").Controls("text1").DataField = "num" 'num是adodc的recordset里的其中一个字段
这个text1就是你Section1里的一个rpttextbox的名字。
--------------------编程问答--------------------
引用 7 楼 lsftest 的回复:
懒得写adodb的连接了,就用adodc做个简单示例吧。VB codePrivateSub Command1_Click()'添一adodc,设置好让它能正常连接数据库,新建一datareport,并在Section1里添加一个rpttextbox,这是示例,就什么属性都不需要设置了。Set DataReport1.DataSource= Form1.Adodc1.Recordset
DataRe¡­


呵呵...够简单.
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,