Option Explicit
Dim Cat As New ADOX.Catalog
Dim Col As Column
Dim Tbl As Table
Dim lFieldLength() As Long
Dim strFieldName() As String
Dim strFieldValue() As String
Dim FieldCount As LongPublic Function CreateDatabase()On Error GoTo PROC_ERR Cat.Create "Microsoft.Jet.OLEDB.4.0;Data Source=" & TxtDes.Text CreateDatabase = True Exit FunctionPROC_ERR: CreateDatabase = False
If Err.Number = -2147217897 Then
MsgBox "数据库已经存在"
Exit Function
Else
MsgBox Err.Number & vbNewLine & Err.Description
End IfEnd FunctionPrivate Function CreateTables() Dim i As Long
Set Tbl = New ADOX.Table
With Tbl
.Name = txtTabel.Text
Set .ParentCatalog = Cat
With .Columns
For i = 0 To FieldCount - 1
.Append strFieldName(i), adVarChar, lFieldLength(i)
.Item(strFieldName(i)).Properties("Description").Value = strFieldName(i)
Next i
End With
End With
Cat.Tables.Append Tbl
Set Tbl = NothingEnd FunctionPrivate Sub GetFieldinfo() Dim Readline As String Dim lSeek As Long Open TxtSource.Text For Input As #1 If EOF(1) Then Exit Sub Line Input #1, Readline Do While lSeek > 0 FieldCount = FieldCount + 1
lSeek = InStr(lSeek + 1, Readline, TxtChar.Text, vbTextCompare) Loop
FieldCount = FieldCount + 1
ReDim strFieldName(FieldCount)
ReDim lFieldLength(FieldCount)
ReDim strFieldValue(FieldCount)
strFieldName() = Split(Readline, TxtChar.Text)
Close #1
Call GetFieldLength
End SubPrivate Sub GetFieldLength() Dim Readline As String
Dim i As Long
Open TxtSource.Text For Input As #1
Line Input #1, Readline
Do Until EOF(1)
Line Input #1, Readline
strFieldValue() = Split(Readline, TxtChar.Text)
For i = 0 To FieldCount - 1
If lFieldLength(i) < Len(strFieldValue) Then
lFieldLength(i) = Len(strFieldValue)
End If
Next i
Loop
Close #1End Sub
Private Sub Export2Database() Dim DataConn As New ADODB.Connection
Dim DataRec As New ADODB.Recordset
Dim Readline As String
Dim i As Long
Dim strSQL As String
Set Cat = Nothing
On Error GoTo ConnectionERR
DataConn.ConnectionString = "Microsoft.Jet.OLEDB.4.0;Data Source=" & TxtDes.Text
DataConn.Open
On Error GoTo RecordSetERR
strSQL = "select * from " & TxtTable.Text
On Error GoTo ExportERR
Open TxtSource.txt For Input As #1
If EOF(1) Then Exit Sub
Line Input #1, Readline
Do Until EOF(1)
Line Input #1, Readline
strFieldValue() = Split(Readline, TxtChar.Text)
DataRec.AddNew
For i = 0 To FieldCount - 1
DataRec.Fields(i).Value = strFieldValue
Next i
DataRec.Update
Loop
DataRec.UpdateBatch
Close #1
DataRec.Close
Set DataRec = Nothing
Exit Sub
ConnectionERR: MsgBox "数据库连接错误," & Err.Description, vbCritical, "出错"
Exit Sub
RecordSetERR:
MsgBox "RecordSet生成错误," & Err.Description, vbCritical, "出错"
DataConn.Close
Exit Sub
DocERR:
MsgBox "导入Access数据库错误," & Err.Description, vbCritical, "出错"
DataRec.Close
DataConn.Close
End Sub
Private Sub cmdOK_Click() Call GetFieldinfo
If CreateDatabase Then
Call CreateTables
Call Export2Database
End If
MsgBox "导出成功。", vbInformation, "出错"
End Sub
Dim Cat As New ADOX.Catalog
Dim Col As Column
Dim Tbl As Table
Dim lFieldLength() As Long
Dim strFieldName() As String
Dim strFieldValue() As String
Dim FieldCount As LongPublic Function CreateDatabase()On Error GoTo PROC_ERR Cat.Create "Microsoft.Jet.OLEDB.4.0;Data Source=" & TxtDes.Text CreateDatabase = True Exit FunctionPROC_ERR: CreateDatabase = False
If Err.Number = -2147217897 Then
MsgBox "数据库已经存在"
Exit Function
Else
MsgBox Err.Number & vbNewLine & Err.Description
End IfEnd FunctionPrivate Function CreateTables() Dim i As Long
Set Tbl = New ADOX.Table
With Tbl
.Name = txtTabel.Text
Set .ParentCatalog = Cat
With .Columns
For i = 0 To FieldCount - 1
.Append strFieldName(i), adVarChar, lFieldLength(i)
.Item(strFieldName(i)).Properties("Description").Value = strFieldName(i)
Next i
End With
End With
Cat.Tables.Append Tbl
Set Tbl = NothingEnd FunctionPrivate Sub GetFieldinfo() Dim Readline As String Dim lSeek As Long Open TxtSource.Text For Input As #1 If EOF(1) Then Exit Sub Line Input #1, Readline Do While lSeek > 0 FieldCount = FieldCount + 1
lSeek = InStr(lSeek + 1, Readline, TxtChar.Text, vbTextCompare) Loop
FieldCount = FieldCount + 1
ReDim strFieldName(FieldCount)
ReDim lFieldLength(FieldCount)
ReDim strFieldValue(FieldCount)
strFieldName() = Split(Readline, TxtChar.Text)
Close #1
Call GetFieldLength
End SubPrivate Sub GetFieldLength() Dim Readline As String
Dim i As Long
Open TxtSource.Text For Input As #1
Line Input #1, Readline
Do Until EOF(1)
Line Input #1, Readline
strFieldValue() = Split(Readline, TxtChar.Text)
For i = 0 To FieldCount - 1
If lFieldLength(i) < Len(strFieldValue) Then
lFieldLength(i) = Len(strFieldValue)
End If
Next i
Loop
Close #1End Sub
Private Sub Export2Database() Dim DataConn As New ADODB.Connection
Dim DataRec As New ADODB.Recordset
Dim Readline As String
Dim i As Long
Dim strSQL As String
Set Cat = Nothing
On Error GoTo ConnectionERR
DataConn.ConnectionString = "Microsoft.Jet.OLEDB.4.0;Data Source=" & TxtDes.Text
DataConn.Open
On Error GoTo RecordSetERR
strSQL = "select * from " & TxtTable.Text
On Error GoTo ExportERR
Open TxtSource.txt For Input As #1
If EOF(1) Then Exit Sub
Line Input #1, Readline
Do Until EOF(1)
Line Input #1, Readline
strFieldValue() = Split(Readline, TxtChar.Text)
DataRec.AddNew
For i = 0 To FieldCount - 1
DataRec.Fields(i).Value = strFieldValue
Next i
DataRec.Update
Loop
DataRec.UpdateBatch
Close #1
DataRec.Close
Set DataRec = Nothing
Exit Sub
ConnectionERR: MsgBox "数据库连接错误," & Err.Description, vbCritical, "出错"
Exit Sub
RecordSetERR:
MsgBox "RecordSet生成错误," & Err.Description, vbCritical, "出错"
DataConn.Close
Exit Sub
DocERR:
MsgBox "导入Access数据库错误," & Err.Description, vbCritical, "出错"
DataRec.Close
DataConn.Close
End Sub
Private Sub cmdOK_Click() Call GetFieldinfo
If CreateDatabase Then
Call CreateTables
Call Export2Database
End If
MsgBox "导出成功。", vbInformation, "出错"
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货