我已经打开了表,并且可以增加一个已知字段名的字段。语法:recordset.fields("字段名")=值,用一个循环判断是否到了文件尾即可全部赋值。但是,因为我的字段名是一个字符型,会不断变化。我如果用K="字段名",再使用 recordset.fields K=值,就无法做赋值,请教高手该如何处理?

解决方案 »

  1.   

    recordset.fields(0)recordset.fields(1)
    …………依此类推就可以了
      

  2.   

    recordset.fields(0)recordset.fields(1)recordset.fields(0)是表示表的第一个字段吗?
    recordset.fields(N)是表示表的第N个字段吗?
      

  3.   

    字符型也无所谓啊,直接用进去就是了,一个简单的例子:
    Dim cnn As New ADODB.Connection
    Dim rs As New ADODB.RecordsetPrivate Sub Command1_Click()
    dim k as string
    din j as string
    k = "id"
    j = "name"
    rs.AddNew
    rs(k) = "值1"
    rs(j) = "plo"
    rs.Update
    DataGrid1.Refresh
    End SubPrivate Sub Form_Click()
    cnnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test1.mdb;Persist Security Info=False"
    cnn.Open cnnstr
    rs.CursorLocation = adUseClient
    rs.Open "select * from ta1", cnn, adOpenStatic, adLockOptimistic
    Set DataGrid1.DataSource = rs
    End Sub另外,你发的帖子好像有点文不对题.....
      

  4.   

    Private Sub Form_Load()
    Dim i%, j%, k$, m$
    Dim acn As New ADODB.Connection
    acn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\xx1\tk.mdb;Persist Security Info=False;Jet OLEDB:Database Password='admin'"
    acn.Open
    acn.Execute ("drop table ls")
    acn.Execute "(select * into ls from tx)"
    acn.Execute "alter table ls drop txdm "
    Adodc1.RecordSource = "ls" '在LS表中新建一个字段
    Adodc1.Refresh
    k = "alter table ls add 测试题量 integer"
    acn.Execute k
    i = 1
    Adodc1.Recordset.MoveFirst
    Adodc1.Refresh
    Do While Not Adodc1.Recordset.EOF
    Adodc1.Recordset.Fields("测试题量") = stx(i)
    Adodc1.Recordset.Update
    i = i + 1
    Adodc1.Recordset.MoveNext
    Loop
    Adodc1.RefreshAdodc1.CommandType = 2
    Adodc1.RecordSource = "tl"
    Adodc1.Refresh
    tjtl = Adodc1.Recordset.RecordCount
    ReDim st(tjtl, 2)
    i = 1
    Do While Not Adodc1.Recordset.EOF
     st(i, 1) = Adodc1.Recordset.Fields("tl")
     st(i, 2) = Adodc1.Recordset.Fields("tlwb")
     Adodc1.Recordset.MoveNext
     i = i + 1
    Loop
    Adodc1.Recordset.MoveFirst
    For i = 1 To tjtl
     k = "alter table ls add " + st(i, 2) + "总题量 smallint"
     acn.Execute k
     m = "alter table ls add " + st(i, 2) + "测试题量 smallint"
     acn.Execute m
    k = st(i, 2) + "总题量"
    adodc1.recordset.Fields(k) = stx(i)'<<----就是这句了,如果K值改成"ss"(表中的ss字段)就可以通过,为什么会这样???出错:“实时错误3265,项目在所需的名称或序数中未被发现”
    Adodc1.Recordset.Update
    i = i + 1
    Adodc1.Recordset.MoveNextNextAdodc1.RecordSource = "ls"
    Adodc1.Refresh
    k = "SELECT *,tx as " & "题型" & " from ls"
    Adodc1.CommandType = adCmdText
    Adodc1.RecordSource = k
    acn.Execute k
    Adodc1.RefreshEnd Sub麻烦大侠们多多指教啊!!!!!!!
      我是初学者,学得不是很好,在做一个考试程序!多谢lsftest()、aohan(景升)
      

  5.   

    k = st(i, 2) + "总题量"
    msgbox k,len(k)
    adodc1.recordset.Fields(k) = stx(i)看看你的数据库中是否有名为k的表
      

  6.   

    哦,错了,是:看看你的数据库中是否有名为k的字段.
    注意看显示出来的k的内容跟len(k)是否相符.
      

  7.   

    大哥,K的这个字段我才加上的啊,就在
    Adodc1.Recordset.MoveFirst
    For i = 1 To tjtl
     k = "alter table ls add " + st(i, 2) + "总题量 smallint"<<----这就是K,应该和下面的K值相等的啊,让我看看!!
     acn.Execute k
     m = "alter table ls add " + st(i, 2) + "测试题量 smallint"
     acn.Execute m
    k = st(i, 2) + "总题量"
    adodc1.recordset.Fields(k) = stx(i)'<<----就是这句了,如果K值改成"ss"(表中的ss字段)就可以通过,为什么会这样???出错:“实时错误3265,项目在所需的名称或序数中未被发现”
    Adodc1.Recordset.Update
    i = i + 1
    Adodc1.Recordset.MoveNext
      

  8.   

    不行啊!!我试了,字段和变量是一样的啊??MY GOD!
      

  9.   

    不行啊!!我试了,字段和变量是一样的啊??MY GOD!
    =========================================================
    看见的并不一定就是真实的,如果你用的是access,你可以把程序及示例数据库寄到我的邮箱,我帮你调试.........
    但如果是sql server......吾................你可以把源程序和建表的sql语句,添加数据的sql语句一起寄过来,我帮你调试....................
      

  10.   

    我自己来结帖吧!!在这一段前加:
    Adodc1.RecordSource = "ls"
    Adodc1.Refresh
    就可以了,我自己琢磨出来的,谢谢各位朋友的关心!!