查看: 4580|回复: 1

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

[复制链接]

4

主题

3

回帖

36

积分

管理员

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

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

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

×
3 M/ G5 y  {: m5 r$ p
头文件,加入 #include <afxdb.h>* B7 r3 ~- Y" e8 {" _# L" i3 `

9 j; E5 ?* A1 I2 Y: b6 T. Rvoid excelTest::do_it()
, x) y5 e9 M2 x& P+ V6 R{
+ c% D$ R  f8 L" h3 {2 g( _. c1 u8 q  }8 N  h
        // TODO: add your code here" I( o  w& X  p

1 V; H0 e3 Z) f- O; s1 m. f        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse ! e* D- [6 r/ _
    CString   SQLCommand = "select * from plmhome";     // SQL查询语句
% u8 k8 a; w# R    DWORD     dwOptions = 0;    // 设置连接的建立方式
( ?  X" Z6 k# Y! Q4 L7 z" d3 j  K7 S    CDBVariant temp;        // 数据库数据通用类型
4 E& E% Q. L" n4 P3 @* g    int result;             // 储存返回值的变量 & N, d; _0 D" Q. K# G* f. P
    char cyl_height[133];
" _7 G/ ^) ^. v+ T* h- M: ]/ A    char cyl_diam[133]; 9 G5 t/ I, A8 E& t4 d; q
    double *cylinderValue = NULL;  $ Z4 `; V  a! \) t

0 x7 ?2 K& d" w% M* a* ]0 w    try   N5 l5 B+ H  |6 M* q
    {
) u" p& ~7 u( H; b- n: [8 ]                , s, A( F5 M+ j! y1 m
        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库 : J9 b" M. ?9 {. S
        if( result != 0 )   // 如果成功打开
: p+ T4 X' M5 s- r+ o( B        { : r% G( F* D9 |! ^" k0 C2 B6 P
            CRecordset rs( &Database );  // 定义记录集
3 P  H/ S1 F/ u. x2 O( D, `            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  
5 U7 S6 t( z) j, c5 H            {   U# _: ]4 Z- O( N3 d* g
                rs.MoveFirst( );     
6 e9 i; T( u) K# J                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         3 r3 [- |  D9 L
                while( !rs.IsEOF( ) )   
9 u0 y3 O4 U- s/ {                {
4 j8 q8 ?/ d! o                    cylinderValue =(double *)malloc( nFields * sizeof(double) );
+ S* A; W0 _$ R: m% N; e2 q: ~& @# m                    for( short index = 0; index < nFields; index++ )     4 D# L, ^. A) {- E9 I1 v
                    {
9 q8 E8 W0 L1 c3 r! y                        rs.GetFieldValue( index, temp );  
# C( K1 H3 B3 C$ T. J( @4 V4 x                        cylinderValue[index] = temp.m_dblVal;                                    
+ U; r' W% D0 L% s; ?1 x+ s  W                    }     " ~* Z! S9 g  Z: n4 Q% z
                    sprintf(cyl_height,"%f",cylinderValue[0] ); " b4 ?& v7 A, S
                    sprintf(cyl_diam,"%f",cylinderValue[1] ); # T* S* B$ ^4 D4 W1 r% Z

! `$ m6 Q* v6 g( g% a                    rs.MoveNext( );  9 y/ W: M. v' |' R
                    free(cylinderValue); 2 N5 Z% m+ C; O3 K; v
                } 6 |  a" Q" X: u+ e$ O
                rs.Close( );    // 关闭记录集 ' W! J' W% m3 l4 D) Q4 N2 U
            } 3 H& b; L  P- d4 z% `& m4 E% J0 Z2 n
            Database.Close();   // 关门数据库连接         
& s$ `0 {0 |  @3 T) r                }
! q8 z5 b- V& u1 r5 U) k$ v2 n    }
8 ]3 V, J" s! ^1 d4 M) M& l/ A% J" L( `! T, t+ W% H7 {5 O) K5 X

, E% L  L% e% m, X5 v9 gcaTCh( CDBException *pe )   // 出错处理 : h5 I: Z3 P, p7 W) a
    { : f8 Y9 c& o9 q9 T' W
                AfxMessageBox( _T("Exception!" )); 2 k. o. X+ w. w# t" z
        AfxMessageBox( pe->m_strError );
$ p7 Q$ x' I  {0 u( f        pe -> Delete( ); 4 j& O) G( G5 G6 W& X
    }
3 e5 ]0 R# r4 B8 F}8 _' h7 d; w, E) r; f& a
9 W0 Q3 q8 o6 b& r$ a

7 b" t+ M' c( q
' o6 ~0 k* l) k3 U' x$ Q
上海点团信息科技有限公司,承接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客服返回顶部