查看: 4932|回复: 1

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

[复制链接]

2477

主题

1280

回帖

8万

积分

管理员

PLM之家站长

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

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

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

×
+ b) Y9 k, P; t, K5 Y1 j4 m
头文件,加入 #include <afxdb.h>: ~  z! n6 t6 D! ~6 v( o2 V2 E
7 k0 X3 Q9 U5 R1 h& h4 c
void excelTest::do_it()$ s& M3 H8 G. A& R! e8 K8 t
{- s7 `9 z6 J3 O; q5 Z% c
7 o2 t  [& Q: a. ]. T! l
        // TODO: add your code here
% v! i4 t. n, K# K/ y
. A, _. {  n4 X( c        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse & y8 A, l, v0 b5 e2 T
    CString   SQLCommand = "select * from plmhome";     // SQL查询语句 : x2 H* b  i6 F& H7 b" U( _+ q' R& s
    DWORD     dwOptions = 0;    // 设置连接的建立方式 / {2 J0 R9 e2 y9 J; U- d/ D
    CDBVariant temp;        // 数据库数据通用类型
& A8 ?7 z; ^2 x$ r& M( P+ k8 z4 G    int result;             // 储存返回值的变量
( F. n3 r5 S& W7 t    char cyl_height[133]; ( P# z* b. K1 F* A8 J+ P4 M
    char cyl_diam[133]; . K- `4 {% i1 x! t6 j2 ~) P
    double *cylinderValue = NULL;  $ d7 p7 x4 D# F* ~, X8 i( l! g& a; p

, [8 v1 F! M6 B) ?1 u- Y    try $ ?+ A5 q4 c) C  Q
    { 3 L7 K& i" b- Y
               
4 r+ {+ R9 u" z% J8 ^  e* D# I, O        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库
' @4 N) n$ [3 l        if( result != 0 )   // 如果成功打开 ( M: k; A$ R  y+ `1 q9 G1 j
        {
2 y% {; c0 o3 }" _6 W            CRecordset rs( &Database );  // 定义记录集 " h% l+ G& U3 L9 y, {3 m6 F$ e9 H
            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  3 V" d; X' B  E' a( o6 c) s+ Z
            {
) Z& E3 k' ~3 v+ ~$ U! g% L- [4 A6 X                rs.MoveFirst( );     3 E3 p. w7 |" [6 v+ l6 M6 J; ~
                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         
& Z0 @9 R: j% @/ j                while( !rs.IsEOF( ) )   
  I% z. m( U/ A- Z& ]                { + t9 ~* m9 E6 ]0 t
                    cylinderValue =(double *)malloc( nFields * sizeof(double) ); $ Y4 V" p) H5 ?4 m+ o7 u
                    for( short index = 0; index < nFields; index++ )     
) ?+ }$ z* @0 t8 X                    {   W' U, F6 n  w9 g; `
                        rs.GetFieldValue( index, temp );  
# a" C6 }% [: \                        cylinderValue[index] = temp.m_dblVal;                                     " u) ~! r4 \* C6 m# x
                    }     6 m$ j5 A* y) J8 h; M
                    sprintf(cyl_height,"%f",cylinderValue[0] ); % n# n# q# b' w9 j0 l& s
                    sprintf(cyl_diam,"%f",cylinderValue[1] );
# c0 n& c; f, ~0 f5 F" M3 x
: n6 f' }9 u7 q+ {/ ?) s- n                    rs.MoveNext( );  
9 ^* i' ~' Z9 j% u" r* ?2 `                    free(cylinderValue);
: Y; Q+ t. x3 J, }7 |1 e1 Q                } ; V8 u. _) Q/ J+ A
                rs.Close( );    // 关闭记录集
) J: }! C# j& z            } ! G  R1 x6 C* _9 O3 v
            Database.Close();   // 关门数据库连接         
, u, j# h7 B" N0 }/ ^$ ?2 U9 T                } 0 _; P! ?/ b. [4 q$ }7 ^  r. x7 a8 k
    } 7 Q; o9 T$ `  _. F( B# P0 C! \

( s# `3 G8 v2 A# B8 d# k5 x4 Y: _8 n: s: B1 D2 K
caTCh( CDBException *pe )   // 出错处理
9 g4 }& R; W4 O& f; U5 Q2 I2 P    { 1 b6 B& Q: j3 [/ n" `
                AfxMessageBox( _T("Exception!" )); 1 S# m1 f! n2 r0 j
        AfxMessageBox( pe->m_strError );
) E3 u( f* X3 R& a8 p4 `        pe -> Delete( ); 8 s7 a" ^$ f" Y  G2 O1 K3 m5 Y
    }
1 m4 N4 c7 }1 P  i' U  D5 s}2 c$ D$ s( M0 D7 P. X1 v, c9 A# H

0 j8 r8 U; o* K8 O2 T" }
& T, R5 P9 k& r9 a& h: v8 L5 }$ [  w) [6 Y: j
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 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客服返回顶部