青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2011-6-22 17:43 | 显示全部楼层 |阅读模式
我想用MFC的树形控件做个零件导航器,树形控件要和数据库连接(显示数据库里的数据),我用的是ACCESS数据库,自己怎么都没做不出来,网上的资料都是用MFC(EXE)单文档做的,我要用MFC中的dll,该怎么办啊?请高手救命啊,最好能有段实例代码,感激不尽!
发表于 2011-6-24 10:45 | 显示全部楼层
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS9 i7 Z5 ^2 `2 _7 }  _
下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)6 @* ?! J( O8 M
BOOL Database_main::OnInitDialog() + Z! }( p5 {; @  }- v( R2 ?0 c! X- L) ?
{% N2 r8 N7 `# R4 B5 F9 [3 G
        CDialog::OnInitDialog();
0 s/ I3 h" B! p8 R7 Y5 W       
' v6 p( Z: b) B* f        // TODO: Add extra initialization here) [: t8 L7 M" s' C! B3 J, K/ H
                try{        : L( j4 T/ s7 |! N* |! n( u
        m_pdatabase=new CDatabase();, g" t* I2 P6 |. F
        m_pset=new CRecordset();4 K5 a7 p' V4 H: i4 E; q* `
    m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);$ d% a! r. U8 H& u
        m_pset->m_pDatabase=m_pdatabase;       
9 @2 x3 M: k5 t7 }" D1 X. D/ [        }
$ F, ^5 T6 M2 W' i& z& S" L/ q        catch(CDBException* e){  w5 D4 n" P/ x* w" D8 f
                e->ReportError();
3 s7 o' B7 N6 i; x/ A$ k        e->Delete();* `$ o, ~" y& a- C6 M2 J7 E8 o( u; n
            delete m_pset;3 N; j2 X8 J8 A" Q  ^
                delete m_pdatabase;8 w+ ~' r: y- V; l; p/ W, s
                return TRUE;}" c! b/ K" N. o: R+ I' \( B
        DataShow("data");4 S( d) @& g' d
        return TRUE;  // return TRUE unless you set the focus to a control' z* Q/ @/ _. @8 X, }. d
                      // EXCEPTION: OCX Property Pages should return FALSE9 y5 j$ y, X' S" i, N) m  B
}
7 T: l5 y8 ~# T+ W, d; G: z1 y( _4 w$ l
void Database_main::OnOK()
" f' r; \' m8 D2 }4 J' I3 _{$ K- G& i' T. N  T
        // TODO: Add extra validation here
