查看: 4699|回复: 1

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

[复制链接]

4

主题

3

回帖

46

积分

管理员

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

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

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

×
% h( v1 w& V4 i# I" z9 I9 X. V
头文件,加入 #include <afxdb.h>
) K4 h9 s: K& j5 L2 `" N5 p% q# Q
void excelTest::do_it()
  e6 G3 ^: P. o- V9 z' n2 |{
) K; F* O2 v3 J/ F  {
6 ^* J2 A- X- b8 T, y5 j9 q2 J        // TODO: add your code here
/ s* ~; N/ L+ `6 k$ d
+ g; d, |2 a" C# y        CDatabase Database;     // 定义一个MFC的CDatabse数据库类对象Databse
- g$ k5 `5 p# T% S) b$ }) S    CString   SQLCommand = "select * from plmhome";     // SQL查询语句
1 [8 J3 y* S8 e' b' Y! Z- Q    DWORD     dwOptions = 0;    // 设置连接的建立方式 1 V1 X' ~- K- a/ [* `' x8 w
    CDBVariant temp;        // 数据库数据通用类型
+ T) V8 x7 F9 j; X    int result;             // 储存返回值的变量
  e9 @+ \- J+ ?    char cyl_height[133];
% N$ A! Q  h& _  v0 }7 ]    char cyl_diam[133]; + n9 W" r0 p! V  c( z
    double *cylinderValue = NULL;  $ a1 Y" {; a6 ^( ^- ~* g

, ^! b) {3 S3 ?! c    try & U4 }5 D! {; }! u/ u, X& |
    { ! ?0 D1 ]: F! I' R4 r
                5 C: ?4 u3 D7 C" m. w
        result = Database.OpenEx(_T("DSN=plmhome"), dwOptions );  // 打开数据库 + V; ]. {3 g! b" Z/ _" Y
        if( result != 0 )   // 如果成功打开
& |0 f1 L" H4 f$ D2 m8 L! D( m        { . _. a6 l+ r8 o
            CRecordset rs( &Database );  // 定义记录集
2 E- v! v! T, U( K$ R            if ( rs.Open( CRecordset::snapshot, SQLCommand ) != false )  2 b* e1 X( P5 @  a: |
            { $ b& W* O. v& I1 S, k) p
                rs.MoveFirst( );     
* Q# P, |; Q) e0 s7 J: L                short nFields = rs.GetODBCFieldCount( );    // 获取记录的字段数目         ( W; Q: W0 b" }, ~4 c* @9 |& X: ?: G
                while( !rs.IsEOF( ) )   
" Q7 h1 o  |. O, n' {8 j* S                {
6 o; U. P9 F" X# M4 l2 @- m; F                    cylinderValue =(double *)malloc( nFields * sizeof(double) ); ( ?: ~9 [1 f6 X$ _
                    for( short index = 0; index < nFields; index++ )     / E' p7 d0 U! K2 n3 B  Q
                    { : p  k  I" w8 T; V
                        rs.GetFieldValue( index, temp );  
5 `" d# a  C6 F0 C                        cylinderValue[index] = temp.m_dblVal;                                     4 m8 b' }- ^) D, q& ]( R( W2 X2 q
                    }     
) l! L+ C4 f+ V' W( ]                    sprintf(cyl_height,"%f",cylinderValue[0] ); % R+ S& f. s2 ?% G  N' F% Q
                    sprintf(cyl_diam,"%f",cylinderValue[1] );
# {9 Q/ ?4 n. D$ v- G
9 ]4 s% i1 A0 H: I- r+ y* \                    rs.MoveNext( );  
: n0 t, U( A' l. W* e3 d( i                    free(cylinderValue); ; o4 p# V, _$ O  v; ?) D$ p; N
                }
7 h) ^4 U+ c, d6 C$ a9 H                rs.Close( );    // 关闭记录集 ' y7 G4 c; h  Z" X  y
            } & n" w  |- ?, Q9 r4 t, P9 V/ v
            Database.Close();   // 关门数据库连接           G+ S0 c; o. T7 I
                } 7 N7 B9 W9 L' w6 s6 {! c, f0 O
    }
# q* Q! b2 C: r2 g# C. x8 S( B
( ~' @, b* Z7 \& T- Y4 r; ]; V8 E
caTCh( CDBException *pe )   // 出错处理
5 f" u% C$ z# Q8 ]+ ?    {
) y! ]7 B. y8 M7 M. T# T                AfxMessageBox( _T("Exception!" ));
6 d5 B( Y* `# N        AfxMessageBox( pe->m_strError ); 4 s$ |. F9 K1 Y1 f& y  S
        pe -> Delete( );
- q& c+ z4 L5 I  U+ u    } 6 I/ R! }* F) f7 F  {) ?% x* {1 h
}5 Y# f; B% w7 \0 Y, U& h- F" L
) Q6 O1 |3 G6 ]  |; g

+ ^/ t0 R' n! b5 b  c: n' V& T& @( h4 s, a4 A
上海点团信息科技有限公司,承接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客服返回顶部