查看: 4620|回复: 1

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

[复制链接]

4

主题

3

回帖

42

积分

管理员

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

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

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

×

0 s8 r6 r0 A" \" Z7 n头文件,加入 #include <afxdb.h>9 n4 e. Z* V* V

+ O3 M) C; z6 Gvoid excelTest::do_it()
  }. l- ]: R4 `4 |7 H{! q1 W  H, f2 W1 z7 W
; a8 a4 h5 z3 a" n
        // TODO: add your code here  c" ?8 m8 p1 m& X! w1 s
! N- j: g0 e5 ]6 Q; e8 t
        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse & x9 O4 h$ R8 w* c) F) ?6 p3 q$ E$ [
    CString   SQLCommand = "select * from plmhome";     // SQL查询语句 ) Y" b( e4 B  V
    DWORD     dwOptions = 0;    // 设置连接的建立方式
8 P0 ^' J- \- v% C& a5 N- e! q    CDBVariant temp;        // 数据库数据通用类型
$ y& E# u$ d( Z- {    int result;             // 储存返回值的变量 3 V6 K5 l& m- d2 I9 q
    char cyl_height[133];
% _' B$ c0 K, |    char cyl_diam[133]; 7 i' i3 ~8 V, F% @1 \  o) M. O
    double *cylinderValue = NULL;    z4 P1 g2 `6 B6 S" N$ M7 x! c

. h/ @9 ]& t3 [/ b) w    try
2 L7 ]2 [+ u+ M, k! h    {
& ^8 E: z: O' Z4 G: W* {                  G2 H( D. P6 \7 W, v7 c6 y
        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库 & ?: x/ U* V' |7 x! o+ t
        if( result != 0 )   // 如果成功打开 3 V" o% O9 o  R
        {
( R1 _: O) q2 p- c+ l* |            CRecordset rs( &Database );  // 定义记录集 ( p# X4 p5 k5 [3 U9 F% k
            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  
0 m4 n' b/ ~8 o$ \! O' H9 M            {
! p* ]6 f% ~. d3 e' K# z3 I8 Y                rs.MoveFirst( );     0 y6 ?  {3 U1 L2 w
                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         
! w& Q# G3 G$ t% J! q/ |                while( !rs.IsEOF( ) )    2 U8 j- a% k7 m% ?, O
                { 3 a  I+ F2 C" }* q( N3 J3 d' c
                    cylinderValue =(double *)malloc( nFields * sizeof(double) );
0 V0 R8 }% B' ]3 B3 d# w$ {+ v  A                    for( short index = 0; index < nFields; index++ )     
5 t* g* j% u7 P  [6 \                    { ) ~4 v, D0 i- Y; p/ }
                        rs.GetFieldValue( index, temp );  
9 |% L+ q! d# U                        cylinderValue[index] = temp.m_dblVal;                                     # U8 A8 i7 K+ W4 B* P6 N
                    }     ( z" J/ _/ m: x" C: l  s
                    sprintf(cyl_height,"%f",cylinderValue[0] );
; R( H2 d8 B+ Q  m) F; I                    sprintf(cyl_diam,"%f",cylinderValue[1] );
" M* Q( }1 D$ c1 N& P; ?6 K0 x& O/ Q
                    rs.MoveNext( );  
' L0 N% _' }& y1 _                    free(cylinderValue); 7 E4 Z4 A0 J, r. M7 R8 N
                } 2 v9 E* o' |3 m/ }7 z& j2 j5 w' N
                rs.Close( );    // 关闭记录集
2 `6 E7 u$ M9 [( X4 V% C! Z            }
) W5 a2 d% n9 X2 T7 G1 _+ }            Database.Close();   // 关门数据库连接         1 Q; x, m+ g% ?" s& O. u# S
                }
. D6 Z$ ~/ D- {# ?3 D1 x    } # s4 K$ v- D- @  C$ T8 O
( o; T4 S% }2 p: H% l; R% s

# O: H9 N! |) wcaTCh( CDBException *pe )   // 出错处理 + c: ?$ L8 j& P9 _) P
    {
* X, I. m$ @4 ^3 d3 I                AfxMessageBox( _T("Exception!" )); 0 V- y2 a$ n+ ~6 ?; Z6 z
        AfxMessageBox( pe->m_strError ); : t! X! _, S1 j: w' Q
        pe -> Delete( ); + @8 F, R. o$ s9 c: L" M, d' A# X
    }
0 r/ S( c6 u% w* ^' K; v}6 H3 d6 r7 G! S* s9 a' s. l- X

: V6 Z/ a- @8 ]/ [" D) I! C: u0 a8 R0 |+ U; B, F

9 K  i4 N3 C# t8 a+ k
上海点团信息科技有限公司,承接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客服返回顶部