24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1480  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wilstar

金虫 (正式写手)

[求助] access内某个字段为空时,向word导入数据,提示:数据类型错误,请问如何克服?含文件已有1人参与

在网上找了一个《【access源码示例】-word导入导出系列-替换方式导出》,想要学习。
在学习《【access源码示例】-word导入导出系列-替换方式导出》过程中,发现该程序存在一个缺陷。
缺陷如下:如果某个字段为空,那么会提示类型错误,同时出现该字段为空,其他在后字段也为空的问题。

麻烦哪位高手指点下如何解决这个问题,最好能够直接在数据库中进行修改,谢谢!

原始链接:http://www.accessoft.com/article-show.asp?id=7264
同时一并附上数据库。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 20120806083414.rar
  • 2014-07-20 12:21:45, 97.45 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

claro

金虫 (小有名气)

【答案】应助回帖

'对不起,这两天忙,解决了吗?

[ 发自手机版 http://muchong.com/3g ]

» 本帖已获得的红花(最新10朵)

7楼2014-07-23 06:39:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

wilstar

金虫 (正式写手)

Private Sub 导出word_Click()
On Error GoTo Err_cmdExportToWord_Click
    Dim objApp          As Object 'Word.Application
    Dim objDoc          As Object 'Word.Document
    Dim objTable        As Object 'Word.Table
    Dim strTemplates    As String '模板文件路径名
    Dim strFileName     As String '将数据导出到此文件
    Dim D_Price As Currency
    Dim I As Integer
        
    strTemplates = CurrentProject.Path & "\word模板\采购订单模板.doc"
   
    '通过文件对话框生成另存为文件名
    With FileDialog(2)  'msoFileDialogSaveAs
        .InitialFileName = CurrentProject.Path & "\" & Me.订单编号 & "-采购订单.doc"
        If .Show Then strFileName = .SelectedItems(1)
    End With
   
    '如果对话框被取消,则变量没有被赋值,退出过程
    If strFileName = "" Then Exit Sub
   
    '文件名必须包括“.doc”的文件扩展名,如没有则自动加上
    If Not strFileName Like "*.doc" Then strFileName = strFileName & ".doc"
    '如果文件已存在,则删除已有文件
    If Dir(strFileName) <> "" Then Kill strFileName
   
    '将光标设置为沙漏形,以示正在执行程序
    DoCmd.Hourglass True
   
    '打开模板文件
    Set objApp = CreateObject("Word.Application"
    objApp.Visible = True
    Set objDoc = objApp.Documents.Open(strTemplates, , True)

    lngI = Nz(DCount("*", "采购明细表", "订单ID = " & Me.订单ID & "", 0)
    '如果订单明细记录大于0才导出明细
    If lngI > 0 Then
        D_Price = DSum("金额", "采购明细表", "订单ID = " & Me.订单ID & ""
        Set objTable = objDoc.Tables(1)
        For I = 1 To lngI - 1
            Set rowNew = objTable.Rows.Add(beforeRow:=objTable.Rows(2))
        Next
   
        '向Word中对应表格单元格写入数据
        I = 2
        With objTable
            Set rst = CurrentProject.Connection.Execute("select 产品名称,规格,数量,单位,单价,金额 from 采购明细表 where 订单ID = " & Me.订单ID)
            Do While Not rst.EOF
                .Cell(I, 1).Range = rst("产品名称"
                .Cell(I, 2).Range = rst("规格"
                .Cell(I, 3).Range = rst("单位"
                .Cell(I, 4).Range = rst("数量"
                .Cell(I, 5).Range = rst("单价"
                .Cell(I, 6).Range = rst("金额"
                I = I + 1
            rst.MoveNext
            Loop
            rst.Close
            Set rst = Nothing
        End With
    End If

    With objApp.Application.Selection
            .Find.ClearFormatting
            .Find.Replacement.ClearFormatting
                With .Find
                    .Text = "{$订单编号}"
                    .Replacement.Text = Me.订单编号.Value & ""
                 End With
                .Find.Execute Replace:=wdReplaceAll
                With .Find
                    .Text = "{$供方地址}"
                    .Replacement.Text = Me.地址.Value & ""
                 End With
                .Find.Execute Replace:=wdReplaceAll
                With .Find
                    .Text = "{$供应商}"
                    .Replacement.Text = Me.供应商.Value & ""
                 End With
                .Find.Execute Replace:=wdReplaceAll
                With .Find
                    .Text = "{$联系人}"
                    .Replacement.Text = Me.联系人.Value & ""
                 End With
                .Find.Execute Replace:=wdReplaceAll
                With .Find
                    .Text = "{$签订日期}"
                    .Replacement.Text = Me.签订日期.Value & ""
                 End With
                .Find.Execute Replace:=wdReplaceAll
                With .Find
                    .Text = "{$采购员}"
                    .Replacement.Text = Me.采购员.Value & ""
                 End With
                .Find.Execute Replace:=wdReplaceAll
                With .Find
                    .Text = "{$金额}"
                    .Replacement.Text = D_Price
                 End With
                .Find.Execute Replace:=wdReplaceAll
    End With
   
    '将写入数据的模板另存为文档文件
    objDoc.SaveAs strFileName
    objDoc.Saved = True
            

Exit_cmdExportToWord_Click:
    If Not objDoc Is Nothing Then objApp.Visible = True
    '恢复光标形状
    DoCmd.Hourglass False
    Set objApp = Nothing
    Set objDoc = Nothing
    Set objTable = Nothing
    Exit Sub

Err_cmdExportToWord_Click:
    MsgBox Err.Description, vbCritical, "出错"
    Resume Exit_cmdExportToWord_Click
End Sub
2楼2014-07-20 16:57:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wilstar

金虫 (正式写手)

引用回帖:
2楼: Originally posted by wilstar at 2014-07-20 16:57:58
Private Sub 导出word_Click()
On Error GoTo Err_cmdExportToWord_Click
    Dim objApp          As Object 'Word.Application
    Dim objDoc          As Object 'Word.Document
    Dim objTable        A ...

麻烦哪位大仙给我详细解释下这段代码,可以么?金币照样送

我想了解这段代码,然后修改后,为己所用,但改了一天,还是不停的报错

所以就像让哪位高手指点下
3楼2014-07-20 17:00:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wilstar

金虫 (正式写手)

Set rst = CurrentProject.Connection.Execute("select 产品名称,规格,数量,单位,单价,金额 from 采购明细表 where 订单ID = " & Me.订单ID)

而且这句话,不知道是什么意义,当我将“订单ID”换成其他“日期ID”,同时修改相应的表格后,还是一直报错,感觉只能用“订单ID”样,求高手指点啊
4楼2014-07-20 17:21:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见