我已经打开了表,并且可以增加一个已知字段名的字段。语法:recordset.fields("字段名")=值,用一个循环判断是否到了文件尾即可全部赋值。但是,因为我的字段名是一个字符型,会不断变化。我如果用K="字段名",再使用 recordset.fields K=值,就无法做赋值,请教高手该如何处理?
解决方案 »
- 请问,如何在内存中运行一个文件?
- ====怪事了,这个函数居然突然不行了====
- 打算用VB写个Web页面分析的软件,高分求助!(不够再加)
- 关于PrintForm的问题
- Tdbgrid如何依据第1,2列值使第3列显示不同的文字,并且网格可以自动新增(.allownew=true).
- 关于文件传送的问题?
- 想考研,求一个象CSDN一样的考验论坛,特别是数学
- 紧急问题:请问各位大虾:窗口最小化的事件是什么?
- 高分请教各位高手:怎样让ADO控件可以取消UPDATE
- 使用VB数据环境登录SQL,错误捕捉的急!难!问题,高手请看!!
- 奇怪呀;用datagrid更新数据库,如果只有一列修改不出错,2列以上就出错!高手请进
- 100分~急问!如何编写托盘程序~
…………依此类推就可以了
recordset.fields(N)是表示表的第N个字段吗?
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另外,你发的帖子好像有点文不对题.....
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(景升)
msgbox k,len(k)
adodc1.recordset.Fields(k) = stx(i)看看你的数据库中是否有名为k的表
注意看显示出来的k的内容跟len(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
=========================================================
看见的并不一定就是真实的,如果你用的是access,你可以把程序及示例数据库寄到我的邮箱,我帮你调试.........
但如果是sql server......吾................你可以把源程序和建表的sql语句,添加数据的sql语句一起寄过来,我帮你调试....................
Adodc1.RecordSource = "ls"
Adodc1.Refresh
就可以了,我自己琢磨出来的,谢谢各位朋友的关心!!