青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 2685|回复: 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+ O8 O8 L8 g8 q+ Y/ Y
下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)
) V* }; M( E3 l2 q: X4 q8 {+ ABOOL Database_main::OnInitDialog()
- B/ o/ o  p6 S{' D3 h( O3 ^( v) g9 m& P
        CDialog::OnInitDialog();' H" U% I: Y! {1 {* f1 P1 `+ ?
        3 H' J, D5 s1 y3 s& _& Z" t0 U
        // TODO: Add extra initialization here: S( k( g" I, B
                try{       
( H2 c* Q+ P1 v$ ~$ c        m_pdatabase=new CDatabase();2 B3 \* e  t, F; g: M$ Y
        m_pset=new CRecordset();
3 ~) ~. c5 F5 o3 w8 R0 L. I/ g% X    m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);2 p9 p0 T; n. m
        m_pset->m_pDatabase=m_pdatabase;        1 ]$ Q& A9 y" U% T' p* i
        }- Q5 u  o' k+ v& B& o+ N/ j
        catch(CDBException* e){& S" R2 G3 S4 r9 b
                e->ReportError();
- }3 R" `2 P8 i4 X( M9 }$ \        e->Delete();
& D) b/ X! h+ Y7 b            delete m_pset;$ T6 ~6 w( a& V) O
                delete m_pdatabase;
/ E8 \- G! W* @3 L# r                return TRUE;}
  b4 u: m9 j) u: T8 o3 p, U2 d        DataShow("data");
+ C6 m& k! ~  q$ o$ L        return TRUE;  // return TRUE unless you set the focus to a control) _9 U; i$ q% @. ?& a8 Q5 V, n
                      // EXCEPTION: OCX Property Pages should return FALSE: w7 f" K6 v2 |' x
}
  D3 i/ v) C* ?
- G% H; f8 x2 O' Vvoid Database_main::OnOK()
& O8 A# L2 h0 h1 b9 }# i; ~3 l' {0 Z{
/ |8 L# h- r+ ]1 X# x* j        // TODO: Add extra validation here, K4 y- ]7 B2 w- Q4 \! q
   UINT uSelectedCount=m_list_control.GetSelectedCount();
7 m5 F1 L$ p, r" G, X* Zint nItemSel=0;
. U3 y/ J9 d8 l. v4 {        nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);5 k# S) Q1 u2 w8 J
                for(int j=0;j<nFieldCount;j++)
( S5 `8 s+ G" w, B# G                    str[j]=m_list_control.GetItemText(nItemSel,j);
5 \7 H5 {5 A6 [6 U3 t        }4 \. V' e4 I4 N. q1 c

) h$ _; A8 G6 x# ~( l  J2 ~
' N: b0 _/ E7 }6 g; S
$ x: o/ Z, X# l' F' H+ t% R2 Z) i" E        6 l, Q% o6 \2 R- l) H) t: l
        CDialog::OnOK();
0 P, [9 U9 e/ U1 }}% H  i& p8 N+ F* O/ e- b
! Z! _" x2 T  N# O/ T* F1 S- e* u
void Database_main::ClearList()) E1 G. |3 v3 [. z
{* o5 g: w! B$ j4 f- I6 j& G& x0 U
        //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);4 ~* s) W. r9 G7 d( `+ e
        //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);4 M+ }) E! T/ t5 a  ~" D
        m_list_control.DeleteAllItems();! s' p2 |7 I* g, J; `' C
        while(m_list_control.DeleteColumn(0));2 W- K) N) k( K3 L" F
    UpdateWindow();4 I% h( G" Y" G0 D
}
1 ]4 d( i3 V* `0 q% g) D7 t////////////////////////////////////////////////////////////////////////////////////0 h* a0 |+ l4 C2 u
void Database_main:ataShow(CString table_name)7 u  Y' ?0 i3 u
{
3 \, U7 `+ E( P( y% C$ ]* G# R5 g    ClearList();( v- S( A5 _% n) k* _  b5 L; V
    CString strSQL;
7 |9 b: |# v' ^, y) W  g        strSQL="select * from "+table_name;. `& [0 h7 t% D0 T1 z$ }2 `0 B
        ShowInformation(strSQL);
$ r; q8 p. d8 M: a3 Q  B}5 j* _* c5 v* E
1 H7 [! ?5 B& @. P+ @( Y& ~
BOOL Database_main::ShowInformation(CString strSQL)
3 M9 B9 C0 _: i9 j  @{, p5 r: i4 |: Y' D
    if(!m_pdatabase->IsOpen()) return FALSE;
/ }2 H. z# m! n# H4 `        if(!m_pset) return FALSE;" O# X  ^6 @' M& Q! Q
        try{
! r+ |2 m% Q4 E, Y. ?' S                BeginWaitCursor();
! n7 e! a+ g0 ^  ]                if(m_pset->IsOpen()) m_pset->Close();) d" @% z3 x/ A$ R  J  ~
                m_pset->Open(CRecordset::dynaset,strSQL);; s2 ]) h/ L, B$ C+ a
                if(!m_pset->IsEOF())
