能否对ADO 结果集中由SQL语句产生的虚拟字段进行赋值
编号:QA004492
建立日期: 2001年12月3日 最后修改日期:2001年12月23日
所属类别:
xu03:
操作系统:WIN
编程工具:VB
问题:能否对ADO 结果集中由SQL语句产生的虚拟字段进行赋值?
哪位朋友能解决,在此表示谢谢!目的:对ADO结果集体的虚拟字段进行赋值。 当我进行如下操作时会出现错误!
DataGridList.Columns("金额") = 0
DataGridList.Columns("名称") = "单排三口西服"
''或则
CommonADO!名称 = "单排三口西服"
CommonADO!金额 = CommonADO!数量 * CommonADO!金额
但却出现“实时错误7010 此列只读”
或则“多步操作产生错误,请检查没一步的状态值”
原程序如下:(以下程序的连接等均通过)
1、在窗体上放置 DATAGRIDLIST
2、
Dim ClassName As String '''大类 类别名称
Dim CommonADO As ADODB.Recordset
''通用的ADORS 可进行读写的ADO 用于录入和查询的
Dim SQLstring As String
strCNN="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa; " & _
" PWD=0203;Initial Catalog=MISBZ;Data Source=TGSMAIN"
Set ServerCNN = New ADODB.Connection
ServerCNN.Open strCNN
Set CommonADO = New ADODB.Recordset
With CommonADO
.ActiveConnection = ServerCNN
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockBatchOptimistic
End With
SQLstring = "select 编号,产品编号,名称='', 数量,单价,金额=0 " & _
"from db where 0=1 "
With CommonADO
If .State = adStateOpen Then ''判断是否为打开状态
.Close
End If
.Source = SQLstr
.Open
End With
CommonADO.AddNew
Set DataGridList.DataSource = CommonADO
回答:
建议修改表结构,增加一列计算金额的列:
例如:create table (
编号 int,产品编号 int,名称 varchar(20), 数量 int ,单价 money,金额 as 数量 *单价
).
Alvan Lo的意见:
Create Temporary Table:
1.ServerCNN.Execute
"select 编号,产品编号,名称='', 数量,单价,金额=0 into #Temp from db where 0=1"
2.SQLstring="Select * From #Temp"
此问题由catzhou回答。
| |
|
|
| |
|
|