查看: 4630|回复: 1

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

[复制链接]

4

主题

3

回帖

44

积分

管理员

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

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

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

×

0 N, H& ?: V6 \- t: H头文件,加入 #include <afxdb.h>
+ W7 [( |8 E8 U! G3 K- q- v
9 y" x, k) X8 f( q# Hvoid excelTest::do_it()$ O2 _/ _/ w* s1 [9 R# f% R6 L3 ?% A$ u
{" j' m0 z' f6 {/ k  L

: B, Z* @9 a& c( b; z3 H        // TODO: add your code here' A4 q; k; m" X5 D! Y' m
# t  J7 y% b1 U- T
        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse + [. d9 y* ]  B& X
    CString   SQLCommand = "select * from plmhome";     // SQL查询语句 5 T* F0 s$ l, j0 C9 G
    DWORD     dwOptions = 0;    // 设置连接的建立方式
+ M7 l& a+ e  z- ^2 ?+ i0 o; R* i    CDBVariant temp;        // 数据库数据通用类型 / L! T) X8 H  v. `0 `' H. D
    int result;             // 储存返回值的变量
6 ]# @; G6 o4 K4 T    char cyl_height[133]; 6 s/ q+ k" F8 S. R
    char cyl_diam[133]; , c# ?, h7 V! _: m4 G9 v2 I9 m
    double *cylinderValue = NULL;  - s, d5 O6 N# [, ?& L+ S* T
8 [6 {: H2 w1 v: w- k
    try 3 t  D" a, ^" ?1 Q2 X0 v
    { & C2 E+ S) \0 {4 M7 A  ]
                0 e  T9 g) k( J, e1 u* V
        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库 : u7 M- y8 l3 X' e6 e" P) ]+ |- Z
        if( result != 0 )   // 如果成功打开 ( X! i. b0 v# d* E& D6 |3 _
        { 2 p6 |2 W  w4 p% Z- E, I  b
            CRecordset rs( &Database );  // 定义记录集
- X3 Z+ j4 N" j3 w9 l& R            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  4 X& L3 n* W- A! H3 N$ x% Z+ q
            {
+ v) b0 j& j4 _' c0 c0 b3 S- S                rs.MoveFirst( );     
. a; o( d! L2 b1 w- d                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         
: l7 ~) Z! W- s6 x4 h, x$ X                while( !rs.IsEOF( ) )    * ^( I3 Z2 X) R9 X& P- O
                {
# c: J( g7 C) o/ J& }+ m                    cylinderValue =(double *)malloc( nFields * sizeof(double) ); $ t( E3 x8 ]% m; e. v% Q) H: M
                    for( short index = 0; index < nFields; index++ )     
8 e+ t  k4 Q2 ?6 w9 X6 i7 g( W8 q                    { $ z4 E* G7 Y+ q$ J7 p9 U- e
                        rs.GetFieldValue( index, temp );  . P' E5 P1 j0 B2 e& o
                        cylinderValue[index] = temp.m_dblVal;                                    
6 F3 @: B1 `, A( ^                    }     
8 Z8 h1 x( R2 s& Z3 ?+ d                    sprintf(cyl_height,"%f",cylinderValue[0] );
' w6 X) `$ z  j/ {                    sprintf(cyl_diam,"%f",cylinderValue[1] ); & M# `8 u+ C1 [4 X2 ^9 l) S8 i* T
$ G/ n) F" Q" d* X4 |  [
                    rs.MoveNext( );  % W! e6 C/ p, `6 a1 ?' a" s
                    free(cylinderValue);
0 Q8 p. W9 C6 L                } " i) x3 w! X3 a  |+ s
                rs.Close( );    // 关闭记录集 8 ], i, G% @4 x$ e
            } " L! n5 z4 c: c& o
            Database.Close();   // 关门数据库连接         * f8 A% p" i; @4 X1 V7 I9 C
                } ' H" Y( I( H) q8 C- z7 b5 T5 P6 h  B. y
    } 9 U8 r9 d+ |+ K1 L  u

6 I3 u2 O1 p5 s6 F% j8 O+ o
" z& t) g" Y( v7 x; v* mcaTCh( CDBException *pe )   // 出错处理
$ j* K8 Q, A8 u    {
- ?. d$ x4 s; [5 m                AfxMessageBox( _T("Exception!" ));
- `3 V, s+ n) u. Q        AfxMessageBox( pe->m_strError ); , f; T8 |; V' \1 M2 l- _) t
        pe -> Delete( ); ) e6 m: U3 {, O) o* A! l
    } $ U+ o! Y; A0 u2 J6 h1 m
}
# \2 `6 ^! s' R. \/ h5 @- w. ?  z# G6 W
. P# M  N3 |$ C2 s5 V  t- Q
  E* z( V  K* A/ k" r) Y
上海点团信息科技有限公司,承接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客服返回顶部