查看: 4827|回复: 1

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

[复制链接]

6

主题

4

回帖

60

积分

管理员

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

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

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

×
5 r* B1 v9 K! T( }9 b5 h
头文件,加入 #include <afxdb.h>- E- e8 d6 K6 R2 |* f

0 F+ Q! l  w8 m" @void excelTest::do_it()& H% A* n9 g: r5 h9 R( J
{7 x! U% N1 |# ~5 y& j6 T
, h: A& G3 R; w, r* z
        // TODO: add your code here
( l6 m. m  |' C1 Z% _4 }
# |# }8 B  q# ^; l' ^8 V8 _2 k        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse 3 S2 Z& `% O9 j5 |
    CString   SQLCommand = "select * from plmhome";     // SQL查询语句 " q0 Y8 q+ J/ m/ A8 C) Y5 J( S
    DWORD     dwOptions = 0;    // 设置连接的建立方式 ( P. M% V7 ^" \5 J9 S$ \
    CDBVariant temp;        // 数据库数据通用类型
7 _8 Y0 _+ a3 D6 ?8 h* o7 ?    int result;             // 储存返回值的变量 ( F$ h: |, @6 D9 `8 c: l
    char cyl_height[133];
' \9 @: W4 e' \% v8 p/ ^    char cyl_diam[133];
! B5 Z/ l$ F( t    double *cylinderValue = NULL;  
  C1 G+ t2 f8 a- x* A
7 S# p! v  ~7 h6 N9 P/ i2 Y5 m    try ) K$ W- A/ M3 G& w
    {
" D7 ~1 z8 d8 n; P& n               
8 \% i2 l# d% N  w# b        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库 ! c  ]. z- \5 J% N" [
        if( result != 0 )   // 如果成功打开 3 B) b$ o+ x! N/ R- z+ \4 {# g
        {
" ]2 c# b/ T. [' v+ G* {6 h8 C1 \            CRecordset rs( &Database );  // 定义记录集
& ^3 i8 c, b& i* b& H- m$ h            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  # J  M3 ~, }  A3 f# ^$ u' L
            {
3 {  P3 ]8 L. D2 @+ _5 M) X                rs.MoveFirst( );     & w3 u0 s9 b; @0 K! _8 J3 ]( d
                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         
1 u% E* o/ B& `6 Z- W5 t                while( !rs.IsEOF( ) )    : h% a/ L& i& y) c# g# ?
                { , d' }! L+ a+ Z- V2 a* ~" H
                    cylinderValue =(double *)malloc( nFields * sizeof(double) ); ; n" A% B' `- n- `9 A; u2 L; M% Q
                    for( short index = 0; index < nFields; index++ )     9 T2 n  ^4 A( D/ a9 ]
                    { * i" }1 h' e9 c
                        rs.GetFieldValue( index, temp );  
% [1 }7 O0 K' a7 f) B: w. ^1 v                        cylinderValue[index] = temp.m_dblVal;                                    
8 O  j2 Z2 ]$ X3 K( S! t; \; B) s                    }     8 {# n) j+ W+ z/ ~: f0 q* ?$ X
                    sprintf(cyl_height,"%f",cylinderValue[0] );
) q. u: {" j. f% k                    sprintf(cyl_diam,"%f",cylinderValue[1] );
$ ~2 a) p" Y: U# X1 g6 }* f
4 ~0 F. `/ l* F7 N; ~/ t! K4 w                    rs.MoveNext( );  
# p* C# P; p0 E- i, K! o, R                    free(cylinderValue);
/ x& ?. E: v0 R                }
  V/ J. i5 t. }: c4 v6 B% d                rs.Close( );    // 关闭记录集 4 I5 C! J4 d" r9 x; G8 i9 ^7 b- F) Y
            } " A1 A/ w- \4 u/ ]' K
            Database.Close();   // 关门数据库连接         * I9 k. E8 y1 `2 S2 e
                }
) o* H( S$ r5 Q% n. X, ]# i3 p    } 3 v; n' r; N4 P* K* b, g
) b2 w5 N5 S1 q/ B( ?! G# [

! u; }7 y$ v/ p4 ncaTCh( CDBException *pe )   // 出错处理
) k( b: `; H& g    {
, c) s7 K& ^$ ?- u4 z! o+ F1 s                AfxMessageBox( _T("Exception!" ));
3 [+ j* c$ e  q7 a  Y! ?1 {        AfxMessageBox( pe->m_strError );
0 C7 d7 x1 `) Z) }        pe -> Delete( );
3 }' X! a; ~. Q4 X: G    } & U' i; {4 ^. _) @" S. Z! ~1 u
}
2 v9 o" _) u% t, s' v5 u, c( `5 z7 G6 @1 ?" M! d+ t
6 W$ V, t8 ?0 M9 t$ a4 G1 q" `$ G5 E
& a1 H" C1 b6 n* d
上海点团信息科技有限公司,承接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客服返回顶部