青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2011-6-22 17:43 | 显示全部楼层 |阅读模式
我想用MFC的树形控件做个零件导航器,树形控件要和数据库连接(显示数据库里的数据),我用的是ACCESS数据库,自己怎么都没做不出来,网上的资料都是用MFC(EXE)单文档做的,我要用MFC中的dll,该怎么办啊?请高手救命啊,最好能有段实例代码,感激不尽!
发表于 2011-6-24 10:45 | 显示全部楼层
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS- T! v( n. a/ F2 y
下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)' j4 m! r- [1 s
BOOL Database_main::OnInitDialog() , P) T+ S3 g- M' m
{
, P. A$ Z. Z  w; L7 N        CDialog::OnInitDialog();
! [; x6 q9 u' J' N% ]& H3 M        ( |# D/ z# C: ~0 \2 s: w
        // TODO: Add extra initialization here
) ~/ |) u6 r. _1 v, ?                try{       
, L: o* m. S, B8 E: C% t0 r$ |        m_pdatabase=new CDatabase();
7 `$ V% H' p6 c        m_pset=new CRecordset();' W5 }: i7 M4 [* \% s1 i1 r
    m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
8 H6 E. N# L/ |9 y: m( z# m0 m2 ~9 T        m_pset->m_pDatabase=m_pdatabase;        ) f3 @/ y  L, A! O! ~
        }- ~1 z- c% g! F0 i4 D7 G
        catch(CDBException* e){
& t1 a2 ?3 C' [, K: w                e->ReportError();2 A5 O5 y# K. }1 l9 B
        e->Delete();
9 ^" ^- {2 m2 F. B/ e2 y( ]/ R            delete m_pset;* T6 `/ ~! e/ x+ e4 X5 C
                delete m_pdatabase;
8 x1 }7 O: e% X. N" r/ h8 M! L                return TRUE;}
# A' e  N- u' n% Y3 c        DataShow("data");& P+ c6 K4 w2 \& e' p2 Q) ]
        return TRUE;  // return TRUE unless you set the focus to a control- l+ v: V2 J( Y; M/ f
                      // EXCEPTION: OCX Property Pages should return FALSE
) v  K8 J; s2 P. a}; P. o' m3 w: Q2 D; N+ K' h
  O, X6 I* g; g+ {( l4 e
void Database_main::OnOK()
+ U7 P. X$ F% K2 b( J{
1 h2 b/ v* y3 m$ G' x        // TODO: Add extra validation here" c" }" d0 e3 D, u
   UINT uSelectedCount=m_list_control.GetSelectedCount();
1 s& h1 O; f' uint nItemSel=0;
9 q% h8 e6 \: Q, ?6 p! }        nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
& @) J8 r, X* j* r                for(int j=0;j<nFieldCount;j++)6 S  F; e0 K3 R1 I- R2 \
                    str[j]=m_list_control.GetItemText(nItemSel,j);; N# e, f$ b7 l) E9 Y  a
        }
8 t1 z9 p& J$ p: O: _9 D) [7 J# ~5 G: L, U' i1 C
6 H& x; M8 U/ |0 }6 h( V: F
  \, B  v- f( ~' F) G) G
       
6 k( D" W: J) b9 t4 _        CDialog::OnOK();* p/ h% m; S3 Y3 T8 e
}3 `) }& |' F( M" [" _

% o5 o& [  N; ?3 Z  _void Database_main::ClearList()# m; U1 r- b( Q9 @, o% x8 e0 H
{
- b- W, A3 c) F' F) ?/ ~4 ?        //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);; p5 X$ ~( U' t% i# m2 N
        //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);+ x4 k! ~5 ], W- k! B
        m_list_control.DeleteAllItems();
+ m5 \; g6 z- u0 j2 f, O7 N6 W        while(m_list_control.DeleteColumn(0));
2 _( O0 Y' A. k1 W# V" p3 C/ S    UpdateWindow();
: u1 X* C3 E, J) e+ ~: ~}
3 v+ N3 l: ^" O////////////////////////////////////////////////////////////////////////////////////" v9 k6 {! o/ J: u# g$ G
void Database_main:ataShow(CString table_name)1 q' B' ~3 H8 f( ?
{& }; D. w/ P, u, s6 S
    ClearList();
; K; H* w; W* o    CString strSQL;) v, ?7 n) g7 K$ g2 t- B. r
        strSQL="select * from "+table_name;
  B. U& E' Q8 @2 r4 V. t        ShowInformation(strSQL);
4 W9 I% b3 o3 P7 N* ~1 c}
9 l& p: a( j% Y
) U) O' r  k" }( DBOOL Database_main::ShowInformation(CString strSQL)
8 k1 P. g7 e/ {0 t% z& o{" n# P8 C5 R$ m* X. `
    if(!m_pdatabase->IsOpen()) return FALSE;
+ D6 Y- w' A  I2 z        if(!m_pset) return FALSE;7 O" X2 Z$ v3 {( {3 ]% \
        try{; q) ~) n( f0 k2 S; ?' w& p( h. M- M
                BeginWaitCursor();- z# y# E7 B4 p0 D" T' T1 u
                if(m_pset->IsOpen()) m_pset->Close();9 r$ ^* s% {3 f' V
                m_pset->Open(CRecordset::dynaset,strSQL);
1 Q% j5 T) v3 `& y                if(!m_pset->IsEOF()); i4 i3 B& C/ [, Q5 M% _: \
                {m_pset->MoveLast();- e! c* Q( @' _- J- _
                m_pset->MoveFirst();}$ h4 g8 U' i( T* s/ |2 y
                nFieldCount=m_pset->GetODBCFieldCount();
2 Y' ^0 I" W/ o  D* V                CODBCFieldInfo fieldinfo;! {* F2 }- n. t  R) H5 ~
                for(int n=0;n<nFieldCount;n++){8 b: O' Y( T- T1 ^% S- ]
                        m_pset->GetODBCFieldInfo(n,fieldinfo);
4 H4 K4 s2 s, D5 |' Y  n5 ]                        int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
* N9 _: {' ~- w, s0 N1 C                        m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
/ _  ?( I: K: D: ], E  n! R. Y) L                }
; B& n8 I6 G0 F                CString strValue;
2 ]+ L% n6 [7 G3 D7 N7 l" d                m_pset->MoveFirst();
& n+ Z( l  i  |, f8 z* R  c                int nCount=0;
0 u3 g, \0 G& Q* \# h1 g+ u2 Y+ F                while(!m_pset->IsEOF()){0 N$ ]9 X0 b5 K4 o
                        m_list_control.InsertItem(nCount,strValue);3 {8 v/ ^. Q3 ~- b& r4 o
                        for(int j=0;j<nFieldCount;j++){# e8 W8 T" l8 {) _& v
                                m_pset->GetFieldValue(j,strValue);0 d" d4 S: B1 Q3 ^8 B! B# b. F* `
                                m_list_control.SetItemText(nCount,j,strValue);
8 ?5 U0 W  A" f9 Y* o                        }0 @$ X3 _3 G/ b' w' n9 z% ?* o
                        m_pset->MoveNext();
7 A, L% f$ D1 e2 _- C! j                        nCount++;
) ^9 H0 m: _5 M2 Y0 o3 v7 A& S& W                }' F0 e" @3 `3 e8 |; \# z; R  Q
                EndWaitCursor();
5 G( o% @6 }( h/ r2 r: K9 N8 q        }
; J( @& e" f- k4 d6 ^7 ]        catch(CDBException *e){
7 F3 v* C- ^) i- r8 Y                e->Delete();
3 T% _/ m# N, t* o3 }        EndWaitCursor();
6 g: d9 ^# s: Z% q8 ?$ G                return FALSE;; F& ]) E) A* }# L4 b( y9 d7 u
        }" y6 P3 N) d* ^7 ]6 r
        return TRUE;/ q5 R) V8 f9 e2 S" y9 U6 @5 C
}
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2011-7-1 20:58 | 显示全部楼层
回复 2# UG二次开发毕设 . ~" v; U7 M: p) s' d# @# l" v
我要的是用树形控件做的,你这是用列表控件做的,不过还是谢谢你!呵呵
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 15:34 , Processed in 0.118683 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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