|
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
' ^, K" a6 a, g8 B下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)" c& u3 R& L0 H# _& V
BOOL Database_main::OnInitDialog()
3 B; L. M9 ^% B5 z' v1 g V% v{
- V. Z! O; T" C% r5 @0 x7 m CDialog::OnInitDialog();- w" M: R, V4 B+ g, K( C
, b+ o: A; }( l // TODO: Add extra initialization here
. I2 Q4 F) [6 y9 p) b& v try{ # z, q& g# L: B2 G" N$ N( [ e+ n4 p. I
m_pdatabase=new CDatabase();
0 ?+ ?8 w6 F0 |+ w m_pset=new CRecordset();
- k: i5 H; b$ H$ E* U8 B m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);" [+ s1 H4 O0 e; k9 w/ e0 s
m_pset->m_pDatabase=m_pdatabase; % {9 D9 P) k0 U& l9 R2 J8 w( [
}% p8 ^8 @/ g, w! j- P( ?# Z
catch(CDBException* e){
9 f2 z( a6 b# J/ f e->ReportError();* @& c# H; C2 z0 V/ i" Q+ H
e->Delete();/ [- D" I! Y- W% i
delete m_pset;0 W# t2 Y! \& B* {
delete m_pdatabase;; m8 y2 R$ L/ f1 C9 s: C
return TRUE;}; l$ L! a+ `0 I5 ]1 B M3 C
DataShow("data");
1 o8 Q; l! w, I return TRUE; // return TRUE unless you set the focus to a control# ] z; Q- s8 ^2 y
// EXCEPTION: OCX Property Pages should return FALSE
- r! d) v+ H& V7 C K1 e, Y0 C}
: }- e2 k5 p( q6 B7 y G, M; b$ E5 e* d5 [( E3 O
void Database_main::OnOK()
, L, e2 \6 k u3 D7 z, Y4 `{
% d$ C$ _' L- x! g5 E4 |" Y // TODO: Add extra validation here
$ P' s* s! j4 g+ u( G UINT uSelectedCount=m_list_control.GetSelectedCount();- K m$ K5 A0 S
int nItemSel=0;% F( M8 t0 ]- F$ U$ D9 ~
nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
& f- q- |9 W# `( W2 i2 c0 D- J% V for(int j=0;j<nFieldCount;j++)
+ g+ d L( \1 j% Z- y3 }+ E5 n str[j]=m_list_control.GetItemText(nItemSel,j);6 E. @( Z4 `2 ?) J9 o1 s
}
. t" ]1 v" @" s. c- E2 W* R. V1 a, f, W$ k. @+ n
; S! f% C. _, m9 M6 U4 w% I8 |/ E
' N8 v x6 d G* W8 }& o6 x
5 J& l$ w8 z# z4 C3 D
CDialog::OnOK();* E: |: C( w: X; k0 w1 }7 o n
}6 n6 @- D5 }8 Q0 ?6 d; v
% E8 \+ j ]2 E' w" r* Wvoid Database_main::ClearList()
" H+ p7 T$ k) Z; E% U{
$ ]2 b/ @6 |8 M! R! E1 ^ j //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);* d; X$ @ t; I8 @1 [. `% z3 E# U
//m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);" `2 m& x2 O4 h3 t4 E+ P
m_list_control.DeleteAllItems();8 v4 D4 u- c" _- A2 C
while(m_list_control.DeleteColumn(0));; j$ W7 b- M5 \! X# x5 T* f
UpdateWindow();8 J3 o/ B( N9 [3 x1 K
}* k, ]" K% b" _" ]# I
////////////////////////////////////////////////////////////////////////////////////. c5 k+ p0 `% r8 _7 K
void Database_main: ataShow(CString table_name); K! K) s& w! p' t0 I% y9 A! K
{
7 d9 j$ |* U/ P. s ClearList();0 p: B |' O# X( }8 @' _# r$ U
CString strSQL;
; u4 s! |( v# C* Z strSQL="select * from "+table_name;
& v8 i# M/ x8 s ShowInformation(strSQL);
) c& N6 q6 v7 a. x" s}, m x4 Q z, x0 }
' h0 t6 S5 V+ |0 c* d! T+ e5 a
BOOL Database_main::ShowInformation(CString strSQL)
+ Z2 i0 N- W; P2 Y# f& {$ E{5 W7 _3 C+ Z! j2 n5 S6 ^
if(!m_pdatabase->IsOpen()) return FALSE;
4 z* H3 ^5 L+ y5 S8 `+ H if(!m_pset) return FALSE;
. M. D0 w- ]# S$ H" G. w0 q& B4 S' f try{9 l5 Y. L+ w. Y' o( a7 l! ~1 J
BeginWaitCursor();
1 d5 D6 V& D/ B7 w$ ~ if(m_pset->IsOpen()) m_pset->Close();
1 f p& H6 n* _( u: S1 z m_pset->Open(CRecordset::dynaset,strSQL);8 `& O+ C' _ p3 g; a9 `9 O; P
if(!m_pset->IsEOF())' Q3 r. ^7 s6 O+ z
{m_pset->MoveLast();
) N4 e9 ^6 V: p m_pset->MoveFirst();}& C" m, }" Y1 p* I- d0 Z1 `
nFieldCount=m_pset->GetODBCFieldCount();
7 ]( V) @+ A' x. i; ?" H CODBCFieldInfo fieldinfo;0 K3 `0 W V, q& n
for(int n=0;n<nFieldCount;n++){7 E7 y+ W9 i3 S9 [
m_pset->GetODBCFieldInfo(n,fieldinfo);
5 r6 }' k5 c2 R6 {9 q int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;. ?4 n- K9 L5 p$ Y _# q, G: P$ }
m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
. S0 ` H) d+ f }7 }, a) X7 r2 k/ b4 H5 V+ G9 O
CString strValue;
0 U' j- q* k4 J' ]& F1 V8 I m_pset->MoveFirst(); y4 X7 ]( N+ Z$ {0 ]% A5 f
int nCount=0;
! }3 \3 h( \; |0 H# `( [) P. [ while(!m_pset->IsEOF()){; {, m4 }$ c; H7 r$ }* H8 A. q
m_list_control.InsertItem(nCount,strValue);
) S6 [% {3 U' l1 z- M6 }* j4 Q- g for(int j=0;j<nFieldCount;j++){: R; H$ a( M" N6 A- ^! B
m_pset->GetFieldValue(j,strValue);! q2 r" c+ t$ G$ {. l
m_list_control.SetItemText(nCount,j,strValue);9 E4 l( y4 X6 r
}) g6 n r* }2 V2 O+ C6 v S
m_pset->MoveNext();5 Q! m* R3 a9 N6 J. q
nCount++;% a0 W# X) }5 Y5 w
}/ b# H3 `" n* u" I2 ?" q3 b
EndWaitCursor();1 V5 w) v+ m4 K5 T/ ?; }2 C" x! w9 N
}
. P7 h2 L2 ~' Y( i- }7 C catch(CDBException *e){
7 K1 h( W/ D, C- J7 u0 H% L' n; e e->Delete();6 R- ~" C) K" Z7 ?* A/ F
EndWaitCursor();4 a5 y' n$ I/ u6 `$ {. b
return FALSE;3 Z0 O0 {: y4 J+ r. W. T2 U. N
}+ s, D) v5 y& p4 `( q: k8 R/ w
return TRUE;+ ?2 a8 `. h+ w' ^: G' w# u# w/ x
} |
|