这个问题很奇怪了:
  我有一个excel数据库,我用一下方法来打开然后写入一些数据
cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0 ;Extended Properties=Excel 8.0;Data Source =" + App.Path + "\2003.xls"
rs1.Open "select * from [sheet1$]", cnn1
For i=0 to 9
    rs1.AddNew
    rs1.Fields(0).Value =Cstr(i)
    rs1.Update
Next
rs1.close
cnn1.close
然后在我的数据库(2003.xls)数据库中就有了我所写入的数据了。
但是当我手工打开数据库,然后把数据后面都加了个“0”(哪怕不是加0,只要你对该格数据进行了手工操作),然后用电脑来判断我刚才所写入的数据就没有一点反影了。好象只能识别电脑写入的数据而不能识别我手工操作过的数据
cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0 ;Extended Properties=Excel 8.0;Data Source =" + App.Path + "\2003.xls"
rs1.Open "select * from [sheet1$]", cnn1if rs1.fields(0).value>10 then
    msgbox "that's ok!"
end if
我用以上的方法来判断我刚才对我手工修改的数据进行操作,但是一点反映都没有,这个是怎么会事情啊?
 不知道大家听懂我的意思了没有啊?

解决方案 »

  1.   

    这个问题绝对不是程序的问题,程序我都检测过是没有问题的。问题就出在我动过excel数据库中的几格的数据。难道我手动修改过的数据跟电脑写入的数据类型不一致???想不通
      

  2.   

    帮我调试一下的程序:
    运行环境:在任意一个个文件夹中添加一个2003.xls文件
    然后运行以下程序代码:
     Set cnn1 = New ADODB.Connection
            Set rs1 = New ADODB.Recordset
            cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0 ;Extended Properties=Excel 8.0;Data Source =" + App.Path + "\2003.xls"
                              
            rs1.CursorLocation = adUseClient
            rs1.CursorType = adOpenDynamic
            rs1.LockType = adLockOptimistic
            
            rs1.Open "select * from [sheet1$]", cnn1
            
            Set fs = CreateObject("scripting.filesystemobject")
            fs.CopyFile App.Path + "\2003.xls", App.Path + "\2004.xls"
            
            Set cnn2 = New ADODB.Connection
            Set rs2 = New ADODB.Recordset
            cnn2.Open "Provider=Microsoft.Jet.OLEDB.4.0 ;Extended Properties=Excel 8.0;Data Source =" + App.Path + "\2004.xls"
                              
            rs2.CursorLocation = adUseClient
            rs2.CursorType = adOpenDynamic
            rs2.LockType = adLockOptimistic
            
            rs2.Open "select * from [sheet1$]", cnn2
            
            MsgBox "数据读取没有问题!"
            For i = 0 To rs1.RecordCount - 1
                If rs1.Fields(0).Value > 2 Then
                    rs2.AddNew
                    rs2.Fields(0).Value = rs1.Fields(0).Value
                    rs2.Fields(1).Value = rs1.Fields(1).Value
                    rs2.Fields(2).Value = rs1.Fields(2).Value
                    rs2.Update
                End If
                rs1.MoveNext
            Next
            rs1.Close
            cnn1.Close
            rs2.Close
            cnn2.Close
    结果一
    然后再删除2004.xls文件,然后对2003.xls文件的几个数据进行修改,比如以前是4,你把他删除然后再加入4,就是说把你手动输入的4替换掉原先电脑写的4,然后执行该代码,你会发现结果是不同的。
    发表言论者都有分数。