青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2011-6-22 17:43 | 显示全部楼层 |阅读模式
我想用MFC的树形控件做个零件导航器,树形控件要和数据库连接(显示数据库里的数据),我用的是ACCESS数据库,自己怎么都没做不出来,网上的资料都是用MFC(EXE)单文档做的,我要用MFC中的dll,该怎么办啊?请高手救命啊,最好能有段实例代码,感激不尽!
发表于 2011-6-24 10:45 | 显示全部楼层
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
6 M. R- d4 `& Z" x" ^& E下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)
6 U# s+ v' E* P1 G- j! |) JBOOL Database_main::OnInitDialog()
/ B2 n$ g) E+ @6 z: Y% P2 K0 @{
% N) J; n- ]8 v- S0 R3 o2 l        CDialog::OnInitDialog();# S2 W1 L" B5 @/ O$ ^4 y5 @1 X
       
$ H! N/ u0 l' X3 G8 m+ g1 T        // TODO: Add extra initialization here7 z1 t! w3 v. b& ~  t4 t  B1 U
                try{        9 o) \6 ?% M7 V$ b( Q% |* g4 ~0 s( u
        m_pdatabase=new CDatabase();
. Q8 e' W* `: k3 Z2 u& j% o: K; c        m_pset=new CRecordset();8 ?/ {9 F& K( c& S8 t1 g7 b
    m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
& z) L7 p9 {8 b, ^) d        m_pset->m_pDatabase=m_pdatabase;        . U" R* X+ \# D4 G" ^9 u% c. E
        }
# ?7 E4 H1 c: w% m; y        catch(CDBException* e){& ^' G) k# ]3 X- N- z9 k4 S) h
                e->ReportError();7 y2 k) c1 g8 m1 g: C* r1 d
        e->Delete();# U7 ~, X+ _/ r4 }
            delete m_pset;
