注册 登录
编程论坛 VB6论坛

新手请教程序运行不了(太穷了只有14分,给你10 分)

VBnext 发布于 2013-07-08 15:46, 952 次点击
想把txt文件保存到数据库中
可是程序运行到    rs(7).Value = Trim(fdArray(7))运行不下去提示:
只有本站会员才能查看附件,请 登录

全部程序如下:
Private Sub Command2_Click()
   Dim intFreeNumber As Integer
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim rsArray() As String, fdArray() As String
    Dim i As Long, j As Long
    Dim strTemp As String
    Dim strfile As String
   
    intFreeNumber = FreeFile()
    Open App.Path & "\aa.txt" For Binary As #intFreeNumber
    Do While Not EOF(intFreeNumber)
      strTemp = Input(intFreeNumber, #intFreeNumber)
      strfile = strfile & strTemp
    Loop
    Close #intFreeNumber
    Set conn = New ADODB.Connection
   
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
    conn.Open
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open "select *from [MCOMSITE]", conn, 1, 3


    rsArray = Split(strfile, vbCrLf)
    For i = 1 To UBound(rsArray)
        fdArray = Split(rsArray(i), vbTab)
        For j = 1 To 20
            rs.AddNew
            rs(0).Value = Trim(fdArray(0))
            rs(1).Value = Trim(fdArray(1))
            rs(2).Value = Trim(fdArray(2))
            rs(3).Value = Trim(fdArray(3))
            rs(4).Value = Trim(fdArray(4))
            rs(5).Value = Trim(fdArray(5))
            rs(6).Value = Trim(fdArray(6))
            rs(7).Value = Trim(fdArray(7))
            rs(8).Value = Trim(fdArray(8))
            rs(9).Value = Trim(fdArray(9))
            rs(10).Value = Trim(fdArray(10))
            rs(11).Value = Trim(fdArray(11))
            rs(12).Value = Trim(fdArray(12))
            rs(13).Value = Trim(fdArray(13))
            rs(14).Value = Trim(fdArray(14))
            rs(15).Value = Trim(fdArray(15))
            rs(16).Value = Trim(fdArray(16))
            rs(17).Value = Trim(fdArray(17))
            rs(18).Value = Trim(fdArray(18))
            rs(19).Value = Trim(fdArray(19))
            rs(20).Value = Trim(fdArray(20))
        Next j
    Next i
    rs.UpdateBatch
    Set rs = Nothing
    Set conn = Nothing
End Sub

内容附件:
只有本站会员才能查看附件,请 登录

11 回复
#2
LK8682013-07-08 17:59
数据库字段格式问题 试下这个:rs(7).Value = IIf(IsNull(rs(7).Value), 0, Trim(fdArray(7)))
#3
lowxiong2013-07-08 18:25
字段类型和值类型不匹配。rs(7).name=GROUND_HEIGHT,是数字类型,而你此时的值为"GSM900",是一个字符类型的值。如果这样修改即可:rs(7).Value = right(Trim(fdArray(7)),len(Trim(fdArray(7)))-3).
你后面还会碰到错误。rs(10)为数字类型,但赋值的是个空字符串,改为rs(10).Value = Val(Trim(fdArray(10)))即可,rs(18)为长度10的字符类型,但值为“460-00-21305-33131”,长度超过10,改为rs(18).Value = Left(Trim(fdArray(18)), 10),rs(20)同rs(10)的错误一样,同样修改即可。
#4
VBnext2013-07-08 19:56
回复 3楼 lowxiong
如果rs(7).name=GROUND_HEIGHT,是数字类型,而你此时的值为"GSM900",我就保留GSM900,该怎么办?

rs(10)为数字类型,但赋值的是个空字符串,就是想保留空字符串该怎么办?、

即想让数据库中数据和txt文件用excel打开一致不能该表txt文件中的内容.希望您你呢该点提示?万分感激
#5
LK8682013-07-08 20:30
以下是引用VBnext在2013-7-8 19:56:28的发言:

如果rs(7).name=GROUND_HEIGHT,是数字类型,而你此时的值为"GSM900",我就保留GSM900,该怎么办?

rs(10)为数字类型,但赋值的是个空字符串,就是想保留空字符串该怎么办?、

即想让数据库中数据和txt文件用excel打开一致不能该表txt文件中的内容.希望您你呢该点提示?万分感激
数据表中字段类型为:数字。而你想要保存为“GSM900”值,这是不可能通过的。除非把字段类型修改为:文本

rs(10)为数字类型,但赋值的是个空字符串,就是想保留空字符串该怎么办?   用ISNULL()
#6
VBnext2013-07-08 21:12
回复 5楼 LK868
字段类型和值类型不匹配。rs(7).name=GROUND_HEIGHT,是数字类型,而你此时的值为"GSM900",是一个字符类型的值。

又看看一下rs(7).name=GROUND_HEIGHT是字符型呀:如图
只有本站会员才能查看附件,请 登录
#7
VBnext2013-07-08 21:15
回复 5楼 LK868
rs(7).name=GROUND_HEIGHT
是字符型,如图:
只有本站会员才能查看附件,请 登录
#8
LK8682013-07-08 21:24
以下是引用VBnext在2013-7-8 21:15:59的发言:

rs(7).name=GROUND_HEIGHT
是字符型,如图:
只有本站会员才能查看附件,请 登录
是你的数据库表字段类型定死了“数字”。所以出错
#9
VBnext2013-07-08 22:10
回复 8楼 LK868
请教一下,数据类型怎么看呀?
这个数据库是从别人那拷贝的》
谢谢
#10
LK8682013-07-08 22:16
只有本站会员才能查看附件,请 登录
         ][attach]71879[/attach]

[ 本帖最后由 LK868 于 2013-7-8 22:17 编辑 ]
#11
lowxiong2013-07-08 22:47
呵呵,对数据库字段属性一点概念都没有啊。
字段通用属性有字段名、字段类型、字段长度等,字段类型在type中,rs(7).type=adinteger,是数字的整数型类型。
建议你将MCOMSITE表中的所有字段设置为长度为50的文本类型,然后用下述代码,瞬间解决问题(你的代码有问题,循环20次,写20个同样的记录,这是错误的)
Private Sub Command2_Click()
   Dim intFreeNumber As Integer
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim rsArray() As String, fdArray() As String
    Dim i As Long, j As Long
    Dim strTemp As String
    Dim strfile As String
   
    intFreeNumber = FreeFile()
    Open App.Path & "\aa.txt" For Binary As #intFreeNumber
    Do While Not EOF(intFreeNumber)
      strTemp = Input(intFreeNumber, #intFreeNumber)
      strfile = strfile & strTemp
    Loop
    Close #intFreeNumber
    Set conn = New ADODB.Connection
   
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
    conn.Open
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open "select *from [MCOMSITE]", conn, 1, 3


    rsArray = Split(strfile, vbCrLf)
    For i = 1 To UBound(rsArray)
        fdArray = Split(rsArray(i), vbTab)
        rs.AddNew
        For j = 0 To rs.fileds.count-1
          rs.fileds(j)=fdArray (j)
        next
        rs.update
    Next i
    rs.UpdateBatch
    rs.close
    conn.close
    Set rs = Nothing
    Set conn = Nothing
End Sub
#12
VBnext2013-07-10 17:27
谢谢!刚接触VB一些概念还是不清楚!问题解决了
1