首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

问一个在vb6+access2000中批量录入文本数据的有关问题

2012-01-11 
问一个在vb6+access2000中批量录入文本数据的问题这个文本是这样的:DECS2000DailyReport:Generated01/02/0

问一个在vb6+access2000中批量录入文本数据的问题
这个文本是这样的:

                DECS2000   Daily   Report:     Generated     01/02/05   11:22:15
                For   the   period   01/01/05   12:00:00     -   01/02/05   12:00:00
                                          Station   1   /   中心子站
                      PM-10               NO             NOX             SO2               CO               O3    
01/01/05
1200             0.137               18               46               66             1.4               17  
1300             0.107               12               40               59             1.8               22  
1400             0.122                 8               32               47             1.4               28  
1500             0.108                 5               22               24             1.1               30  
1600             0.076                 4               25               20             1.3               24  
1700             0.056                 6               41               41             2.2               13  
1800             0.104                 5               40               45             2.3               12  
1900             0.110                 8               49               58             2.4                 7  
2000             0.126               15               57               63             2.6                 4  


2100             0.149               18               59               71             2.9                 3  
2200             0.157                 8               46               66             3.2                 5  
2300             0.167               -1               -1               -1               -1               -1
2400             0.169               -1               -1               -1               -1               -1
01/02/05
0100             0.156               -1               -1               62               -1               -1            
0200             0.154                 8               38               56             2.5               -1
0300             0.145               14               42               62             2.4                 3  
0400             0.141               13               40               49             2.3                 2  
0500             0.150               13               39               45             2.3                 2  
0600             0.126               18               43               42             2.2                 2  
0700             0.142               18               42               44             2.1                 2  
0800             0.126               23               45               55             2.2                 4  


0900             0.139               29               50               97             2.2                 5  
1000             0.154               23               44               84             2.1                 7  
1100             0.145               22               44             111             2.1                 8  

制表:                               复核:                           审核:


我的这个form是这样的,一个commondialog6.0的打开文件控件
一个按钮,这个按钮可以将文本的数据用ADODB2.9   library(我用的是创天版vb6加上了那个dll文件)导入建立好的access2000数据库中,
这个数据库路径为D:\cmaq.mdb
读文本我用的是一行一行读的方法,然后合并中间的空格(因为不同源文件每个数值之间的空格并不一样多,所以只能用合并空格),然后用split函数根据空格把这行里的数据分配到每个变量里,最后利用recordset   导入到数据库中。导入到这行:2400             0.169               -1               -1               -1               -1               -1
的时候告诉我错误 "类型不匹配 "并且这行没有导入,我以前用adodc控件作的时候绑定了文本框,没有导入数据只显示在文本框里的时候一切正常,可是一录入也是这个地方卡住了,这里面第一列是时间,其他都在access2000中设为单精度型
我怎么办呢?请各位给个答案,小弟这只菜鸟已经研究了好多天,可是没有结果,谢谢啦!!

下面是我的这个按钮的代码:

Private   Sub   recorddata_Click()
CommonDialogOpen.Filter   =   "文本文件(*.TXT)|*.TXT|Prn文件|*.prn "
CommonDialogOpen.ShowOpen
If   CommonDialogOpen.FileName   <>   " "   Then


   
   
   
    Open   CommonDialogOpen.FileName   For   Input   As   1   '打开文件
    On   Error   GoTo   PROBLEM:
    ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
    MsgBox   (CommonDialogOpen.FileName)   '打开了文件成功,显示文件名。
    Dim   mycnn   As   ADODB.Connection
    Dim   myrs   As   ADODB.Recordset
    Dim   mystr   As   String
    Set   mycnn   =   New   ADODB.Connection
    mystr   =   "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=D:\cmaq.mdb;Persist   Security   Info=False "
    Set   mycnn   =   New   ADODB.Connection
    mycnn.Open   mystr
    Set   myrs   =   New   ADODB.Recordset
    myrs.CursorType   =   adOpenKeyset


    myrs.LockType   =   adLockOptimistic
    myrs.Open   "cmaq ",   mycnn,   ,   ,   adCmdTable
   
   
   
   
   
    ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
    Dim   str1           As   String
    Dim   astr1()           As   String,   astr2()         As   String
    Dim   i           As   Long

    str1   =   StrConv(InputB$(LOF(1),   1),   vbUnicode)
    astr1   =   Split(str1,   vbCrLf)
   
   
        For   i   =   0   To   UBound(astr1)
                strline   =   astr1(i)
               
                                                                            'strLine为一行的字符串
                                                                            '多个空格替换为一个
                While   Not   InStr(strline,   "     ")   =   0
                            strline   =   Replace(strline,   "     ",   "   ")
                                        '显示行字符串成功,合并多空格为一个空格成功。
                                                                            '遍历astr2得到
                Wend
               
                    MsgBox   strline                                                                 '对行字符串进行操作
  ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '


                Select   Case   i
                Case   4                                           '第四行和第十八行
                constDateStr1   =   Trim(strline)
                Dastr   =   Right(constDateStr1,   2)   +   "/ "
                constDateStr1   =   Dastr   +   Left(constDateStr1,   5)
                MsgBox   constDateStr1


                Case   18

                constDateStr2   =   Trim(strline)
                MsgBox   constDateStr2
                Dastr   =   Right(constDateStr2,   2)   +   "/ "
                constDateStr2   =   Dastr   +   Left(constDateStr2,   5)
               
                ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
                Case   5   To   17,   19   To   28                   '剩下的行
                        astr2   =   Split(strline,   "   ")
                        temp   =   Left(astr2(0),   2)   +   ": "   +   Right(astr2(0),   2)
                        MsgBox   temp
                       
                        myrs.AddNew
                        myrs!D_t_time   =   temp
                        If   i   <   17   Then
                        myrs!D_d_date   =   constDateStr1
                        Else
                        myrs!D_d_date   =   constDateStr2
                        End   If
                        tempPM10   =   CSng(astr2(1))


                        tempNO   =   CSng(astr2(2))
                        tempNOX   =   CSng(astr2(3))
                        tempSO2   =   CSng(astr2(4))
                        tempCO   =   CSng(astr2(5))
                        tempO3   =   CSng(astr2(6))
                       
                       
                        myrs!D_f_PM10   =   tempPM10
                        myrs!D_f_NO   =   tempNO
                        myrs!D_f_NOX   =   tempNOX
                        myrs!D_f_SO2   =   tempSO2
                        myrs!D_f_CO   =   tempCO
                        myrs!D_f_O3   =   tempO3
                        myrs.Update
                       
                        End   Select

    Next
   

   
   
   
   
    ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
   
   
   
    myrs.Close
    mycnn.Close
   
   
   
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Close   #1

End   If
        Exit   Sub
PROBLEM:
        MsgBox   "Error   Opening   File ",   ,   Err.Description
       
End   Sub


[解决办法]
把数据库第一列改为字符型。或者,把你的数据改成 "24:00 "。
------解决方案--------------------


同意楼上,
可能是你数据库中第一列时间字段类型与录入的类型不匹配造成的,将数据库中时间字段改为字符型即可

热点排行