PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

admin 发表于 2014-11-10 15:43:38 |阅读模式

admin 楼主

2014-11-10 15:43:38

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

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

x

4 G# T: o8 j# _头文件,加入 #include <afxdb.h>7 [- V9 p7 @8 ~$ r$ o# v+ N: P
* j9 T- M% k  S/ n  e! H
void excelTest::do_it()0 m. c! |# z. F: A6 l* s/ q
{
# y8 k6 _7 g, O: a; n8 p: Y( L) F  m
4 J, i* S  J# }' j3 Q        // TODO: add your code here
! T& x4 O2 |! w4 {/ F# z$ L; q& a5 ?% ?8 _7 ?! \
        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse
1 {6 q* X* l; {5 i% J- |    CString   SQLCommand = "select * from plmhome";     // SQL查询语句 / e; X  L$ _; ^8 S5 k2 U
    DWORD     dwOptions = 0;    // 设置连接的建立方式
% I9 j0 Q5 P; \* m7 p9 I    CDBVariant temp;        // 数据库数据通用类型
1 P6 F& ~! J8 Q    int result;             // 储存返回值的变量 : r- L2 j- ~. F
    char cyl_height[133];
9 W' ]3 w+ t1 K8 i1 N    char cyl_diam[133];
/ ]  U! Q% ?+ H( g8 x+ B7 }' h    double *cylinderValue = NULL;  
1 j4 b& _+ ?5 K6 i5 x9 d7 u1 }, W4 n
    try 4 K1 b  e" R* t
    { 6 |' h& K7 J- ^7 F; w8 m
                * C3 O+ J" s5 x/ P
        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库
+ ~( i3 R9 x0 e+ e        if( result != 0 )   // 如果成功打开
4 K6 k% x1 @! v& {5 l        {
: k8 C6 ?! I9 P$ B' J2 K            CRecordset rs( &Database );  // 定义记录集 ' k4 ^+ F% U  p' Q
            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  % l! U8 Q' n3 A! Y
            {
3 @* P9 G- ?* S5 \/ ^7 d                rs.MoveFirst( );     
8 R) e5 j% U; [% ^$ c                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         + B1 \5 r4 J0 w9 e4 Y; o9 u
                while( !rs.IsEOF( ) )    7 U- v( d8 F/ \' G1 B- _" M, L" W7 Q0 w
                { 4 ?8 M8 m& T5 B7 V$ S
                    cylinderValue =(double *)malloc( nFields * sizeof(double) ); ! m* z5 `. C: t' i, M) R' @
                    for( short index = 0; index < nFields; index++ )     
0 f1 b- Z8 Q- m* J" q( s3 |  x                    {
6 n3 t& @1 N  Y! b) ^                        rs.GetFieldValue( index, temp );  . ?) q" Y: D* ^4 W6 C3 ]
                        cylinderValue[index] = temp.m_dblVal;                                    
; \; _3 W% t" z                    }     : Y2 O2 H) m7 u7 S4 a
                    sprintf(cyl_height,"%f",cylinderValue[0] ); , h1 M: ^4 ]1 G, c9 i) y
                    sprintf(cyl_diam,"%f",cylinderValue[1] ); 8 n0 T  G3 ^% h6 E4 d1 v, A4 l

2 c: s. i6 C0 ?9 ^                    rs.MoveNext( );  
! y7 ^* A0 S7 ]$ `, J                    free(cylinderValue);
  Q; R6 k( o$ z8 {                }
- D% V4 }2 Y8 A+ L9 q" o: L$ {                rs.Close( );    // 关闭记录集 8 g2 f: u) Q  T* U& Z$ Z& v8 F% ?
            } 9 Y  J' T7 M3 E5 G
            Database.Close();   // 关门数据库连接         1 I$ w9 j! M7 ?; L5 W) v, \
                } 4 N+ q- @1 W5 m) V0 E4 v
    }
: @. F) [8 h& Y% v2 `8 N0 s% a% h4 \( i0 U2 j( V
, P0 h+ i8 n0 ?: D8 K4 n
caTCh( CDBException *pe )   // 出错处理 # V. p3 c/ G0 q, z
    {
: _/ V& @* J- Z                AfxMessageBox( _T("Exception!" ));
! P. j. \7 Y  B  [4 S7 g: m6 v6 d        AfxMessageBox( pe->m_strError );
  J4 F8 J1 f& b        pe -> Delete( ); 4 P. O3 H( A; u5 Y
    }
- w( i1 A5 r" h" E  l}. _. \" o  c2 S) h* T2 Z; A$ C
3 e( R  N1 N0 c+ C# ~* i
4 z( a, ]* _4 P+ r

( j* F) S: ^! o! ~! g* o  L$ J
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

c1_wangyf 发表于 2017-3-30 16:07:29

c1_wangyf 沙发

2017-3-30 16:07:29

这个运行的怎么样,上个图看看
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了