" H8 y  c& {" D; }# M1 b0 p9 `+ H                {m_pset->MoveLast();9 x" J0 C$ j8 \4 w" x6 n4 w
                m_pset->MoveFirst();}
: S5 C+ i2 X! b* t                nFieldCount=m_pset->GetODBCFieldCount();6 H9 K/ ]- b! ?8 ?. s- c
                CODBCFieldInfo fieldinfo;2 p1 h/ z$ J5 t& W3 c0 {# x' @
                for(int n=0;n<nFieldCount;n++){+ |% S8 ~( D% F
                        m_pset->GetODBCFieldInfo(n,fieldinfo);
" J/ j1 F3 D- B4 [2 t                        int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;9 f0 Q1 ~: O+ @% z$ ]
                        m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);/ o5 {2 |. h" g3 u/ o
                }
( q3 o4 R1 g: R                CString strValue;5 h, ~$ R1 v; H8 S) h6 M$ O
                m_pset->MoveFirst();; ?% f/ S& N" d
                int nCount=0;
) }. n9 ^4 n  r                while(!m_pset->IsEOF()){
) s' D/ \6 D5 H8 k2 }  j) \: x- O                        m_list_control.InsertItem(nCount,strValue);
- K' R+ E4 Y0 o% a                        for(int j=0;j<nFieldCount;j++){
- U+ R4 ^' j. v% B% C9 B                                m_pset->GetFieldValue(j,strValue);5 Q7 d' ]1 W( Z+ v, i! v4 M
                                m_list_control.SetItemText(nCount,j,strValue);8 H2 O% c3 G/ a. y
                        }
5 y" k# t4 ?5 I$ X( l                        m_pset->MoveNext();
% d. \3 @4 }) D3 G/ v* @# R3 ?                        nCount++;
+ {2 j7 Z% u' f9 y# s8 m) }                }8 V2 e# w3 A* V2 j, Y' \
                EndWaitCursor();( P% y: q$ @  J# a
        }
( V: B+ d0 G/ H0 _9 p        catch(CDBException *e){
5 p. `2 u4 A3 G5 Z                e->Delete();
  ^6 H* a1 t) Y( t) H  g- B        EndWaitCursor();
3 U  {# _/ s) }" R$ H                return FALSE;; u' E8 R7 D" P5 M) ~  z
        }% R7 W" v, |; k) z) z2 B( C1 F
        return TRUE;
& _& r* l: R% q8 \% ~3 w) V4 O& {5 a}
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2011-7-1 20:58 | 显示全部楼层
回复 2# UG二次开发毕设
2 p2 T) g, F: j1 s- N; }3 Z9 x9 m我要的是用树形控件做的,你这是用列表控件做的,不过还是谢谢你!呵呵
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 08:54 , Processed in 0.207320 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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