青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2011-6-22 17:43 | 显示全部楼层 |阅读模式
我想用MFC的树形控件做个零件导航器,树形控件要和数据库连接(显示数据库里的数据),我用的是ACCESS数据库,自己怎么都没做不出来,网上的资料都是用MFC(EXE)单文档做的,我要用MFC中的dll,该怎么办啊?请高手救命啊,最好能有段实例代码,感激不尽!
发表于 2011-6-24 10:45 | 显示全部楼层
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
% C' Q% ^* p& r. G5 d, J/ ?# {下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)6 F% z! x8 U+ [; Z8 \! g  [
BOOL Database_main::OnInitDialog() ( I+ n2 x/ u# v- x' V
{
; o, }# C! o7 \8 ?2 s        CDialog::OnInitDialog();
8 v3 z6 o4 `& M6 J" }) _& p        $ a& @/ a$ V4 V, Y6 ]
        // TODO: Add extra initialization here
  c1 G- l; {8 |) C) O& i# [                try{       
$ l) R' w: y+ K( C2 T5 \0 w% L        m_pdatabase=new CDatabase();* q* F% Y: j1 w& S
        m_pset=new CRecordset();
% M; _! {2 T' n" w) P    m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);. b9 ^2 A. q, H- t
        m_pset->m_pDatabase=m_pdatabase;        ) L& T! Z; f8 A
        }
& e- ~* s$ u+ e        catch(CDBException* e){
0 C. M/ g& ~% p9 d' x                e->ReportError();
4 r, H$ F. a5 s) Z- i( }8 v        e->Delete();# A4 V. |, Z9 @# M6 J
            delete m_pset;8 J! M( `- y3 @3 `$ e: [/ R% Y
                delete m_pdatabase;, e/ N. K1 u) f! w
                return TRUE;}
1 D" Q* T4 p% e4 @- T: D        DataShow("data");
% a0 N. u" {0 |" }9 r9 G        return TRUE;  // return TRUE unless you set the focus to a control; b6 X0 C; b: ]) N- I3 {8 r
                      // EXCEPTION: OCX Property Pages should return FALSE
$ w3 u6 Y+ j6 ?) e}
; a; t7 m% @: F; h$ a- d" J$ c3 ~7 u, v9 h" T
void Database_main::OnOK()
7 X7 ~+ H, _$ \6 G9 W- D# z# d{
# ^6 K9 X% [+ N: I- V  R        // TODO: Add extra validation here" R) F1 ?+ ]7 e: i7 n; |
   UINT uSelectedCount=m_list_control.GetSelectedCount();) K' O( I4 D& K5 R& w( g$ A
int nItemSel=0;; k$ p& e- K# ]: Z( G
        nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);! ~! d4 O5 Z0 B8 l' u# i* y
                for(int j=0;j<nFieldCount;j++)7 ^5 d* O1 J* q1 |5 |3 n
                    str[j]=m_list_control.GetItemText(nItemSel,j);( y$ ^, c5 \0 a: v: i, j
        }: {4 L! {+ b) |$ |

% v5 }8 e1 u% a4 ^1 F
; _4 }) r& O- L; G& k  i9 h9 P9 y: x9 m. ^( o& {, V0 V+ E1 o+ ^
       
/ `/ j/ i. _1 |4 m+ m        CDialog::OnOK();. V  J* o2 b: ^3 c% Y6 g+ \
}
7 ^5 ^/ T, X$ y
- d: M! N  r& K" r0 k: t6 gvoid Database_main::ClearList()8 {  H# ]: E- U6 X
{
6 X5 v+ S9 p! e5 G5 G. |        //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);+ X$ r# D  D( T( r6 \8 z6 v- f
        //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
; O6 r( @+ w4 E) g        m_list_control.DeleteAllItems();
, v7 m* ]' [& c/ y6 {        while(m_list_control.DeleteColumn(0));
. }, U1 H. P2 I( C! u! F! x+ J    UpdateWindow();
% q: s, w" ^3 c# n}
4 a6 w6 j8 N# O- t" X. l7 e+ A3 o////////////////////////////////////////////////////////////////////////////////////& W/ \; m# Y0 d1 O$ F$ M
void Database_main:ataShow(CString table_name)+ j) J5 H' d9 }  L  d  {
{9 l# L; S( B( P, T0 n( z
    ClearList();( J6 \1 m% v. d
    CString strSQL;
; j; I: r# j0 [2 [4 e; c# \        strSQL="select * from "+table_name;2 p9 b6 k3 Q5 t& k- D1 z- o7 E
        ShowInformation(strSQL);
9 M9 V  ]& O8 \% x$ B$ [2 q}! ~0 b% Z2 M1 F
0 [9 C. i4 N; |/ q
BOOL Database_main::ShowInformation(CString strSQL). J8 E6 H, C* V. r; T% L
{
% w$ {, B* C* e8 _    if(!m_pdatabase->IsOpen()) return FALSE;
; L4 d5 y! |$ j! ?* M        if(!m_pset) return FALSE;
7 e( P) J; X& g( U3 i        try{2 z* c% h7 [9 Y8 y$ O4 Z
                BeginWaitCursor();4 P( G9 a4 n6 \/ k$ I# b
                if(m_pset->IsOpen()) m_pset->Close();
2 ?) F0 M& o4 ~, x$ `7 X5 _/ z                m_pset->Open(CRecordset::dynaset,strSQL);
1 s$ ?% Q( s; P6 N                if(!m_pset->IsEOF())
) s, B# y- I/ s! {4 w; `" V. A                {m_pset->MoveLast();
  A2 T/ x0 R6 }$ M) m                m_pset->MoveFirst();}" g; ?. B! z) ~. S' T. c& G/ A
                nFieldCount=m_pset->GetODBCFieldCount();1 s. s. p% g8 |, e2 f: v: D- K
                CODBCFieldInfo fieldinfo;
9 v% E) _+ D' \                for(int n=0;n<nFieldCount;n++){3 u2 T% P7 O' _4 {; z
                        m_pset->GetODBCFieldInfo(n,fieldinfo);
* ~, }0 p+ a4 @- U; p                        int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
' L8 b- S3 X( w) {! V                        m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);$ Z7 A# Q- z2 T, ]" l
                }7 E* y$ l& I5 W" D3 A, u% C
                CString strValue;
$ }) u, J; B- D  @                m_pset->MoveFirst();
7 R2 y7 w* a6 m& _" n                int nCount=0;/ j! J; t' J7 H; h
                while(!m_pset->IsEOF()){
/ ?! K6 v/ X" y5 o& R                        m_list_control.InsertItem(nCount,strValue);$ ~6 C0 i9 ^4 `: T
                        for(int j=0;j<nFieldCount;j++){& h& X+ Y" q% ?3 ]  H* t1 @# c
                                m_pset->GetFieldValue(j,strValue);
1 q" T3 Z1 _# H5 w& n                                m_list_control.SetItemText(nCount,j,strValue);
7 H+ l' _# }% h  }5 k                        }4 E/ V4 ]2 f7 v3 D: T* ~% M4 R
                        m_pset->MoveNext();, |- x( B2 _/ N+ z& H4 }8 E. J1 A
                        nCount++;, `8 w4 H4 F5 D5 U* D1 b1 B
                }0 r8 k% X$ a. c: k1 z* L  e0 C
                EndWaitCursor();
% i/ S" a8 W1 d  [" w9 p        }
, H2 B# ^2 ]! Y- X        catch(CDBException *e){
2 e" J* c* ^4 p, e1 ^$ R                e->Delete();$ [( a9 X$ J$ P+ a# x
        EndWaitCursor();5 P+ E4 l" h; F" A4 b( s# R
                return FALSE;
& f) c3 A* [$ X7 I        }- g8 B$ z. S* |' i
        return TRUE;
. m7 q, h7 z  O3 g}
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2011-7-1 20:58 | 显示全部楼层
回复 2# UG二次开发毕设
+ r6 @2 l8 h" i. Z  N我要的是用树形控件做的,你这是用列表控件做的,不过还是谢谢你!呵呵
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 18:21 , Processed in 0.052541 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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