, W( E5 y2 h) P: x# s: B+ I$ H                delete m_pdatabase;
/ G, [+ p( l2 C( a                return TRUE;}
" K; b8 o- H& o- m8 s        DataShow("data");
3 u7 B( B8 z/ H  B* `2 T8 g; z) \! r        return TRUE;  // return TRUE unless you set the focus to a control
* A/ T5 u" w3 t! ?1 s0 j                      // EXCEPTION: OCX Property Pages should return FALSE. ]& z5 ?% @9 R0 ~- g" ]
}: Y' W4 [) z, e4 R6 A. a3 m4 R- q. `
. V. i: t8 d* T# C5 O/ V& }  O
void Database_main::OnOK()
, F0 I- Z0 @* i% V{1 x; U1 k0 D( N+ C
        // TODO: Add extra validation here$ C6 C) q) N' {# y' u
   UINT uSelectedCount=m_list_control.GetSelectedCount();2 j) ~* p0 _$ y5 ?
int nItemSel=0;
4 i6 Y7 r# ]! V1 T+ N        nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);9 b5 ^& f! d1 ]* M5 a2 W
                for(int j=0;j<nFieldCount;j++)& l3 W2 U$ Y* Z- p, t% i- s* H0 w+ o
                    str[j]=m_list_control.GetItemText(nItemSel,j);: r' ~! @, |  A+ h$ q+ [8 O
        }
+ T% u1 f! j, T* |7 E+ ?1 f+ \# e$ w
* t3 C( U8 r- \/ M/ E" V+ y; k7 ^0 `
9 [6 I9 o7 P0 z' ?( [% Z
        4 B4 `/ A4 ~1 ?- x) y7 T2 l0 e
        CDialog::OnOK();
8 j/ Y6 h8 C3 }! n& |" W}
4 P2 ^9 f0 n' M' F. l6 k* p! o6 L. c( e9 d1 n/ a! m
void Database_main::ClearList()) X4 E' t/ \  R0 }7 ^+ U$ F4 r
{6 A9 v! d/ i3 g# t* {; V; F1 u
        //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);  h0 _9 o/ `. h6 ^1 ?" I$ e* Q
        //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
' O( Q0 M& F+ D6 U/ a        m_list_control.DeleteAllItems();! H; k$ H" z: e
        while(m_list_control.DeleteColumn(0));# N1 d' o8 i. E. E
    UpdateWindow();  k4 _" k. \6 j7 z  b( U6 q
}
0 d  C0 B6 z( Z' p////////////////////////////////////////////////////////////////////////////////////- m# s% l0 R; k' _, Y
void Database_main:ataShow(CString table_name)2 r: x9 K# @) T; @
{
) Q7 z8 g( W. [" V    ClearList();
+ z  K; Y3 {/ S7 B$ n    CString strSQL;1 g$ e- C0 H  B% m& r. \' e3 \
        strSQL="select * from "+table_name;
. F+ S' z9 M0 R/ l0 v+ n7 b        ShowInformation(strSQL);
6 }# P" G& ?- M# ?7 ^; ]}
  R# Y7 N$ I( B, U
2 |4 f$ q7 A" o) h7 q% l. bBOOL Database_main::ShowInformation(CString strSQL)- {2 W$ m0 `2 e  h6 P: P0 ^
{
+ L* H& b2 B& ?1 r    if(!m_pdatabase->IsOpen()) return FALSE;& J/ l2 G, P6 b/ T: m9 P: m8 Z
        if(!m_pset) return FALSE;
$ K' H3 {7 b, r2 N. O+ B, y, c9 |        try{1 |1 y9 C8 N8 Y. {0 C
                BeginWaitCursor();
. _% o1 l0 n' e6 s- W, {9 P5 a                if(m_pset->IsOpen()) m_pset->Close();
7 O; o. t) x9 C6 ~% X                m_pset->Open(CRecordset::dynaset,strSQL);
0 ?- u+ f2 v% \: ^' D; [                if(!m_pset->IsEOF())2 F# H" E1 D& |* `6 f) _
                {m_pset->MoveLast();
, k) q# H4 s- d7 x9 _! Z                m_pset->MoveFirst();}$ \) t8 Q: m- @& r
                nFieldCount=m_pset->GetODBCFieldCount();
4 X  {( L$ d" B  P# ]: u7 f                CODBCFieldInfo fieldinfo;
4 A' b! s, C' p* F, h% E' o/ b                for(int n=0;n<nFieldCount;n++){
; I4 B6 U1 e0 P6 X" j                        m_pset->GetODBCFieldInfo(n,fieldinfo);% c2 N+ F, H2 R( d1 J
                        int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
* L1 x2 Q+ q1 `- [1 _* ~                        m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);. I7 Z# }  Z: `9 \3 Z5 s
                }8 d6 G6 V9 r$ e  O
                CString strValue;4 {7 k5 n) D0 ?/ H# P( K* b3 Y
                m_pset->MoveFirst();
$ f: z" @$ J) q, s                int nCount=0;8 ^4 z; p: D7 e. s
                while(!m_pset->IsEOF()){* v* H- e* c( O: B
                        m_list_control.InsertItem(nCount,strValue);0 @# [+ U3 N. \$ W8 ?
                        for(int j=0;j<nFieldCount;j++){
+ Y; g4 |$ l+ O  v; F/ s1 h: O                                m_pset->GetFieldValue(j,strValue);4 |+ I& B8 Z. g/ Y9 Y
                                m_list_control.SetItemText(nCount,j,strValue);
# M7 S# Z+ i) k5 i0 F& G7 r' o# {6 D                        }
" o0 s+ D, F' i: l* a+ g# S                        m_pset->MoveNext();% |* Z9 n8 _" E0 f" f
                        nCount++;: k3 G9 }0 q1 x7 v% n4 p0 z+ U9 Q
                }
9 c- Q& f* L6 {/ ]" C                EndWaitCursor();2 R1 i& c. q& \/ F) g
        }
0 N) ]0 r4 F# n" i0 r        catch(CDBException *e){
9 G/ S7 x! a3 [8 d2 B  P                e->Delete();0 J- l  Q7 C5 q: n5 a
        EndWaitCursor();! I6 F2 Y! A2 y2 c' g
                return FALSE;
( r$ k( w! l0 d0 Z/ ~: b1 K, {        }
3 f3 @; h; q0 N" U, a6 |        return TRUE;1 I) D' S6 H$ S2 n9 D9 f0 V
}
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2011-7-1 20:58 | 显示全部楼层
回复 2# UG二次开发毕设
+ g, J" L5 i" o& w7 q, {) j% y/ f  x我要的是用树形控件做的,你这是用列表控件做的,不过还是谢谢你!呵呵
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-30 05:30 , Processed in 0.288047 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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