青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2011-6-22 17:43 | 显示全部楼层 |阅读模式
我想用MFC的树形控件做个零件导航器,树形控件要和数据库连接(显示数据库里的数据),我用的是ACCESS数据库,自己怎么都没做不出来,网上的资料都是用MFC(EXE)单文档做的,我要用MFC中的dll,该怎么办啊?请高手救命啊,最好能有段实例代码,感激不尽!
发表于 2011-6-24 10:45 | 显示全部楼层
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS% u- v& s- k' F9 g! |% i6 t" c: z' Y
下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)
0 @3 R5 R; G$ W& i% oBOOL Database_main::OnInitDialog() 7 o: ^1 k# R4 M3 d  d6 ~* T1 `' N
{$ T9 n6 {% j1 I( C! _
        CDialog::OnInitDialog();, m! {! `8 }& p5 ]' M" a: P% o) y
       
+ L# Q1 `: b3 `! t        // TODO: Add extra initialization here
9 S; O7 e, L) j) w                try{        + ^/ v7 M  _4 R& F8 p! V6 O
        m_pdatabase=new CDatabase();
: C* ]( U+ V6 ]- `* X        m_pset=new CRecordset();
7 R7 g2 w; h! U% `. ]7 F    m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
" Z0 F. ?0 a+ Q( F" n+ V        m_pset->m_pDatabase=m_pdatabase;        ' {4 X2 g% P" e+ m( E3 r' t
        }# Z( ~! ^$ k5 @/ v  m2 W7 J
        catch(CDBException* e){+ y  j# M( ]' |/ t
                e->ReportError();9 U% @3 V+ {  i( z7 c
        e->Delete();  R0 B0 D( |/ u7 D8 L+ e
            delete m_pset;% `. t" e$ k8 R/ v
                delete m_pdatabase;
( z2 Z5 A8 ?5 q' s! S                return TRUE;}
( r2 Y4 _0 b3 o5 V; ~  h        DataShow("data");; y* c7 [  V# q  g4 z+ R- d3 x0 F
        return TRUE;  // return TRUE unless you set the focus to a control6 k5 t: ]# b$ b% x. H! E
                      // EXCEPTION: OCX Property Pages should return FALSE
. M  Y1 z" r, X' j# |}' n4 X) l' q: k& \, [' [- g4 J$ }  r

& j( ^# ^( L2 v, T% ]void Database_main::OnOK() / ]. w) `9 D/ D3 i  i2 ]" G
{
+ O- X$ z( ?3 O) p        // TODO: Add extra validation here; c9 _# U0 a8 Z; k- a
   UINT uSelectedCount=m_list_control.GetSelectedCount();6 E+ f$ v; W7 g( r0 @+ o, `& R
int nItemSel=0;
! V! O6 B" M/ p        nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);1 w: i: ?5 K0 ~8 c
                for(int j=0;j<nFieldCount;j++)% L# f7 E' j9 Z( B% q6 r
                    str[j]=m_list_control.GetItemText(nItemSel,j);* @# _4 m1 z9 |8 @+ `( t
        }
4 H( D6 \/ D! q/ G( a7 D/ o  C# k0 n, i% _. S

4 A5 j; I, D/ w( b$ G. v3 p0 \$ R& B; ^$ r- K( Q1 H
       
# u. m/ P- H6 w: M5 h        CDialog::OnOK();
. `" K8 j/ s( h' Y}! k+ `1 @. K( y, O6 Y6 V! v
$ O) I# ]* h+ d1 j. P0 b3 I1 o! O+ v- o
void Database_main::ClearList()- K0 A* }" x0 V" v
{
3 Q9 T; n) l$ D0 y; d$ p& F        //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
0 ]* J* F- ]7 I6 Q7 L" i0 u0 @        //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);# O( P* O# |( B1 {
        m_list_control.DeleteAllItems();
0 ^7 }. X$ w. x8 h2 L        while(m_list_control.DeleteColumn(0));; p/ U% N# Q: N: O* a" _
    UpdateWindow();9 u3 g- w  f# z- E( U! s- E3 r4 [
}
" j, f8 H  i; M////////////////////////////////////////////////////////////////////////////////////% b9 f2 ]4 e) e* U8 O' O
void Database_main:ataShow(CString table_name)4 E/ F2 c" U# t1 t0 G
{
7 F" ]0 ]+ p0 e8 q! ~    ClearList();+ T1 V+ [6 b: w8 p
    CString strSQL;& K6 q6 _$ |4 U$ |
        strSQL="select * from "+table_name;
: @% ?- h- h9 n8 b6 e- d8 `        ShowInformation(strSQL);
+ }( m5 t+ O% H  u' p2 g! K" D: u1 z}
3 e2 u# |# q8 |3 Z- ]
! X) A6 C- g1 H9 m: ?BOOL Database_main::ShowInformation(CString strSQL)
1 U4 x% f0 D1 t{
2 b0 F. Q- c, O* ~7 N& f7 y" n    if(!m_pdatabase->IsOpen()) return FALSE;! V4 o( T. i$ P6 S
        if(!m_pset) return FALSE;
  ]9 y8 K7 }% K. B9 M" a        try{7 V7 T$ l+ o: F
                BeginWaitCursor();6 Z: t3 m1 U7 n$ s
                if(m_pset->IsOpen()) m_pset->Close();
* R; W- I; ?7 a4 [) O7 |9 G                m_pset->Open(CRecordset::dynaset,strSQL);" p" o6 U2 t; }9 Q7 i
                if(!m_pset->IsEOF())
: l- N9 c/ Q- a. g$ ^                {m_pset->MoveLast();
6 a9 R, c+ s" b& `" D% T( {                m_pset->MoveFirst();}
# b) Z, L! R/ g) F2 B, f4 b                nFieldCount=m_pset->GetODBCFieldCount();
. f6 S% f/ G6 {  V) {, p* E  W' ~                CODBCFieldInfo fieldinfo;
9 U2 ?0 }: K! K% C0 X$ W                for(int n=0;n<nFieldCount;n++){5 y% x& `, d/ Q4 D: P$ ~
                        m_pset->GetODBCFieldInfo(n,fieldinfo);
! W$ L+ R* m# l! P& y9 p, B) Q                        int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;1 x6 C1 d$ _$ c
                        m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
: ]3 K: ], U7 ^' i) ]7 F                }; ~; t5 f( ?, _* G1 E. @7 g
                CString strValue;( s3 C9 \/ p3 M
                m_pset->MoveFirst();
& P6 M  M5 E$ K                int nCount=0;) B' I% S6 `* r. o# k
                while(!m_pset->IsEOF()){: n  J/ j% m& K5 X( E
                        m_list_control.InsertItem(nCount,strValue);) c  J9 D7 {3 B, v9 ]  n
                        for(int j=0;j<nFieldCount;j++){9 Z5 @0 p  R- h3 g$ @9 G
                                m_pset->GetFieldValue(j,strValue);6 c. y& [% {! S* B
                                m_list_control.SetItemText(nCount,j,strValue);
/ W# k0 ?1 u# a7 W' A                        }
1 M# E: D- M6 O4 u( s2 e6 [                        m_pset->MoveNext();; e  ^2 f! _( e2 D  k' P
                        nCount++;8 r8 ~- U4 |. V# ~0 J
                }
: \: }6 z  l1 V' r; Y                EndWaitCursor();; K- H7 d9 ~# Y- Z% {
        }, I/ ^- Z5 k& V$ n- {5 m# g5 @  I# Q
        catch(CDBException *e){
& X, f- g& x; p  p  w                e->Delete();
" ^: d% {7 |! m! ]$ c. k4 n        EndWaitCursor();
8 U1 F8 R: y( q6 `7 C                return FALSE;
( q  }) W' V# W% g4 T        }
) ~4 Q( W. K( \        return TRUE;
: `+ R# _4 g2 e' S* G. w}
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2011-7-1 20:58 | 显示全部楼层
回复 2# UG二次开发毕设 $ y+ g* H; w, L
我要的是用树形控件做的,你这是用列表控件做的,不过还是谢谢你!呵呵
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-13 11:42 , Processed in 0.225820 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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