从表中选择几列数据,并对其中几列进行修改运行时PutCollect出错,PutCollect该如何使用?

yljleslie 2006-08-24 11:12:11

我的问题是这样的,我的表中有UK1,UK2,UK3,IK1,IK2,IK3,PK,UK,IK,LOGUK,LOGIK,PKS,PKCU1,PKPKS,TK这样几列UK,IK,LOGUK,LOGIK,PKS,PKCU1,PKPKS,TK要根据前面的几列产生,比如:UK=(UK1+UK2+UK3)/3;LOGUK=LOG(UK);PKS=PK*R;

我现在是这样做的,可是运行的时候m_pRecod->PutCollect(_variant_t(long(i+7)),_variant_t(LPCTST(str)));这句话有错,不知道该怎么改.

我搜索了一下,有的说是EXCUTE打开的记录集是只渎的,不能进行修改,要用OPEN语句打开,所以我试着换成
m_pRecordset->Open((_bstr_t)str,_variant_t((IDispatch*)(theApp.m_pConnection),true),adOpenStatic,adLockOptimistic,adCmdText);
但是这个OPEN语句又执行不了了
各位大虾帮我看看,我初接触数据库,SQL,实在是不知道哪里错了 ,该怎么改,谢谢各位拉!!!

程序如下:
try
{
str.Format("SELECT UK1,UK2,UK3,IK1,IK2,IK3,PK,UK,IK,LOGUK,LOGIK,PKS,PKCU1,PKPKS,TK FROM 堵转特性 WHERE 电机编号=%d",1);
m_pRecod = theApp.m_pConnection->Execute((_bstr_t)str,NULL,adCmdText);
while (!m_pRecod->ADOEOF)
{
for (i=0;i<7;i++)
{
valueall = m_pRecod->GetCollect(_variant_t((long)i));
strk[i] = (TCHAR*)(_bstr_t)valueall;
valk[i] = atof(strk[i]);
}
valcal[0] = (valk[0]+valk[1]+valk[2])/3;//u0
valcal[1] = (valk[3]+valk[4]+valk[5])/3;//i0
valcal[2]= log(valcal[0]);//logu0
valcal[3] = log(valcal[1]);//logio
valcal[4] = valp0*valk[7];//Pks
valcal[5] = 1.5*valcal[1]*valcal[1]*valRk1;//Pkcu1
valcal[6] = valk[7]-valcal[5]-valcal[4];//Pk-Pkcu1-Pks
valcal[7] = 9.55*valcal[6]*1000*valmotorp/3000;//Tk
for (i=0;i<8;i++)
{
str.Format("%.4f",valcal[i]);
m_pRecod->PutCollect(_variant_t(long(i+7)),_variant_t(LPCTST(str)));
}
m_pRecod->MoveNext();
}
m_pRecod->Update();
}
catch (CException* e)
{
MessageBox("程序执行出错","错误",MB_OK);
}
...全文
175 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
OracleRoob 2006-08-24
  • 打赏
  • 举报
回复
中断一下,把SQL语句串,在Access中执行,看看什么错误。
wwwwb 2006-08-24
  • 打赏
  • 举报
回复
到编程语言版块去问吧
yljleslie 2006-08-24
  • 打赏
  • 举报
回复
SQL语句没有错啊,我用EXECUTE的时候都可以执行的

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