|
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS1 _* G& _) u4 E- e( F4 s) a
下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)9 c' Y, E$ x" g k3 K% @/ {6 F
BOOL Database_main::OnInitDialog() " {$ ~, p7 V% w3 H+ S
{4 ?9 Y7 m$ A; p+ r( H
CDialog::OnInitDialog();7 V |- H$ O; q. B
# @% J& H- H* Y
// TODO: Add extra initialization here. F7 U3 A5 O0 A M/ g
try{ ' G' d9 {% l8 F8 l! ?) F& n- I
m_pdatabase=new CDatabase();
& W' V) _" U2 V0 r% } m_pset=new CRecordset();
( y& Q7 _& t8 G m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);5 ?9 K x- u7 d% N1 h- x5 C
m_pset->m_pDatabase=m_pdatabase;
0 l( M2 `# ?. V0 t2 l2 W. X }
: {3 r/ c6 E: Y- P- u3 N# B catch(CDBException* e){
$ \. M. M9 _2 q' ?1 m- ~- ^ e->ReportError();% l" `% {( A, h6 z6 B( l) v
e->Delete();* S' I( W) j2 F! h* S/ Y
delete m_pset;
7 l: e# K& G" g; ~" k# h9 H* D0 A1 \( T delete m_pdatabase;3 K7 O1 |6 W7 i1 m* J
return TRUE;}6 s z8 c4 b+ f6 g# I I
DataShow("data");& j6 d( g0 P7 u4 C! e6 r, p
return TRUE; // return TRUE unless you set the focus to a control
! Z, J0 {4 ~* L+ X. g // EXCEPTION: OCX Property Pages should return FALSE
& g0 y) X: F) ]# q- G0 n5 O7 W}
' u. H6 |; N% a- v6 \. H+ l5 }. C" v k% k
void Database_main::OnOK()
+ l4 t* A9 |+ Q/ S/ p/ h2 t{) |, @9 ]3 X& ]1 N
// TODO: Add extra validation here9 B5 p6 V9 d. K; _1 f5 d' A' J; o# ?
UINT uSelectedCount=m_list_control.GetSelectedCount();( k, E9 S9 K& C" g
int nItemSel=0;
/ f, v+ C+ Q3 h+ r: w+ \7 _9 g R nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);, D7 F2 e/ l$ W" e) E2 V9 h' x7 r
for(int j=0;j<nFieldCount;j++)
6 ~* v+ m' V) m0 X: } str[j]=m_list_control.GetItemText(nItemSel,j);8 _# H) a$ Q$ P i2 r. h
}
3 s+ ?7 y. ]2 [+ P" b$ [+ t1 b L [
" f% |- y( Z) n0 g( c+ I6 w' A8 {3 ]6 [' y: {/ P+ c
4 W8 T# e+ O; {2 P- ?
& \& m9 k# p5 E; X# z' [' P CDialog::OnOK();- P7 a+ Q% G% W) N
}* ]2 f: V" K$ b$ S2 z* L
3 v$ x$ j7 g9 M" [
void Database_main::ClearList()
2 o" Z, \# X; C/ w; J; \0 ]{6 Y4 ~' J9 A0 M/ G4 H
//m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);3 i) q; I- I2 p
//m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
3 s2 s7 V9 H+ N: [. @, X* p m_list_control.DeleteAllItems();# ]4 R: ~8 q! ~0 V6 X
while(m_list_control.DeleteColumn(0));
8 D5 x0 e4 |! f" A$ O- D) z* y UpdateWindow();+ t5 w% H( Q) f# a
}
- A, h$ U6 m" P& K. }////////////////////////////////////////////////////////////////////////////////////) N* A* |1 n( \9 J% I
void Database_main: ataShow(CString table_name)! n, j% R6 z. p/ q
{4 j: L' y L1 E: l
ClearList();2 a+ v" y, t$ [! }- M- n0 y
CString strSQL;: e" c4 C3 m! C' C1 H
strSQL="select * from "+table_name;
9 K2 E. _& R$ | ShowInformation(strSQL);
4 M: h4 {5 t5 Z. i% c: h& G1 H# n}% l' y, c0 B0 s, N I3 H8 ]" N
! ^# u z+ ^% S( s9 _/ T1 @BOOL Database_main::ShowInformation(CString strSQL)
4 D5 P* c2 t, ?! R- X' C/ s) W{
: h; \# U6 e! H- Y2 K: D& p! w4 _- P if(!m_pdatabase->IsOpen()) return FALSE;
; ~+ F: p$ O$ ? if(!m_pset) return FALSE;& D2 p8 @9 _! T1 A
try{
) u3 }+ v+ x# C W2 P2 r BeginWaitCursor();
. S) M, p+ r9 {1 y+ z! P if(m_pset->IsOpen()) m_pset->Close();9 h( a! ]! y2 I, V1 o8 C, S4 K. E
m_pset->Open(CRecordset::dynaset,strSQL);
& U& S& m. c* j4 ^1 q if(!m_pset->IsEOF())
! c, b9 I9 ^* q/ u {m_pset->MoveLast();" q2 K+ G" y/ C
m_pset->MoveFirst();}# {5 m4 J. H! P: w# `1 j7 Y0 z8 t
nFieldCount=m_pset->GetODBCFieldCount();
# ~5 @+ S7 {6 d5 s& s8 _, Z CODBCFieldInfo fieldinfo;5 m3 _2 Z2 D+ u' P. L3 ~
for(int n=0;n<nFieldCount;n++){
: Q9 h i; L. A( V m_pset->GetODBCFieldInfo(n,fieldinfo);
! _& {' q L1 H5 V1 K- z2 e$ [% w int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
L* G/ P2 D/ C; b" M) @3 R& D m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);# W/ d# I9 \ Z; N0 Q
}
* K/ o. J* ]4 C/ R" t: z! r CString strValue;
, N M: A& G m. M m_pset->MoveFirst();
" J8 r+ U0 C$ h9 u" e& F' W int nCount=0;. E3 a3 ]! f( }+ \; Y. K5 E
while(!m_pset->IsEOF()){
1 I. _5 T- u& _9 L' i" \+ Z4 E h ?3 [ m_list_control.InsertItem(nCount,strValue); S1 `/ `, m* x9 `
for(int j=0;j<nFieldCount;j++){0 G9 ?! h$ a4 G: ~
m_pset->GetFieldValue(j,strValue);
& }0 F% ~4 a1 q: p) ] m_list_control.SetItemText(nCount,j,strValue);
% ^6 A0 l# @( k( d9 L% d- e9 z } g X8 v- j; X* h
m_pset->MoveNext();; r5 {# X5 W' _) _) q' C4 O
nCount++;
5 `+ k' g/ F, Q, p; J }( m) w8 R. y* e
EndWaitCursor();5 }8 ]. c2 {& g8 f! u) X
}' A5 _# o% d$ G: C
catch(CDBException *e){
2 l: g8 s' B6 x9 s e->Delete();: O5 ?! c: f+ d! O$ P; l( l& n7 e
EndWaitCursor();
1 t, Y: h# ^' Y$ m& u return FALSE;, O: c+ j( j- x1 F D1 i
}4 y( l) R8 Z# r6 X
return TRUE;
6 O, T: ~ n H$ _0 P1 g' `} |
|