Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

数据类型

呆萌萌  发表于:2015-05-26 17:08:02  
复制

如果下列数据类型中有文字、数字类型需如何更新代码?
代码如下:
Private Sub cmdImportFromExcel_Click()
On Error GoTo Err_cmdImportFromExcel_Click
    Dim strFileName     As String
    Dim strSQL          As String
    Dim lngN            As Long
    Dim lngRows         As Long
    Dim strMsg          As String
    Dim blnReplace      As Boolean
    Dim blnErrMark      As Boolean
    Dim rst             As Object 'DAO.Recordset
    Dim objApp          As Object 'Excel.Application
    Dim objBook         As Object 'Excel.Workbook
    
    '使用文件对话框取得文件名
    With FileDialog(3)    'msoFileDialogFilePicker
        .InitialFileName = CurrentProject.Path
        .Filters.Clear
        .Filters.Add "Microsoft Excel", "*.xls"
        .AllowMultiSelect = False
        If .Show Then strFileName = .SelectedItems(1)
    End With

         '因为Excel的单元格如果没有数据读取到的是空字符串,而我们需要的是空值(Null),所以这里需要转换一下
如果下列数据类型中有数字类型需如何更新代码?
            rst!客户代码 = IIf(.Range("A" & lngN) = "", Null, .Range("A" & lngN))
            rst!公司名称 = IIf(.Range("B" & lngN) = "", Null, .Range("B" & lngN))
            rst!联系人姓名 = IIf(.Range("C" & lngN) = "", Null, .Range("C" & lngN))
            rst!联系人职务 = IIf(.Range("D" & lngN) = "", Null, .Range("D" & lngN))
            rst!国家 = IIf(.Range("E" & lngN) = "", Null, .Range("E" & lngN))
            rst!地区 = IIf(.Range("F" & lngN) = "", Null, .Range("F" & lngN))
            rst!城市 = IIf(.Range("G" & lngN) = "", Null, .Range("G" & lngN))
            rst!地址 = IIf(.Range("H" & lngN) = "", Null, .Range("H" & lngN))
            rst!邮政编码 = IIf(.Range("I" & lngN) = "", Null, .Range("I" & lngN))
            rst!电话 = IIf(.Range("J" & lngN) = "", Null, .Range("J" & lngN))
            rst!传真 = IIf(.Range("K" & lngN) = "", Null, .Range("K" & lngN))
            rst.Update
NextRow:
            lngN = lngN + 1
        Loop
        rst.Close
    End With
    
    Me.客户_子窗体.Requery
        
    strMsg = "数据导入完成!"
   If blnErrMark Then strMsg = strMsg & "某些数据未能被导入,点“确定”查看具体情况。"
    
    SysCmd acSysCmdSetStatus, "导入完成!"
    MsgBox strMsg, vbInformation, "提示"
    
    '如果导入过程中产生了错误,则显示Excel以便查看那些未能导入的记录的出错原因
    If blnErrMark Then
        objApp.Range("L1").Select
        '设置Saved属性为True,关闭时不保存写入的错误信息
        objBook.Saved = True
        objApp.Visible = True
    End If
    
Exit_cmdImportFromExcel_Click:
    '只有当导入过程中没有产生错误时才自动关闭Excel
    If Not blnErrMark Then
        If Not objApp Is Nothing Then objApp.Quit
    End If
    '销毁进度条
    SysCmd acSysCmdRemoveMeter
    '恢复光标
    DoCmd.Hourglass False
    Set rst = Nothing
    Set objApp = Nothing
    Set objBook = Nothing
    Exit Sub
    
Err_cmdImportFromExcel_Click:
    Select Case Err
    Case 3022   '记录已存在的错误
        '如果选择了替换,则先删除表中已有记录,重新保存
        If blnReplace Then
            CurrentDb.Execute "DELETE FROM 客户 WHERE 客户代码='" & objApp.Range("A" & lngN) & "'"
            Resume
        Else
            '否则将错误信息写入到Excel数据的右边第1个空列
            blnErrMark = True
            objApp.Range("L" & lngN) = "#3022 该记录已存在,未被导入。"
            '然后恢复到NextRow标签处
            Resume NextRow
        End If
    Case Else
   '如果是其它错误,当lngN>=2时属于导入过程中的错误,这时将错误便利店写入到Excel数据的右边第1个空列
        If lngN >= 2 Then
            blnErrMark = True
            objApp.Range("L" & lngN) = "#" & Err & " " & Err.Description
            '然后恢复到NextRow标签处
            Resume NextRow
        Else
            '如果不是导入过程中的错误,则显示错误消息框,然后恢复到退出标签处
            MsgBox Err.Description, vbCritical, "错误#" & Err
            Resume Exit_cmdImportFromExcel_Click
        End If
    End Select
End Sub

 

Top
易勋 发表于:2015-05-26 18:57:55
你用DAO 不过是日期 数字 文本 都是一样的代码

杜超 发表于:2015-05-26 21:37:50

用nz(字段,0)

【Access入门】直观解释nz函数,nz函数入门示例一则,将空值转换为0的方法,Nz([字段名称]),如何让空值变为0参与计算[Access软件网]
http://www.accessoft.com/article-show.asp?id=7431



呆萌萌 发表于:2015-05-27 11:29:30

能明确的说一下DAO么?不太会~



呆萌萌 发表于:2015-05-28 17:52:32

还有没有其他解决方案



总记录:4篇  页次:1/1 9 1 :