我有个小问题,困扰很久了,你看看,谢谢先!ADO中Recordset给某个纪录的某个字段赋值可以用下面的方法:
rs.Fields("name") = "jokesmith"
或者 rs.Fields(0) = "jokesmith" 等等,我的问题是,rs中有两个field是同名的(如:employee.name和customer.name),我现在要对employee.name赋值怎么做?
这些是不行的:rs.Fileds("employee.name") = "jokesmith"
rs.Fileds(employee!name) = "jokesmith"我只好用一个笨办法:
For Each fld In rs.Fields
If fld.name = "name" And fld.Properties("BASETABLENAME") = "employee" then
fld.value = "jokesmith"
Exit For
End If
Next可是,这样当字段比较多的时候就影响效率了,我想一定有简单的方法,请指教。
rs.Fields("name") = "jokesmith"
或者 rs.Fields(0) = "jokesmith" 等等,我的问题是,rs中有两个field是同名的(如:employee.name和customer.name),我现在要对employee.name赋值怎么做?
这些是不行的:rs.Fileds("employee.name") = "jokesmith"
rs.Fileds(employee!name) = "jokesmith"我只好用一个笨办法:
For Each fld In rs.Fields
If fld.name = "name" And fld.Properties("BASETABLENAME") = "employee" then
fld.value = "jokesmith"
Exit For
End If
Next可是,这样当字段比较多的时候就影响效率了,我想一定有简单的方法,请指教。
你可以使用视图方法,用别名可以实现。
1. 在取的时候就区分字段, 用select employee.name as name1,customer.name as name2
的形式
2.你可以用rs.fields(index)的方式, 因为字段名相同, 但index不同
然后addnew,update
这是在一个中间服务器的代码,用别名能解决这个问题,但会影响其它的地方,比如,不能用别名作order by. 如果没有简单的方法,我宁愿用循环也不用别名。
为什么我行
select employee.name,customer.name from employee join customer on customer.id=employee.id 你就用
rs.Fields(0) =text1.text
rs.fields(1)=text2.text
就样就可以了
用别名作order by 可以呀
-----------------------------------------------
我指SQL Server。试试再说好吗?
你这个办法本来可以,但在我这里不行,因为我做的是中间数据服务器,如果有人用SELECT *我就没法知道"name"的index了(但我知道是那个表的"name")
order by要用数据库实际的字段名啊~~select table1.name as name1, table2.name as name2
order by table1.name就这样就可以啊~~~
的形式
2.你可以用rs.fields(index)的方式, 因为字段名相同, 但index不同