想要实现的效果:
从数据库里读出记录,然后按照公文的样式打印出来如下:
**单位:
贵单位共有*同志在我单位实习,特此证明。
然后落款、日期。
这样的程序该怎么实现呢。如果用报表的方式,那么数据集该怎么设置,因为每个文档读取的记录数是不一样的。最好能有个选择的界面,然后一点打印,就打印出预先设置好格式的文档。
求解决方案。我是新手,请给予帮助。非常感谢。
你用一些报表控件来做吧
自带的打印控件实现起来满麻烦的
下载专业的报表控件,可以轻松实现
VS的有水晶报表。你可以网上找一下。
1.
vs自带的水晶报表
2.
建立word模板,然后填空
3.
Smart Document (用户灵活性很大)
你参看一下WORD的信封批打是怎么回事就明白的了.
留意一下"域"的概念.
如果不是一定要用编程来解决的话,那你就用word里的“邮件合并”就能解决的。
下面的连接有个完整的代码,应该是可以实现你的功能的方案之一:
HOWTO:在 Visual Basic .NET 中使 Microsoft Word 自动运行以执行邮件合并
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;301656
如果只是用单机版,你想要实现的功能容易实现,其实只要在word中在变量*的位置添加“文本框”,然后在word中在vba宏中编程,利用ado读取记录集,利用记录的循环进行循环打印即可。
Sub Macro2()
*******************************************记录变成数组
Dim ii()
k = ""
Application.ScreenUpdating = False
i = CStr(InputBox("请输入要打印的记录序号例如:1,3,5或者1-24或者1,2,5-24,28", "打印"))
If i = "" Then
Exit Sub
End If
j = Split(i, ",")
n = 0
For l = 0 To UBound(j)
m = Split(j(l), "-")
If UBound(m) = 1 Then
For o = m(0) To m(1)
ReDim Preserve ii(n + 1)
ii(n) = o
n = n + 1
Next
Else
ReDim Preserve ii(n + 1)
ii(n) = j(l)
n = n + 1
End If
Next
sql = ""
For i = 0 To UBound(ii) - 1
If i <> UBound(ii) - 1 Then
sql = sql & "序号=" & ii(i) & " OR "
Else
sql = sql & "序号=" & ii(i)
End If
Next
**********打开excel数据库
Dim cnnConn As ADODB.Connection
Dim rstRecordset As ADODB.Recordset
Dim cmdCommand As ADODB.Command
Open the connection.
Set cnnConn = New ADODB.Connection
With cnnConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & ActiveDocument.Path & "\打印.xls;" & _
"Extended Properties = Excel 8.0;"
.Open
End With
Set the command text.
sql = "Select * From [档案打印$] where " & sql
Open the recordset.
Set rstRecordset = New ADODB.Recordset
rstRecordset.Open sql, cnnConn, adOpenDynamic, adLockPessimistic
rstRecordset.MoveFirst
While Not rstRecordset.EOF
*****************用一条记录对公文的文本框字段进行添加值,并且打印,
For i = 2 To 9
If rstRecordset(i - 1) <> "" Then
ActiveDocument.Shapes(i).TextFrame.TextRange = rstRecordset(i - 1)
End If
Next
ActiveDocument.PrintOut
rstRecordset.MoveNext
Wend
Close the connections and clean up.
cnnConn.Close
Set cmdCommand = Nothing
Set rstRecordset = Nothing
Set cnnConn = Nothing
End Sub
打印插件,在线演示
www.fcsoft.com.cn/eprint/index.htm
eprint自定义打印 工具 可以很轻松实现 你上面的打印要求
加msn:eprint01@hotmail.com 获得演示版本
net的报表功能太弱,用其它第三方控件,可是NET也不成熟,有时第三方控件应用时也存在问题!!最好放弃NET,用c++,PB,DELPHI....