青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2011-6-22 17:43 | 显示全部楼层 |阅读模式
我想用MFC的树形控件做个零件导航器,树形控件要和数据库连接(显示数据库里的数据),我用的是ACCESS数据库,自己怎么都没做不出来,网上的资料都是用MFC(EXE)单文档做的,我要用MFC中的dll,该怎么办啊?请高手救命啊,最好能有段实例代码,感激不尽!
发表于 2011-6-24 10:45 | 显示全部楼层
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
4 J$ L" O; l1 r6 k2 x1 u7 u下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)9 j) m; S, \& I" `/ {3 t6 Q  L
BOOL Database_main::OnInitDialog()
& ^+ b. I  Y/ A/ p* `% Q2 ^{' u  n* w1 y- \" P7 v# @4 @
        CDialog::OnInitDialog();
9 I7 H* r/ G, s& u4 ^" [; s        6 L/ P/ Q: h: ?% u
        // TODO: Add extra initialization here5 y( M1 \8 I" L: ~2 S& P( K" h
                try{       
2 r; C3 i' A* y3 m8 V3 k  o        m_pdatabase=new CDatabase();
' I  W" I, t) Z- X: k        m_pset=new CRecordset();
' ?5 A$ l$ K) Y, L6 m. N; i5 v1 \    m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
, A  S- N! ^$ p1 [  ~        m_pset->m_pDatabase=m_pdatabase;       
6 h+ f  E' C, I+ }: h8 |        }$ D1 G: Z  H* q6 l, Y
        catch(CDBException* e){9 A: A; r1 K# \; G) w6 r/ t
                e->ReportError();, T7 n0 @6 E; l. q
        e->Delete();
) r. Q& p7 y5 F3 O3 F) f' |  o4 @            delete m_pset;
  U5 J" [7 M1 ]1 F: C                delete m_pdatabase;
6 ~9 n& q- l2 ]$ g* F! X  c                return TRUE;}7 p- Y2 f/ _7 n0 b9 ?+ t/ Q
        DataShow("data");9 E' k8 T9 d' b# z3 O
        return TRUE;  // return TRUE unless you set the focus to a control
9 Y0 C6 Z0 {! ]+ u                      // EXCEPTION: OCX Property Pages should return FALSE
# I, D: c) ]  l, }1 H  k% e: }}
5 u6 ~' j- Q: x2 e- M
: l1 i2 N6 [, T/ nvoid Database_main::OnOK() 5 j3 B+ t% {# {
{
4 j4 ]9 c: O1 A* F        // TODO: Add extra validation here
# E! s* _+ I3 k   UINT uSelectedCount=m_list_control.GetSelectedCount();
) V5 `% i7 c) \( t9 Fint nItemSel=0;1 z: k! Q/ T: U' f5 r4 F3 j
        nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);1 y! s$ p' X* x" G
                for(int j=0;j<nFieldCount;j++)! s, @% ~5 y# ]- _
                    str[j]=m_list_control.GetItemText(nItemSel,j);+ C& z# O% \  z4 v$ L  N3 O- [
        }
- ~2 I& P" D& D* J0 l% B) Z1 i7 r( ]# E: P7 O7 H
9 N# X+ E# J9 S" H  n, b
8 _  H9 n. Z0 i4 b. Y0 u& B/ B& g
        . T5 W: h- O) x1 x% c
        CDialog::OnOK();. s" E# `3 K, E$ B& P
}4 E0 P6 p$ ~" u% r

  d. I6 i$ }2 y5 ]% J% \2 Zvoid Database_main::ClearList()
