PLM之家PLMHome-工业软件践行者

[资料] NX二次开发源码分享:使用MFC数据库的方式访问excel数值

[复制链接]

2017-3-30 16:07:29 4573 1

2471

主题

1276

回帖

8万

积分

管理员

PLM之家站长

积分
82201
QQ
发表于 2014-11-10 15:43:38 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
+ d* i) c& P; l1 N/ W* d* P
头文件,加入 #include <afxdb.h>
' t' I/ i- v9 b+ O. i; i8 f
; K! f# l2 s& M) svoid excelTest::do_it()
/ r" Q1 m' \' M{
) q6 g7 t& k4 j9 f- J5 w& X' t6 o+ ^' y- `# m0 ^; k+ o
        // TODO: add your code here
8 p4 r/ e* S' e* g) @, C- W0 m* J% S5 W* g
        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse ' [7 r5 V+ @/ b, G7 v
    CString   SQLCommand = "select * from plmhome";     // SQL查询语句 4 y7 w' e& k: v
    DWORD     dwOptions = 0;    // 设置连接的建立方式
# ]3 e9 r  V# T2 e# N' u    CDBVariant temp;        // 数据库数据通用类型
- n; M4 `/ ^! j    int result;             // 储存返回值的变量
3 b1 L/ E4 I; [# ]    char cyl_height[133]; % S5 U! s' q: }3 n! E6 r6 W
    char cyl_diam[133]; 9 Q  _- M* O5 U
    double *cylinderValue = NULL;  7 L! D6 S. \0 r, d
# u) |2 l$ R2 ~' C
    try , G  b4 G/ l6 U, Y) P
    {
; \. M7 R. G, W" A  [6 A$ A               
- ]3 L5 q6 K) n9 z+ U( ]5 X        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库
1 l. U9 {) V! i        if( result != 0 )   // 如果成功打开 * S5 z1 u8 D0 t. y. Q
        { / x& F+ Z8 J, ?5 F# [
            CRecordset rs( &Database );  // 定义记录集
5 a7 B* K8 Z* w            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  
3 T# F0 J- ]/ X# p            {
. U9 K9 H8 z) J% B% `$ m3 c                rs.MoveFirst( );     3 e- O4 S1 g/ M, G% |# x) [$ A
                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         & f) f7 x2 }' Z* \
                while( !rs.IsEOF( ) )    % V7 ]0 d+ E# W9 \
                { 5 N: ^5 M) N% C& V) A
                    cylinderValue =(double *)malloc( nFields * sizeof(double) ); ; q; z( i7 w6 A; Y+ s
                    for( short index = 0; index < nFields; index++ )     . X4 \. |: M) z& `
                    { 6 j8 x2 U: U6 _5 }! J) z2 ~
                        rs.GetFieldValue( index, temp );  : S8 M; z- c/ ?& g! Y2 A
                        cylinderValue[index] = temp.m_dblVal;                                    
" j0 ]8 u% d" s. L1 ~0 e                    }     
/ w8 a8 L2 }3 p7 A) E- s                    sprintf(cyl_height,"%f",cylinderValue[0] ); - O8 {" k: g& D. ?" \. Y0 }7 }
                    sprintf(cyl_diam,"%f",cylinderValue[1] );
( k9 a7 G  {. D" u
. x8 v2 a& h9 s7 f: X0 \$ f& X                    rs.MoveNext( );  
& ]/ Q# x: Z+ c( s' [! Y                    free(cylinderValue); ; k" \* [' L  Q$ G/ ?
                } / p* |1 x. d3 |5 D
                rs.Close( );    // 关闭记录集
! c* k+ z, T) q: B+ S; Q            } 1 q) b& ^4 p; P0 c+ O
            Database.Close();   // 关门数据库连接         
* Y4 g  {, }4 i& y8 N; v                } 6 I' l6 u  f+ {. y1 j& \
    }
6 T% q: r/ L1 b* R; J2 v7 c8 @1 m; B2 A2 O

7 w/ L; d1 e- ?+ fcaTCh( CDBException *pe )   // 出错处理
( h! i0 i9 ~$ m, `0 y, X    { , B. |6 n$ H% Z+ S* L5 t
                AfxMessageBox( _T("Exception!" ));   p+ \0 K0 F$ b; g8 \+ j$ O4 b& f
        AfxMessageBox( pe->m_strError );
1 J, ^! v. o; e* M        pe -> Delete( );
" {: @* ]: j" G) F6 z7 g3 r    }
" i# }: W. Q1 }: E}
+ \8 a1 L7 J" J- f' ~7 {6 o! b) b( O! K' L) {: c
+ K2 t( c. r( Y) r3 l

+ |: K7 V, W# Y- G4 ^
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

0

主题

10

回帖

73

积分

注册会员

积分
73
发表于 2017-3-30 16:07:29 | 显示全部楼层
这个运行的怎么样,上个图看看
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了