7 e5 M# L0 l. L   UINT uSelectedCount=m_list_control.GetSelectedCount();
1 x6 A# w. j+ B; m! tint nItemSel=0;
- r2 S, q( V* {: k" b5 b7 k        nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
1 r& m" D) ^5 P. v                for(int j=0;j<nFieldCount;j++)- J% Q* `4 \6 K: \! n- d  }+ _) D9 a
                    str[j]=m_list_control.GetItemText(nItemSel,j);
6 l9 A2 e4 g6 M8 q3 d  F$ x        }
  z9 t% V( k( j. L* k8 M
& F; z, J' h- O5 _- [- U; z3 b  V3 @6 g. h5 @& e9 f
7 K/ q& k% I4 Q; A( P9 S' ^0 `4 n& c  R( K
       
1 [- G0 v0 q. {/ r        CDialog::OnOK();
) ^1 V4 X* [# L: A3 p4 c9 G}- K" V1 H5 ^+ p9 {* l5 d5 p

. R2 I# x, l- U, S  o. j0 u- @void Database_main::ClearList()" [& \! E, {: _" Z5 E
{# @- }3 W6 U! o0 v8 o1 y
        //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
5 L- D2 ?# Z, ]- b4 T        //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
2 }  c: q) N) |5 \# I        m_list_control.DeleteAllItems();. S/ y: h+ `; @6 h& t
        while(m_list_control.DeleteColumn(0));* |+ ?+ R2 L3 v( H( m
    UpdateWindow();6 q7 L$ w; _5 `; k
}0 t$ C/ B: q7 q" c+ L! {1 }/ M
////////////////////////////////////////////////////////////////////////////////////8 I$ E2 d3 q9 J9 m" H( l
void Database_main:ataShow(CString table_name)
0 x9 \8 R  S! b; }3 b! _{
! V5 U3 ~! h6 h6 Z    ClearList();
' u% _+ ]5 E+ B    CString strSQL;6 K7 {. M/ N, V+ e/ X' N
        strSQL="select * from "+table_name;2 M( R+ e" f$ e; ^+ Z# W9 k
        ShowInformation(strSQL);
. |, d8 r( X9 P1 p0 h& m}
. j8 j+ M4 U! r# V6 x/ Y
( b4 n1 S7 F3 {BOOL Database_main::ShowInformation(CString strSQL)
8 T/ r+ z# z: `& H8 [) K5 c$ y{
  b0 R- P) h5 q, p2 m; q6 ?* e# g4 [    if(!m_pdatabase->IsOpen()) return FALSE;: K3 `6 ]: ]# E
        if(!m_pset) return FALSE;/ ^# O! U1 f  G9 \+ P3 Q) i: v
        try{2 S6 f# O. U! B7 Q- u5 s
                BeginWaitCursor();
6 P2 ~$ P% [% t1 N' y0 S" s7 g                if(m_pset->IsOpen()) m_pset->Close();% {8 h; V5 a2 y* i. G
                m_pset->Open(CRecordset::dynaset,strSQL);3 K& e% a& Z/ L8 E# Q
                if(!m_pset->IsEOF())
* E  {) p: J" k3 d7 f7 Z) V$ `6 T                {m_pset->MoveLast();
2 r7 a- n; f( q, D8 `2 K                m_pset->MoveFirst();}
% f& o. H  H' ?5 i                nFieldCount=m_pset->GetODBCFieldCount();6 K& Z7 ^( Y/ J4 h5 G0 c' Y; {' x
                CODBCFieldInfo fieldinfo;
" S# o! A0 \, {) M& \. T. m                for(int n=0;n<nFieldCount;n++){1 f" I- N4 c. ?( o
                        m_pset->GetODBCFieldInfo(n,fieldinfo);
, W+ V! E3 }% R! v/ x                        int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
* M# N5 C" N' N  W; J                        m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
  N! V* x# a7 |' g                }
! V0 g0 t4 F" t5 |$ D/ J                CString strValue;
) Y8 X6 s6 V& z% N# o& N- G7 P                m_pset->MoveFirst();, q' G7 p5 x- c5 W
                int nCount=0;) n  l1 S1 S1 u' F
                while(!m_pset->IsEOF()){
7 D, Q$ M% U, ?5 a                        m_list_control.InsertItem(nCount,strValue);* I6 G: q- B. k6 R* c% F' ?
                        for(int j=0;j<nFieldCount;j++){$ K0 l- c  o7 g( |) U0 Z( Y0 g  f
                                m_pset->GetFieldValue(j,strValue);
. `8 a' h* r+ r; W* w* ^5 @                                m_list_control.SetItemText(nCount,j,strValue);/ m7 R1 _/ n, c
                        }
  j( l6 n' }6 a  ]$ ]2 l9 ^6 n                        m_pset->MoveNext();  d6 k6 m+ V& D2 T8 V4 g
                        nCount++;( `- M7 {! j$ l, [/ i9 A9 q, v  F( E1 o
                }! N# b' I, I0 K6 s# s# d  n3 v
                EndWaitCursor();2 R2 q/ P9 U7 J( ?+ h4 O, @: A
        }4 O! S6 m6 ~0 i" H- k5 [# }
        catch(CDBException *e){
7 \* n3 Q, c* ]7 S% d                e->Delete();) D+ A8 S/ Z. P& a# x& i( r
        EndWaitCursor();
7 L- ?, ]6 E$ n2 q0 v                return FALSE;
: Y2 Y# {0 R+ b0 O  H4 {+ Y        }# w; `2 f, b( a, a
        return TRUE;! t2 F7 E1 a' ~+ n, v  @' C1 Y
}
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2011-7-1 20:58 | 显示全部楼层
回复 2# UG二次开发毕设
6 [! {# t" W* I% a. ~我要的是用树形控件做的,你这是用列表控件做的,不过还是谢谢你!呵呵
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-16 06:25 , Processed in 0.053369 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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