查看: 4718|回复: 1

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

[复制链接]

4

主题

3

回帖

48

积分

管理员

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

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

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

×
' V) D' ?5 s0 a3 ?' Q4 E3 W. L- O  U
头文件,加入 #include <afxdb.h>. P# C: ~$ w) g7 K# q! A$ g9 D
1 o% W. C7 ?8 S. Y
void excelTest::do_it()
8 [, V0 q# ]; C* ~6 _6 T{7 ^! V% v6 K$ h0 A) f

9 a9 [) O0 t- p. ?7 x        // TODO: add your code here
8 I4 Z/ R2 G2 _0 h1 m( b  _
3 [' P# @0 P0 c$ t' d/ j        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse
2 p# e1 B& q! X7 L% A3 n( i    CString   SQLCommand = "select * from plmhome";     // SQL查询语句 9 h# B) A5 t3 B# [
    DWORD     dwOptions = 0;    // 设置连接的建立方式
& q/ g& Z  S* u    CDBVariant temp;        // 数据库数据通用类型
# c  |: v; }7 P0 t    int result;             // 储存返回值的变量 " I! M! f2 P4 M( L5 V
    char cyl_height[133]; ( `, f& T; ]( J) s7 J/ _6 F3 r% K
    char cyl_diam[133];
; f/ u% P" [5 L  ~4 \4 ~  G. d5 W" G    double *cylinderValue = NULL;  
7 u7 N1 P5 S. F5 j5 w; c) b% X1 Y% Q. z# P4 S
    try
/ K$ S9 |' H! t5 O    {
$ T& J# O7 z5 U( T5 O. P. U5 g" q               
* U" _3 d9 O7 p% k, t* ]3 p, g" k        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库 3 p0 u9 A  f& v  U; h1 t
        if( result != 0 )   // 如果成功打开 & _  o( l4 S" z' Z; X
        { ) v9 S& C7 L9 W3 Q
            CRecordset rs( &Database );  // 定义记录集
" v) Z  Y& Z5 K            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  
9 y( k/ ^, x2 M, ~6 ?* E            {
$ w( u4 Q: b. t% s4 C6 W                rs.MoveFirst( );     6 v( y$ W" ^2 f% R$ `) K$ P
                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         / ?. ]5 L: V$ o9 ^; Z
                while( !rs.IsEOF( ) )   
& v: L: V; y" T, `  H' d                {
8 z3 z4 u: V+ n! n                    cylinderValue =(double *)malloc( nFields * sizeof(double) ); ; R/ v2 K/ p5 U1 ^" Z
                    for( short index = 0; index < nFields; index++ )     7 k4 I; k0 w7 O
                    { 8 w$ `6 L/ A7 w7 E9 e
                        rs.GetFieldValue( index, temp );  # [' a0 D! J: W* a! O) E
                        cylinderValue[index] = temp.m_dblVal;                                    
- ]: V" |: x) P9 ?                    }     
: N3 u! M8 o- M( P4 P2 Y                    sprintf(cyl_height,"%f",cylinderValue[0] );
2 L: n1 N! d. D) M+ x) T                    sprintf(cyl_diam,"%f",cylinderValue[1] );
- _# A2 r# ~; X/ P1 ~( S
; ^% q0 V9 ~8 W2 @: ^# c                    rs.MoveNext( );  
& B" r# U) X: l                    free(cylinderValue); & A. G+ V1 e7 R+ X0 j/ e# D: b' k. B; A
                }
( N! M7 e& ~+ c0 P+ x                rs.Close( );    // 关闭记录集 . h& y- Q# b% F: n- R: b" @
            } ' d6 J4 G5 z# w
            Database.Close();   // 关门数据库连接         
8 B) f+ h+ Z8 ^$ G2 o# e3 r$ `0 U                } , s- j9 z0 w* D% u4 D1 z
    } 7 S- |* }: j. [* l) b3 ?. s
# P( l, V, y% |, }

, J9 J6 ~4 s6 A( vcaTCh( CDBException *pe )   // 出错处理
: _1 G+ }& l0 D7 f# I- V" H    { : p+ [" [( J- V; d8 |% L1 v; w
                AfxMessageBox( _T("Exception!" ));
# f% x+ p* G* R) I  j6 p        AfxMessageBox( pe->m_strError );
  m* V3 q- y5 E: |        pe -> Delete( );
! {5 B0 |% q* i  b    } 1 a. m$ F( D: j4 o
}
+ D5 C% s6 {/ i8 f/ w( B
: Y" G: @* ?: l6 D3 A
2 g" X  k* ]8 U# s' @* D* d6 G& m+ l: l) x( M  u. 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客服返回顶部