8 S5 i# R7 ]$ ^5 Z! G/ n! Y: a{
0 K2 I% d- I3 Q  D4 E        //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
1 H" |" ^; s% Q! G# Z; i- {/ p        //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
0 `0 T# z0 E# l9 l        m_list_control.DeleteAllItems();
8 M! z7 g# H6 T% ^) r! A+ ?$ Z        while(m_list_control.DeleteColumn(0));
$ G# r# o8 l$ o$ S0 x% u& O* Z    UpdateWindow();# E# I, g& ~2 P# i6 y0 i' H2 I- K, i
}
9 v% P2 Q# C0 h! `0 a////////////////////////////////////////////////////////////////////////////////////
5 X% j$ w) {( B) C7 f0 Fvoid Database_main:ataShow(CString table_name)3 L  f; Y* f9 c% q/ U+ j* E4 b: q+ _
{* ?' k* D# Q( Q
    ClearList();
# [0 X; Y! e; Z* ?    CString strSQL;. P: w! e8 W2 f- P9 v4 S
        strSQL="select * from "+table_name;
& @: G- y3 u0 Z; }9 D        ShowInformation(strSQL);8 \, \, o- E2 a, f- Z4 W2 F* w" V
}: P& s( }6 L8 Y5 z: V) h
) R5 B# g: F: U: F6 z* D
BOOL Database_main::ShowInformation(CString strSQL)
& o0 K0 _" e+ z: d% ?{
' }3 l; c$ m6 m9 F- \" `    if(!m_pdatabase->IsOpen()) return FALSE;
+ _8 a$ S" b( i* W- r' h1 s        if(!m_pset) return FALSE;8 T. V3 U- N( q' k, r
        try{% F$ _0 e* O4 f
                BeginWaitCursor();8 L% h% i" w: C
                if(m_pset->IsOpen()) m_pset->Close();
4 o6 ?6 v! D! [% ~, d( Q7 r                m_pset->Open(CRecordset::dynaset,strSQL);3 j7 x" E# ?! ?
                if(!m_pset->IsEOF())8 L# n% X; R, A5 z3 R# C
                {m_pset->MoveLast();
- U) e; D' i" }% P% U# ]' e                m_pset->MoveFirst();}% d0 q. G1 [7 q% g. @( G( S  [* g
                nFieldCount=m_pset->GetODBCFieldCount();+ V! n- {! j$ y, N% l# F1 b5 C
                CODBCFieldInfo fieldinfo;
$ g- V1 e: T+ U1 V                for(int n=0;n<nFieldCount;n++){! a' W' t: @9 V
                        m_pset->GetODBCFieldInfo(n,fieldinfo);
6 N; }, S0 D7 i                        int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;4 `8 d. L; I7 `
                        m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);' G' u5 w* h9 }9 d7 _. R0 ^
                }0 F! m2 P; h: P0 i/ t3 C
                CString strValue;  y, J/ v9 s6 k
                m_pset->MoveFirst();  e7 X$ f$ ]9 g  Z
                int nCount=0;
( o8 h" R" j  T7 P1 Q" @6 f; H3 g1 U                while(!m_pset->IsEOF()){
- S5 n! h2 @; R( F  Z" q                        m_list_control.InsertItem(nCount,strValue);
! g; ^. z8 |. f" w3 m* R                        for(int j=0;j<nFieldCount;j++){$ r+ q4 u5 _& m+ f/ ?2 a2 ~" y
                                m_pset->GetFieldValue(j,strValue);0 a1 H* ~1 x* k
                                m_list_control.SetItemText(nCount,j,strValue);  Q+ H% l3 c; v" ?0 Q; |
                        }2 a( w0 C, b: p
                        m_pset->MoveNext();
9 X: T/ N. N' |. [5 g# Y                        nCount++;' M3 t7 \* W2 Y  n
                }1 x  g. a! c2 O; |' [* E9 R
                EndWaitCursor();5 x0 l! o5 c& f
        }" l5 {% y2 [. z5 ]) t+ b% Y
        catch(CDBException *e){/ `2 M' k/ P; P( g. h
                e->Delete();% h: H+ @( T4 F6 Y6 ^" \
        EndWaitCursor();
- L' p; r; M; i5 i( T' F                return FALSE;
% `( _# b# t# M: R' v        }# {9 o) x6 J) x/ h( `
        return TRUE;
& U* `6 k. d: \5 y4 e1 Y9 Q}
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2011-7-1 20:58 | 显示全部楼层
回复 2# UG二次开发毕设
+ }. h( j( c, A: F2 F+ W. ]) _4 l$ e8 _我要的是用树形控件做的,你这是用列表控件做的,不过还是谢谢你!呵呵
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:53 , Processed in 0.062663 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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