当前位置:编程学习 > VB >>

******讨论基础资料、单据,导入导出开发的思路******

将EXCEL的基础资料导入导出至SQL数据库(一般企业管理软件的数据库),一般SQL导出EXCEL相对简单,但从EXCEL导入到SQL数据库中,需求对数据的类型,数据的SQL数据库的合法性进行校验。各位前辈有没有现成的代码?请大家谈谈开发的思路。 --------------------编程问答-------------------- 看我的博文,有现成的代码 --------------------编程问答-------------------- 导入时数据类型的校验是必须,但一般ERP软件的数据库关联表比较多,不可能不止一张表存放,最好还是咨询软件供应商 --------------------编程问答-------------------- 导入时使用C开头的VBA函数明确数据类型,比如:CCur、CInt、CStr、CDbl等。 --------------------编程问答-------------------- 2楼的兄弟有没有做过数据检验的模板.就是这个?2、数据库中要使用的数据表的数据项要和EXCEL表中的一样!  --------------------编程问答-------------------- A)先对 Excel 数据进行预处理,如 3 楼所说的强制类型转换。
 然后再导入。

B)先导入到一个临时表中,字段类型最好都是文本,然后在临时表中对各种设想的非法数据进行处理。
 最后将临时表中的数据用 Convert() 转化为最终的数据类型,SELECT...INTO 到永久表中。 --------------------编程问答-------------------- 1)Recordset.Fields(i).Type枚举sql表每个字段的类型
2)强制转换excel的数据类型与sql的一致
3)导入sql数据库

枚举类型的程序大体如下:

Type 属性范例
该范例通过显示与雇员表所有 Field 对象的 Type 属性值对应的常量名说明 Type 属性。该过程运行时需要 FieldType 函数。

Public Sub TypeX()

   Dim rstEmployees As ADODB.Recordset
   Dim fldLoop As ADODB.Field
   Dim strCnn As String

   ' 使用雇员表中的数据打开记录集。
   strCnn = "Provider=sqloledb;" & _
      "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
   Set rstEmployees = New ADODB.Recordset
   rstEmployees.Open "employee", strCnn, , , adCmdTable

   Debug.Print "Fields in Employee Table:" & vbCr

   ' 枚举雇员表的字段集合。
   For Each fldLoop In rstEmployees.Fields
      Debug.Print "  Name: " & fldLoop.Name & vbCr & _
         "  Type: " & FieldType(fldLoop.Type) & vbCr
   Next fldLoop

End Sub

Public Function FieldType(intType As Integer) As String

   Select Case intType
      Case adChar
         FieldType = "adChar"
      Case adVarChar
         FieldType = "adVarChar"
      Case adSmallInt
         FieldType = "adSmallInt"
      Case adUnsignedTinyInt
         FieldType = "adUnsignedTinyInt"
      Case adDBTimeStamp
         FieldType = "adDBTimeStamp"
   End Select

End Function



字段类型参考如下:
Type 属性
      

指示 Parameter、Field 或 Property 对象的操作类型或数据类型。

设置和返回值

设置或返回下列 DataTypeEnum 值之一。相应的 OLE DB 类型标识符在下表的说明栏的括号中给出。有关 OLE DB 数据类型的详细信息,请参阅第 10 章和《OLE DB 程序员参考》的附录 A。

常量 说明 
AdArray 与其他类型一起加入逻辑 OR 以指示该数据是那种类型的安全数组 (DBTYPE_ARRAY)。 
AdBigInt 8 字节带符号的整数 (DBTYPE_I8)。 
AdBinary 二进制值 (DBTYPE_BYTES)。 
AdBoolean 布尔型值 (DBTYPE_BOOL)。 
adByRef 与其他类型一起加入逻辑 OR 以指示该数据是其他类型数据的指针 (DBTYPE_BYREF)。 
adBSTR 以空结尾的字符串 (Unicode) (DBTYPE_BSTR)。 
adChar 字符串值 (DBTYPE_STR)。 
adCurrency 货币值 (DBTYPE_CY)。货币数字的小数点位置固定、小数点右侧有四位数字。该值保存为 8 字节范围为 10,000 的带符号整型值。 
adDate 日期值 (DBTYPE_DATE)。日期按双精度型数值来保存,数字全部表示从 1899 年 12 月 30 开始的日期数。小数部分是一天当中的片段时间。 
adDBDate 日期值 (yyyymmdd) (DBTYPE_DBDATE)。 
adDBTime 时间值 (hhmmss) (DBTYPE_DBTIME)。 
adDBTimeStamp 时间戳(yyyymmddhhmmss 加 10 亿分之一的小数)(DBTYPE_DBTIMESTAMP). 
adDecimal 具有固定精度和范围的精确数字值 (DBTYPE_DECIMAL)。 
adDouble 双精度浮点值 (DBTYPE_R8)。 
adEmpty 未指定值 (DBTYPE_EMPTY)。 
adError 32 - 位错误代码 (DBTYPE_ERROR)。 
adGUID 全局唯一的标识符 (GUID) (DBTYPE_GUID)。 
adIDispatch OLE 对象上 Idispatch 接口的指针 (DBTYPE_IDISPATCH)。 
adInteger 4 字节的带符号整型 (DBTYPE_I4)。 
adIUnknown OLE 对象上 IUnknown 接口的指针 (DBTYPE_IUNKNOWN)。 
adLongVarBinary 长二进制值(仅用于 Parameter 对象)。 
adLongVarChar 长字符串值(仅用于 Parameter 对象)。 
adLongVarWChar 以空结尾的长字符串值(仅用于 Parameter 对象)。 
adNumeric 具有固定精度和范围的精确数字值 (DBTYPE_NUMERIC)。 
adSingle 单精度浮点值 (DBTYPE_R4)。 
adSmallInt 2 字节带符号整型 (DBTYPE_I2)。 
adTinyInt 1 字节带符号整型 (DBTYPE_I1)。 
adUnsignedBigInt 8 字节不带符号整型 (DBTYPE_UI8)。 
adUnsignedInt 4 字节不带符号整型 (DBTYPE_UI4)。 
adUnsignedSmallInt 2 字节不带符号整型 (DBTYPE_UI2)。 
adUnsignedTinyInt 1 字节不带符号整型 (DBTYPE_UI1)。 
adUserDefined 用户定义的变量 (DBTYPE_UDT)。 
adVarBinary 二进制值(仅 Parameter 对象)。 
adVarChar 字符串值(仅 Parameter 对象)。 
adVariant 自动变体型 (DBTYPE_VARIANT)。 
adVector 与其他类型一起加入逻辑 OR 中,指示数据是 DBVECTOR 结构(由 OLE DB 定义)。该结构含有元素的计数和其他类型 (DBTYPE_VECTOR) 数据的指针。 
adVarWChar 以空结尾的 Unicode 字符串(仅 Parameter 对象)。 
adWChar 以空结尾的 Unicode 字符串 (DBTYPE_WSTR)。 


说明

对 Parameter 对象,Type 属性是读/写。对其他所有对象,Type 属性是只读。
--------------------编程问答-------------------- 将贴子提前
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,