青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 2688|回复: 4

[疑难] 二次开发中树形控件与数据库连接问题

[复制链接]
发表于 2011-6-22 17:43 | 显示全部楼层 |阅读模式
我想用MFC的树形控件做个零件导航器,树形控件要和数据库连接(显示数据库里的数据),我用的是ACCESS数据库,自己怎么都没做不出来,网上的资料都是用MFC(EXE)单文档做的,我要用MFC中的dll,该怎么办啊?请高手救命啊,最好能有段实例代码,感激不尽!
发表于 2011-6-24 10:45 | 显示全部楼层
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
& O; l  }, b" j下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)/ e. ~  Q4 ?) N6 ~( x% F7 ^( C
BOOL Database_main::OnInitDialog() - H2 I* Y3 N3 m* M$ g! v
{; b6 I# b7 p$ S( v3 [0 X7 f- p& i
        CDialog::OnInitDialog();1 o$ l3 }$ d; F$ m5 k
        1 I% M0 ^- r8 t: t9 M
        // TODO: Add extra initialization here, K. p, E# k; M- |: e7 |
                try{       
4 p; @) i5 O/ l% t" E8 v  P3 m        m_pdatabase=new CDatabase();8 R2 q2 {1 u. k0 n
        m_pset=new CRecordset();
* f, K8 g# u9 [6 @5 s2 h' a    m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);: J, {( d- c; K
        m_pset->m_pDatabase=m_pdatabase;       
; C! M" Y9 V' H  \5 ^8 A6 p3 |        }, z7 H1 r9 H2 |( {! i6 B" b. ]' `" f
        catch(CDBException* e){# t% Q0 o* i" C
                e->ReportError();0 [" ~1 B0 C" ~! A
        e->Delete();+ _  a  q: z% X& x0 ^$ i* s7 u
            delete m_pset;, n4 [9 G' A; g- p' ^
                delete m_pdatabase;, }0 V9 M. f# W4 u/ T; r$ |
                return TRUE;}7 W  v3 o& H0 k. l
        DataShow("data");9 C  J6 @2 z$ ?* s1 k$ k
        return TRUE;  // return TRUE unless you set the focus to a control9 {8 u6 E) }- q5 c: m, }! ^
                      // EXCEPTION: OCX Property Pages should return FALSE
, q1 ?/ u' V/ H# Q3 W! g}9 W( j5 o1 L5 d2 K* z, t/ R

" R. g! n8 A' O( X6 Z7 ]" nvoid Database_main::OnOK()
$ [5 S; P' i; G{* D0 {8 [; F+ n
        // TODO: Add extra validation here
, v) |/ T* g' A6 T7 B   UINT uSelectedCount=m_list_control.GetSelectedCount();
4 c: R: U2 {% o! s1 ]4 P! Rint nItemSel=0;
: c0 Q9 ]& b1 V( ]6 V6 b        nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
6 C* x& l$ o7 e/ p( v) G( P                for(int j=0;j<nFieldCount;j++), l  `# w# z6 b$ q  q2 a( L; N
                    str[j]=m_list_control.GetItemText(nItemSel,j);
, J9 {7 S, A: J, t        }
+ z) \8 P, ]5 ?: [% d! p, u
2 i, y+ p/ x# J) s
; |2 s) ^. N) z$ N9 d7 Q
+ j/ i6 L3 J) c/ [' ?9 E1 V       
( d2 [- p% \. n4 C4 {! u7 t        CDialog::OnOK();
9 X/ D3 @0 _' e) w& d6 G}
7 O+ ?7 B- x. f' g0 v2 x4 e# i: B1 k" Y2 H0 s/ x
void Database_main::ClearList()
5 t1 Z7 ~" s" ]5 w{6 C1 h0 y# K* K! h& R: h
        //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
$ L; W( n5 a6 v: y. Q) F9 Q$ N        //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
% {" K0 p1 \  q        m_list_control.DeleteAllItems();
5 L+ d5 @* `+ }- c! Y        while(m_list_control.DeleteColumn(0));/ K6 c9 e5 T* _
    UpdateWindow();
2 d, l5 O4 ~8 K7 w5 s! K! L) W}3 H' O' p( A. i6 G1 V/ i- ?/ M
////////////////////////////////////////////////////////////////////////////////////4 P7 |! X. W, n1 C
void Database_main:ataShow(CString table_name)
  e" T7 d+ \0 X; _# i% M) q{* j1 @8 w0 a6 @" l0 C0 t
    ClearList();# ^- b0 O( U' Z. a
    CString strSQL;+ O' j, H( J. P7 `5 |6 e% r# u
        strSQL="select * from "+table_name;4 @) e5 r& }  }+ U
        ShowInformation(strSQL);
