说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Access的OLE字段问题,十分头痛,高手指点。代码附后

编辑:说三道四文库 发布时间:2017-11-24 07:59
HTML文档下载 WORD文档下载 PDF文档下载
Access的OLE字段在用VC操作的时候出现奇怪现象,就是某个记录的OLE字段赋值以后,本人给该字段赋给纯文本
CMyApp* pApp = (CMyApp*)AfxGetApp();
pApp->m_pDatabase->BeginTrans();
if(FALSE == DeleteCurrRec())
{
//本人利用先删除后新增的方式来实现OLE字段更新
AfxMessageBox("当前记录无法删除,这将导致更新失败!");
return;
}
m_pContentRecordset->AddNew();
m_pContentRecordset->m_szContent = m_content;
m_pContentRecordset->m_wCode = atol(m_Code.GetBuffer(m_Code.GetLength()));
m_pContentRecordset->m_Resolution.m_dwDataLength = m_strResolution.GetLength();  //OLE字段长度限制
HGLOBAL hGlobal = GlobalAlloc(GPTR,m_strResolution.GetLength());
m_pContentRecordset->m_Resolution.m_hData = GlobalLock(hGlobal);
//下面将纯文本赋给OLE字段
memcpy(m_pContentRecordset->m_Resolution.m_hData,
m_strResolution.GetBuffer(m_strResolution.GetLength()),
m_strResolution.GetLength());
//设置脏标志,便于提交数据
m_pContentRecordset->SetFieldDirty(&m_pContentRecordset->m_Resolution);
m_pContentRecordset->SetFieldNull(&m_pContentRecordset->m_Resolution,FALSE);
m_pContentRecordset->Update();  //更新数据集
pApp->m_pDatabase->CommitTrans();
if(0 == GlobalUnlock(hGlobal))
GlobalFree(hGlobal);
................
问题一:奇怪的问题,赋值没有出现任何问题,按理说严格地执行赋值操作,因为OLE字段赋值时有长度限制,不应该有乱码,而实际取出的值

总是有空字符或乱码,并且TrimRight()都无法去掉,很怪!
问题二:某个记录的OLE字段一旦清空,并提交成功后,第二次便无法打开数据表,总是提示“内存不够”,其实内存很大,本人是用过滤的方

法打开的,代码如下:
CMyApp *pApp = (CMyApp*)AfxGetApp();

m_ContentRecordset = new CContentRecordset(pApp->m_pDatabase);
//设置过滤条件,Code为Content表主键,即是每次只有一条记录被查出来
m_ContentRecordset->m_strFilter.Format("Code=%s",m_Code); 

if(!m_pContentRecordset->Open(CRecordset::dynaset))
{
AfxMessageBox("告内容表打开失败!");
delete m_pContentRecordset;
m_pContentRecordset = NULL;
return FALSE;
}
return TRUE;

高手指教!万分感谢!
m_pContentRecordset->m_Resolution.m_hData = GlobalLock(hGlobal);

GlobalFree(m_pContentRecordset->m_Resolution.m_hData);
m_pContentRecordset->m_Resolution.m_hData=GlobalAlloc(GHND,m_strResolution.GetLength());
LPVOID lpvMem=NULL;
lpvMem= GlobalLock( m_pContentRecordset->m_Resolution.m_hData);

memcpy(lpvMem,
m_strResolution.GetBuffer(m_strResolution.GetLength()),
m_strResolution.GetLength());

...

