我参考黄海同志做的《发票套打程序.mdb》,把wrod模板上相应位置的字体替换为相应表字段里的数据。
做的一直很顺利,但遇到一个表字段数据比较多(大约有四五百字符,字符小于255个就是正常的)就出现了问题,代码如下,望大大们指点迷津: sqlStr = "select * from Policy_SP_Clause where [policy_sbj_id]='" & Me.id.Value & "'"
Set rs = CurrentDb.OpenRecordset(sqlStr)
For N = 1 To 8 '8条Clause明细记录处理
policy_sublimits = rs.Fields("policy_sublimits")
clause_descr_en = rs.Fields("clause_descr_en")
.Text = "[" & "policy_sublimits" & N & "]"
.Replacement.Text = Nz(IIf(rs.EOF, "", policy_sublimits), "")
' .Replacement.Text = Nz(IIf(rs.EOF, "", rs!policy_sublimits), "")
.Execute , , , , , , , , , , 2 '全部查找和替换 .Text = "[" & "clause_descr_en" & N & "]"
.Replacement.Text = Nz(IIf(rs.EOF, "", clause_descr_en), "")
' .Replacement.Text = Nz(IIf(rs.EOF, "", rs!clause_descr_en), "") '直接读取仍不行
.Execute , , , , , , , , , , 2
If Not rs.EOF Then rs.MoveNext
Next代码说明:
当表字段“clause_descr_en”里字符小于255个时,正常把word里“[clause_descr_en]”替换掉;当大于255个字符时,word模板上“[clause_descr_en]”却被表字段“policy_sublimits”内容所替换。
做的一直很顺利,但遇到一个表字段数据比较多(大约有四五百字符,字符小于255个就是正常的)就出现了问题,代码如下,望大大们指点迷津: sqlStr = "select * from Policy_SP_Clause where [policy_sbj_id]='" & Me.id.Value & "'"
Set rs = CurrentDb.OpenRecordset(sqlStr)
For N = 1 To 8 '8条Clause明细记录处理
policy_sublimits = rs.Fields("policy_sublimits")
clause_descr_en = rs.Fields("clause_descr_en")
.Text = "[" & "policy_sublimits" & N & "]"
.Replacement.Text = Nz(IIf(rs.EOF, "", policy_sublimits), "")
' .Replacement.Text = Nz(IIf(rs.EOF, "", rs!policy_sublimits), "")
.Execute , , , , , , , , , , 2 '全部查找和替换 .Text = "[" & "clause_descr_en" & N & "]"
.Replacement.Text = Nz(IIf(rs.EOF, "", clause_descr_en), "")
' .Replacement.Text = Nz(IIf(rs.EOF, "", rs!clause_descr_en), "") '直接读取仍不行
.Execute , , , , , , , , , , 2
If Not rs.EOF Then rs.MoveNext
Next代码说明:
当表字段“clause_descr_en”里字符小于255个时,正常把word里“[clause_descr_en]”替换掉;当大于255个字符时,word模板上“[clause_descr_en]”却被表字段“policy_sublimits”内容所替换。
源文件下载地址:
http://access911.net/csdn/FileDescription.asp?mdb=2009-7-19&id=38&mode=3
最新(上述链接的源文件)代码说明:'[id]=1时,表字段"template_content_en"字符数小于255,一切正常
' sqlStr = "Select * from Policy_SP_Clause_Template where [id]=1"''[id]=2时,表字段"template_content_en"字符数大于255,异常(出现上述所描述的现象)
sqlStr = "Select * from Policy_SP_Clause_Template where [id]=2"
===================================================================
但下面这种情况却可以:
1.从表字段colmn1里取出一个400字符的值赋予一个String变量
2.然后再用Insert把这个变量的值插入另一表字段colmn2中
3.查看colmn2里刚插入的信息,刚插入的400字符全部保存进去啦。推测,不应该是String的长度引起的。
或许我的替换代码不合适替换大数据量。
.Text = "[" & "clause_descr_en" & N & "]"
.Replacement.Text = Nz(IIf(rs.EOF, "", clause_descr_en), "")
.Execute , , , , , , , , , , 2
doc.Books("clause_descr_en" & N & "").Range.Text = (rs!clause_descr_en)