- C6 U+ K& ?: e- K$ K( A) i}
9 q& r0 P0 B- j
# b! [; r' |2 D: EBOOL Database_main::ShowInformation(CString strSQL)
! N8 ^8 d+ L6 ?+ B( a& b{
; L( K+ `! Y; z3 c9 H4 {4 I    if(!m_pdatabase->IsOpen()) return FALSE;
, o* l6 J- b4 c+ [! l  f5 F        if(!m_pset) return FALSE;
3 `7 p! m& e1 P4 s3 c" v0 D" I# s        try{
& u% u5 k' }6 |: w3 p+ r) I, ?% _# q                BeginWaitCursor();9 W- Y) a- I2 b+ ?4 H
                if(m_pset->IsOpen()) m_pset->Close();
; N6 y6 S. U3 N! y                m_pset->Open(CRecordset::dynaset,strSQL);
. N$ b- ]( G6 n1 E( p                if(!m_pset->IsEOF())
1 F* Q! N/ T2 Q& A8 H                {m_pset->MoveLast();1 X6 B7 f2 z  i. @1 q9 Z4 X
                m_pset->MoveFirst();}
3 g; ?) D2 i+ N9 J# J* {$ l* o                nFieldCount=m_pset->GetODBCFieldCount();2 q" q- X. y% W
                CODBCFieldInfo fieldinfo;  E9 F; K: ^/ Q  O" y/ V
                for(int n=0;n<nFieldCount;n++){* c! |2 Y1 J3 i5 Y! J) a7 b
                        m_pset->GetODBCFieldInfo(n,fieldinfo);% V* @9 Z% J9 Y$ o* s- m. |
                        int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
) R' U* r  X+ ]                        m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);, o9 F4 [: ^/ p( a8 P1 I! i' h/ a
                }
0 Y% F% s6 p% \5 D7 j* W                CString strValue;) |& m: c) ^8 C8 f0 a& f/ M* S: x- L
                m_pset->MoveFirst();
& g- G% v* K" v* V, l* b                int nCount=0;5 @1 U& z3 H% V1 j0 p8 @
                while(!m_pset->IsEOF()){
/ W* Z3 b' ~7 V                        m_list_control.InsertItem(nCount,strValue);
' ?. I, ]7 i& ^* U& _                        for(int j=0;j<nFieldCount;j++){
- P6 H$ u3 S) a+ ~( O6 \" d                                m_pset->GetFieldValue(j,strValue);, ^$ I' n1 \& o  X- O' k; B
                                m_list_control.SetItemText(nCount,j,strValue);+ |/ h$ J, Z1 ]+ s+ U+ L8 Y# w4 ~
                        }% G1 ?0 p. @& j. `
                        m_pset->MoveNext();# U. t- u  \) e4 @! z3 @/ ~/ F
                        nCount++;4 `- q* k4 P, G/ X" y8 |
                }" |5 _8 G, _& e2 f% E9 I: z
                EndWaitCursor();
. [, l9 h6 E6 W9 k4 k) E) _        }
, a* ]: s$ i, ^& e0 A, Q4 f        catch(CDBException *e){8 `0 G. ?7 u  h, I  ?' s  Z  `0 v
                e->Delete();- j+ ]$ A1 T' `! {! o% `8 ^+ I
        EndWaitCursor();7 L2 A1 @- E9 B2 L6 y
                return FALSE;3 y2 Z! L* X. S$ w+ L  A' z: h9 @6 V
        }6 U1 i* a: T+ G, }
        return TRUE;3 _# K' }6 @3 i7 Q- [8 J" K
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-1 20:58 | 显示全部楼层
我要的是用树形控件做的,你这是用列表控件做的,不过还是谢谢你!呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-1 20:58 | 显示全部楼层
回复 2# UG二次开发毕设 4 h. x- B4 m4 A" U  f3 o/ k
我要的是用树形控件做的,你这是用列表控件做的,不过还是谢谢你!呵呵
回复 支持 反对

使用道具 举报

发表于 2011-7-8 11:30 | 显示全部楼层
呵呵,有偿的话,我给你做个。MyQQ:593939109.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2025-7-12 12:13 , Processed in 0.145933 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表