本帖最后由 作者 于 2008-5-16 6:50:48 编辑
我是个新手,以前没有学过AutoCAD和ObjectARX,也没有学过Access,希望大家帮帮忙! 我装了AutoCAD2002和ObjectARX2002,建的工程是ObjectARX2000/2000i/2002AppWizard,环境为VC++6.0, 希望通过程序打开已建好的Access数据库,并用里面的数据来建模。可是在程序的打开数据库这部分就有问题。总出现个窗口: 显示:未处理的异常 E06D7363(e06d7363),地址:7C812A7Bh 我的程序如下,还有我自己做的注释 void DrawFunction()//这个函数为命令调用的函数 { struct resbuf *result; int rc,flags; result =ads_newrb(RTSTR); result->resval.rstring=NULL; flags=2;//显示“Type it”按钮 rc=acedGetFileD("打开数据文件",//标题 "e:/project/database",//NULL,//默认路径 "mdb;*",//默认扩展名:NULL代表“* flags, //控件标志 result); //用户选择的路径 //如果acedgetFileD()调用成功,就返回RTNORM,否则返回RTERROR if(rc==RTNORM) //ads_getFileD()调用成功 rc=acedArxLoad(result->resval.rstring); CDaoDatabase db; CString path=result->resval.rstring; //将路径保存在字符串path中 //db.Open(path,false,false,_T("")); //打开数据库 db.Open(path,false,false,_T("")); CDaoRecordset att_rs(&db); att_rs.Open(dbOpenDynaset,_T("select * from dian"),0); //打开数据集,dian为我建的数据库里面的一个表 int iRecords=att_rs.GetRecordCount();//统计记录个数 if(!att_rs.IsBOF()) att_rs.MoveFirst();//把指针移到开始处 while(!att_rs.IsEOF()) { createNewLayer();//调用建立新图层函数 COleVariant vid=att_rs.GetFieldValue("id");// 程序结构变量提取坐标数据库字段值 COleVariant vx=att_rs.GetFieldValue("X"); COleVariant vy=att_rs.GetFieldValue("Y"); COleVariant vz=att_rs.GetFieldValue("Z"); //Temtag.endist=vEndDist.fltVal; //Sprintf(Temtag.name,"%s",vName.bstrVal); //buffer.onlyid=vid.bstrVal; //buffer.x=vx.fltVal; //buffer.y=vy.fltVal; //buffer.z=vz.fltVal; //i++; att_rs.MoveNext(); } } 谢谢了!非常感谢大家了! |