北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
如果下列数据类型中有文字、数字类型需如何更新代码?
代码如下:
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