查看: 4581|回复: 1

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

[复制链接]

4

主题

3

回帖

36

积分

管理员

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

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

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

×
$ y7 T" ^4 p3 h
头文件,加入 #include <afxdb.h>, A- B0 h. ?! o, B

/ p# }8 e/ z$ w& s4 h2 i. Rvoid excelTest::do_it()
/ w/ q- F$ k7 P7 Z$ |( H5 a  y{  {7 ~7 E7 H4 A$ E  c4 x

1 P& H3 B; U' n( i" C" j, b        // TODO: add your code here2 p$ @2 _6 G' a3 X
# v0 N8 o4 w, V3 K2 e4 U
        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse 2 |4 X/ J; T: n& N- l1 _
    CString   SQLCommand = "select * from plmhome";     // SQL查询语句 # Y, S& l5 [; Z
    DWORD     dwOptions = 0;    // 设置连接的建立方式
% C7 T/ z# t+ Y! E3 {    CDBVariant temp;        // 数据库数据通用类型 $ R* s" W4 r6 z/ y
    int result;             // 储存返回值的变量 + n- {0 ]6 Y3 m" U& E
    char cyl_height[133];
0 n$ k! R6 [; W: Q! n( }6 s. [( R8 Y    char cyl_diam[133]; ! @  C! F% U, N" ]) |9 g3 ]- W  I
    double *cylinderValue = NULL;  4 f( [! n2 Y) |

. t- B9 Y% A  [# u    try
0 x/ v$ @! E7 |; D) O; [) A    {   c$ r0 D9 n+ |  [
               
8 d; J- V9 B; W+ L* V* ^        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库
' V1 Q' }1 ~, ^8 m. y/ G/ f        if( result != 0 )   // 如果成功打开 ) Q+ Q* V) C' o' n  D- D9 W
        { # Q" S% ]3 k5 C# r& t" b: t9 v
            CRecordset rs( &Database );  // 定义记录集 + Z5 Y( c/ ]) c( u* J! u7 ?5 j  F1 I
            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  4 O7 G' [# _, a6 @9 U
            {
1 I  `2 I2 {" h1 _! p- Z                rs.MoveFirst( );     
" P0 u! V3 E% N% g$ o! f                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         
8 Z8 v& ]5 f+ V+ `9 c                while( !rs.IsEOF( ) )   
, I7 G. U" a5 r+ i$ s                {
$ ~8 M) {9 N# P, J6 m9 N                    cylinderValue =(double *)malloc( nFields * sizeof(double) );
, a1 h; z% a" ]4 j) i                    for( short index = 0; index < nFields; index++ )     
, x2 v' Z4 F$ b7 g1 t" f! a                    { . m# }9 B" e: q, p! h/ i9 ~) q3 t
                        rs.GetFieldValue( index, temp );  
3 C5 p1 W! G' u- A- G$ P                        cylinderValue[index] = temp.m_dblVal;                                    
8 R: s$ E  |6 \& M8 ]0 G( W% S                    }     
' @/ x2 A9 p6 j; v                    sprintf(cyl_height,"%f",cylinderValue[0] ); & A3 G$ C5 I# _& S
                    sprintf(cyl_diam,"%f",cylinderValue[1] ); 0 z/ ?. P! j$ C0 x

$ p- T3 C/ ~) q1 w- j2 p                    rs.MoveNext( );  
$ C/ n: S# E1 _1 |( {9 @4 ^                    free(cylinderValue); $ @4 Q6 F/ v* O! U: ]1 Y1 ?
                }
& e! \& Z% ~: ]. d                rs.Close( );    // 关闭记录集
# e: x- L" R1 R+ O            } 2 I& U7 D/ _6 h, `
            Database.Close();   // 关门数据库连接         
0 G3 E$ y! E" |* X3 [8 K+ D                }
7 g5 p6 g2 _, K' p1 ]3 \    }
( y; i8 g' |- W8 N7 h1 O1 _. v' t2 G7 O) a8 G3 M

( V0 I, r& P; l8 V& t2 LcaTCh( CDBException *pe )   // 出错处理 ) J" N( z1 g+ n9 Q" v- X5 }) `
    { / @: f& B* Y: `$ w( o
                AfxMessageBox( _T("Exception!" ));
7 v+ k3 b! r& f7 e/ u! J        AfxMessageBox( pe->m_strError ); 4 Z- P2 Y. t- [* x6 y6 P0 e
        pe -> Delete( ); ) h  y! Y: C8 k. |
    }
  T4 L3 u* B7 a" F, E/ h}2 _5 `1 h" \. X) Z3 b$ e2 T

( K: ]) n4 [% [4 S# z& w0 y! J2 }, ?0 z
9 c& ]4 Y7 @, Y+ X$ O
) W0 H; _. f, k: _- U8 h+ U
上海点团信息科技有限公司,承接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客服返回顶部