查看: 4719|回复: 1

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

[复制链接]

4

主题

3

回帖

48

积分

管理员

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

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

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

×

8 T0 ?- i8 K' m头文件,加入 #include <afxdb.h>. I( h) B- ]$ O8 f/ E2 Q

' `# K( l' `0 y. W7 Qvoid excelTest::do_it()" q0 ^6 U: q+ V$ w. A+ b
{; l6 B8 ?1 Q6 @& F2 r
. x3 R0 ]0 B" _  R7 [! O
        // TODO: add your code here3 `0 i6 w+ J- i7 ~* _& b5 _6 o
# j% U% t3 a( S, x1 L! v
        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse " k7 N1 W# J, M, s* K
    CString   SQLCommand = "select * from plmhome";     // SQL查询语句 * ~: w3 N- L  J1 c
    DWORD     dwOptions = 0;    // 设置连接的建立方式
. F, }) U' e% U9 Q2 L8 T    CDBVariant temp;        // 数据库数据通用类型
/ W+ h% B- N  ^) u    int result;             // 储存返回值的变量
3 Y+ j1 w2 |' O/ N# A0 S    char cyl_height[133]; 6 T( n( {3 c4 C5 a0 O2 U7 J
    char cyl_diam[133]; 1 P& j/ W3 @$ y& R; y) h
    double *cylinderValue = NULL;  ' k6 K5 h4 a0 Y' z' Y8 e& ?
& g9 }% L: ]2 w, o# P
    try 2 }. L& q. E" I
    { 8 t! t9 D9 T. p" r; M1 M7 i6 T8 g, R
               
1 n& X# h% x$ k2 O: w        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库
  R* C% p5 W6 }        if( result != 0 )   // 如果成功打开
1 _5 d' |0 _2 V! ~* ]6 O, @1 V1 H        { , s0 f/ b/ b4 `6 {) S% Z; O( T
            CRecordset rs( &Database );  // 定义记录集 # n% n7 J5 D$ C
            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  
& r1 G% }1 l# x/ o; i            {
( R" z3 h$ i6 g. \' _+ B" h                rs.MoveFirst( );     
& t1 Z+ n  A+ s  m6 n2 ]                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         
6 N3 p7 F2 a2 \  N0 U" D                while( !rs.IsEOF( ) )   
" Q# ?5 T. Z5 V" x: H* v; s, q7 ~                {
7 b& l0 E3 ?/ K1 x: T                    cylinderValue =(double *)malloc( nFields * sizeof(double) );
+ B+ L1 P  S7 U/ b6 T                    for( short index = 0; index < nFields; index++ )     0 K) a7 k7 K" B! K$ ^
                    {
3 g. U3 K8 ]' d- Q3 \. M                        rs.GetFieldValue( index, temp );  % l" `! B8 C9 {% R% L
                        cylinderValue[index] = temp.m_dblVal;                                    
4 U; u4 T) G/ I% W                    }     / B% }% k& ?& N; A& @: _0 I5 r
                    sprintf(cyl_height,"%f",cylinderValue[0] ); 1 z) [7 d+ s' |' [9 U% }5 ]
                    sprintf(cyl_diam,"%f",cylinderValue[1] );
) F$ i7 p9 v" U3 U+ b6 H. ?! X6 w/ s5 {: Q' P* m" v2 J" y& H3 E( y
                    rs.MoveNext( );  
; s: S4 A% j5 Q; R4 n                    free(cylinderValue); , \0 O9 A5 I9 ]) L
                }
0 d0 `' J% A2 F# K$ t                rs.Close( );    // 关闭记录集 ! ?) N, S6 ^* X% I
            }
* n5 o+ V7 P  h            Database.Close();   // 关门数据库连接         
$ Q  J: ]; H4 b; F                } / U6 p" T7 U, E! d' E2 V; d0 e
    } - w8 J, F- X. Q) N/ ^- g

8 b9 S5 [/ T8 \# \4 o8 c" n* T, i) U: o" m! ]5 F2 B) R. \
caTCh( CDBException *pe )   // 出错处理 ' @6 z: g, ]" F' i
    {
1 I( a8 t# M" m# J4 ?+ B' V                AfxMessageBox( _T("Exception!" ));
- a3 Q8 R4 f1 S. L  }1 m$ `2 M) b1 z        AfxMessageBox( pe->m_strError );
/ A4 z& y8 T% x7 t& |        pe -> Delete( ); ' N( y* w. r  }, |: C8 l! `
    } , M" F3 E; X, S( u
}# `; c: f; B9 D1 u# z/ R9 o
) T' X8 X$ t4 W! p6 O

: P3 A+ c- d& F* N! H7 v! W0 h! D0 D  P7 m
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

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
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部