GlobalUnlock(m_pContentRecordset->m_Resolution.m_hData);
http://www.codeguru.com/mfc_database/MSAccessOLEField.shtml
mark
up
使用ado比较好实现阿,你怎么还用odbc,尤其是存在ole字段时,更应该使用ado阿
问题一:奇怪的问题,赋值没有出现任何问题,按理说严格地执行赋值操作,因为OLE字段赋值时有长度限制,不应该有乱码,而实际取出的值总是有空字符或乱码,并且TrimRight()都无法去掉,很怪!
注意:可能你输入的纯文本超长了,而且你的纯文本是中文字符的,可能系统在截断文本的时候,出现了半个中文的现象,而且那半个中文,正好是不能显示的控制符,当然就成了不能删除的空格了。
总是有空字符或乱码,并且TrimRight()都无法去掉,很怪!
问题二:某个记录的OLE字段一旦清空,并提交成功后,第二次便无法打开数据表,总是提示“内存不够”,其实内存很大,本人是用过滤的方法打开的,
注意:既然你输入的是纯文本,系统在阶段截断文本的时候,是拦腰截断的,并没有在截断的文本尾部添加上\x0的字符串结束符,那么Access在读取mdb文件的时候,不能正确的读取纯文本,当然要出错了。
Intel发布Hadoop免费版 全力拓展生态圈 突出图片搜索:微软向测试人员开放Socl社交搜索 豌豆荚创始人:和巨头竞争,我们拼产品和技术 “互联网女皇”报告解读:智能电视大趋势 苹果扩大其北卡罗莱纳州燃料电池发电场规模 Oracle回收站使用全攻略 微软这次很诚实:IE真的糟透了 Facebook进军短信业务,挑战微信鼻祖WhatsApp 从菜鸟到专家的五步编程语言学习法 亚马逊企业文化:从书贩到云服务巨头的催化剂 明年Google I/O大会日程敲定 或发Android“酸橙派”? 绝境求生,WebOS寄望Android Facebook在移动路上走过的那些弯路 曙光聂华:推动数据融合 CloudStack Committer李学辉:2013年社区将爆发 继续霸权:美众院否决联合国掌控互联网 墨迹天气创始人金犁:巧用细分市场的力量 Windows 8的IE10在浏览器安全测试中独占鳌头 程序员如何做出“不难看”的设计 JDK6明年2月停止更新,甲骨文呼吁尽快升级至7 《时代》评选年度十大视频游戏,激战2居首 《时代》评选年度十大科技产品,iPhone 5居首 Loopjoy:让开发者在移动游戏里贩售真货 iPhone 5S真机照片泄露 明年初上市 Beeline:从“蓝精灵村庄”到“捉鬼敢死队” Windows Server 2012域服务的六大改进 如何编写出优美的JavaScript代码? Unity CEO:不会因赌博游戏谋取金钱利益 云领域:且看亚马逊、Rackspace、微软及谷歌四国争霸 十一位EMC高管读2013技术趋势 你准备好了吗? Yahoo:拥抱Hadoop和HTML5 高分引起你的注意。 为什么函数参数值莫名其妙改变了??? 如何查KeyPress中的Key的所有值啊?在BCB5中选中Key按F1就出来了,在BCB6。。。。。 vfp中如何将汉字转为拼音 下面的VB代码如何改成BCB代码?100分!!! 多维数据集? ComboBox.Item选中用什么方法? 大家帮帮忙,又是代码的问题(lotusscript)--应该比较简单 SQL SERVER 7.0 Desktop版支持sp_makewebtask吗? 如何维护一套系统 请帮忙!用cb怎么样控制excle复制一个Sheet到新建的sheet? 关于用户注册信息无法插入access数据库的奇怪问题 热烈欢迎我mm加入csdn灌水乐园!(顶者有分) Jbuilder中可以运行,但在UltraEdit中不行 下面的VB代码如何改成BCB代码?100分!!! 使用LoadRunner进行性能测试的简单步骤 如何在两个数据库之间复制表? 2002 高程的题再讨论 关于网络流量.(高分相谢) php中sql请教 迷失在struts流程中的人,有人能带我出去吗? 一堆简单问题 怎样用ASP判断复选框(checkbox )被选中呢??急~~~~~~~ 我想使得对话框显示在主程序的中央怎样实现?取空格函数是什么? 服务器一重启IIS就不能工作,需要删掉IIS,再重装才行,还原备份都没用,怎么办?(高分求解) PART1:WORD文挡处理问题 对象无效是怎么回事?急,谢谢,马上结贴 有关SQL数据库远程传输及服务器配置及设置影响的问题,敬请高手积极指教!!有请大力!!! 怎样通过DBNavigator实现对DBGrid 中的记录末添加记录? 啊,注册tucows,downloads.com都要收费的?是吗 怎样把任意一个文件读到oracle的blob里,急啊!! 公务贴(八月七日) 野种子 这样可以吗?请高手帮忙。 我要做一个软件,这个软件可以进行光盘(VCD,DVD)的刻录,请问哪里有源代码下载? MSMQ服务器如何安装??? 高分提问,请高手相助! 概念问题:Lun,scsi bus number,host adapter number,scsi id 这些含义如何 如何Copy有损毁的VCD(唐伯虎点秋香)? WebLogic7 的乱码问题??? 与的问题 有人给你送礼希望你能....你会如何? 我该选哪一个?(在线等) 请问如何在word里嵌入一个工具条 我的一台服务器安装的是Win2000 Server版,而客户端安装的是Win98,当通过客户端的Win98系统去访问服务器时,就会弹出一个要求输入网络密 两个问题请教,做过大项目的请来帮忙 傻问题大家帮帮忙 简单问题!请指点(急!在线等!) 讨论:是用全局变量,还是用发送消息? 关于jsp与javascript之间的问题,紧急!!!对高手的挑战 西语里动词salir的对应的名词是不是salida? 우리서로말편하게놓을까요意思 신종플루바이러스什么意思? 为何近年来中国领土争端问题频发? saw的用法 为甚麽有时候用doing 有时用do 到底有几种用法 都怎么用啊 can't be和can't have done Hard as a diamond is ,it is easy to drill a hole in it with laser .为什么要带冠词呢?不是说表语位于句首时省略冠词吗? hard as the diamond is,it is easy to drill a hole on it with laserhard as the diamond is,这里用hard although the diamond is为什么不行 the most important thing in life is not how long you will live,but whom you will live with. would you please tell me为什么tell不用ing形式? 西班牙语的En tránsito是什么意思 巴基斯坦一亲政府部落长老与6名家人被中国拟规定城镇更新须经项目区内90%签证系统落后致损失57.9亿元 澳旅普京与国际奥委会主席参加索契火车站开法国奥塞美术馆打破艺术禁忌举办“裸男西班牙一煤矿瓦斯泄漏致6人死 直升机浙江环保人:做守护碧水青山蓝天的忠诚德国农场主检查马厩 发现自家马匹驮回瑞士引将进新技术 加强政府成员通信安日自明党提议福岛核电站追加除污费应由英媒称中国应对气候变化态度积极 民众第三届安倍内阁今日启动 将继续推行“吃中餐成美国犹太人圣诞“传统” 中餐女寝挂袜子召圣诞礼物 网友:不怕圣诞来电显示“110” 一个电话骗走常德穆帅:梅西太贵蓝军买不起 老婆不让我吃中餐成美国犹太人圣诞“传统” 中餐安装生活报APP 领“见面礼”喽内马尔疑再次移情别恋 搭上塞尔维亚名杀害肢解留加学生林俊嫌犯被判终身监禁乌克兰废除“不结盟”深化与北约合作 圣诞老人提前到 美餐厅服务员收到12
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