|
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
& O; l }, b" j下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)/ e. ~ Q4 ?) N6 ~( x% F7 ^( C
BOOL Database_main::OnInitDialog() - H2 I* Y3 N3 m* M$ g! v
{; b6 I# b7 p$ S( v3 [0 X7 f- p& i
CDialog::OnInitDialog();1 o$ l3 }$ d; F$ m5 k
1 I% M0 ^- r8 t: t9 M
// TODO: Add extra initialization here, K. p, E# k; M- |: e7 |
try{
4 p; @) i5 O/ l% t" E8 v P3 m m_pdatabase=new CDatabase();8 R2 q2 {1 u. k0 n
m_pset=new CRecordset();
* f, K8 g# u9 [6 @5 s2 h' a m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);: J, {( d- c; K
m_pset->m_pDatabase=m_pdatabase;
; C! M" Y9 V' H \5 ^8 A6 p3 | }, z7 H1 r9 H2 |( {! i6 B" b. ]' `" f
catch(CDBException* e){# t% Q0 o* i" C
e->ReportError();0 [" ~1 B0 C" ~! A
e->Delete();+ _ a q: z% X& x0 ^$ i* s7 u
delete m_pset;, n4 [9 G' A; g- p' ^
delete m_pdatabase;, }0 V9 M. f# W4 u/ T; r$ |
return TRUE;}7 W v3 o& H0 k. l
DataShow("data");9 C J6 @2 z$ ?* s1 k$ k
return TRUE; // return TRUE unless you set the focus to a control9 {8 u6 E) }- q5 c: m, }! ^
// EXCEPTION: OCX Property Pages should return FALSE
, q1 ?/ u' V/ H# Q3 W! g}9 W( j5 o1 L5 d2 K* z, t/ R
" R. g! n8 A' O( X6 Z7 ]" nvoid Database_main::OnOK()
$ [5 S; P' i; G{* D0 {8 [; F+ n
// TODO: Add extra validation here
, v) |/ T* g' A6 T7 B UINT uSelectedCount=m_list_control.GetSelectedCount();
4 c: R: U2 {% o! s1 ]4 P! Rint nItemSel=0;
: c0 Q9 ]& b1 V( ]6 V6 b nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
6 C* x& l$ o7 e/ p( v) G( P for(int j=0;j<nFieldCount;j++), l `# w# z6 b$ q q2 a( L; N
str[j]=m_list_control.GetItemText(nItemSel,j);
, J9 {7 S, A: J, t }
+ z) \8 P, ]5 ?: [% d! p, u
2 i, y+ p/ x# J) s
; |2 s) ^. N) z$ N9 d7 Q
+ j/ i6 L3 J) c/ [' ?9 E1 V
( d2 [- p% \. n4 C4 {! u7 t CDialog::OnOK();
9 X/ D3 @0 _' e) w& d6 G}
7 O+ ?7 B- x. f' g0 v2 x4 e# i: B1 k" Y2 H0 s/ x
void Database_main::ClearList()
5 t1 Z7 ~" s" ]5 w{6 C1 h0 y# K* K! h& R: h
//m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
$ L; W( n5 a6 v: y. Q) F9 Q$ N //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
% {" K0 p1 \ q m_list_control.DeleteAllItems();
5 L+ d5 @* `+ }- c! Y while(m_list_control.DeleteColumn(0));/ K6 c9 e5 T* _
UpdateWindow();
2 d, l5 O4 ~8 K7 w5 s! K! L) W}3 H' O' p( A. i6 G1 V/ i- ?/ M
////////////////////////////////////////////////////////////////////////////////////4 P7 |! X. W, n1 C
void Database_main: ataShow(CString table_name)
e" T7 d+ \0 X; _# i% M) q{* j1 @8 w0 a6 @" l0 C0 t
ClearList();# ^- b0 O( U' Z. a
CString strSQL;+ O' j, H( J. P7 `5 |6 e% r# u
strSQL="select * from "+table_name;4 @) e5 r& } }+ U
ShowInformation(strSQL);
- C6 U+ K& ?: e- K$ K( A) i}
9 q& r0 P0 B- j
# b! [; r' |2 D: EBOOL Database_main::ShowInformation(CString strSQL)
! N8 ^8 d+ L6 ?+ B( a& b{
; L( K+ `! Y; z3 c9 H4 {4 I if(!m_pdatabase->IsOpen()) return FALSE;
, o* l6 J- b4 c+ [! l f5 F if(!m_pset) return FALSE;
3 `7 p! m& e1 P4 s3 c" v0 D" I# s try{
& u% u5 k' }6 |: w3 p+ r) I, ?% _# q BeginWaitCursor();9 W- Y) a- I2 b+ ?4 H
if(m_pset->IsOpen()) m_pset->Close();
; N6 y6 S. U3 N! y m_pset->Open(CRecordset::dynaset,strSQL);
. N$ b- ]( G6 n1 E( p if(!m_pset->IsEOF())
1 F* Q! N/ T2 Q& A8 H {m_pset->MoveLast();1 X6 B7 f2 z i. @1 q9 Z4 X
m_pset->MoveFirst();}
3 g; ?) D2 i+ N9 J# J* {$ l* o nFieldCount=m_pset->GetODBCFieldCount();2 q" q- X. y% W
CODBCFieldInfo fieldinfo; E9 F; K: ^/ Q O" y/ V
for(int n=0;n<nFieldCount;n++){* c! |2 Y1 J3 i5 Y! J) a7 b
m_pset->GetODBCFieldInfo(n,fieldinfo);% V* @9 Z% J9 Y$ o* s- m. |
int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
) R' U* r X+ ] m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);, o9 F4 [: ^/ p( a8 P1 I! i' h/ a
}
0 Y% F% s6 p% \5 D7 j* W CString strValue;) |& m: c) ^8 C8 f0 a& f/ M* S: x- L
m_pset->MoveFirst();
& g- G% v* K" v* V, l* b int nCount=0;5 @1 U& z3 H% V1 j0 p8 @
while(!m_pset->IsEOF()){
/ W* Z3 b' ~7 V m_list_control.InsertItem(nCount,strValue);
' ?. I, ]7 i& ^* U& _ for(int j=0;j<nFieldCount;j++){
- P6 H$ u3 S) a+ ~( O6 \" d m_pset->GetFieldValue(j,strValue);, ^$ I' n1 \& o X- O' k; B
m_list_control.SetItemText(nCount,j,strValue);+ |/ h$ J, Z1 ]+ s+ U+ L8 Y# w4 ~
}% G1 ?0 p. @& j. `
m_pset->MoveNext();# U. t- u \) e4 @! z3 @/ ~/ F
nCount++;4 `- q* k4 P, G/ X" y8 |
}" |5 _8 G, _& e2 f% E9 I: z
EndWaitCursor();
. [, l9 h6 E6 W9 k4 k) E) _ }
, a* ]: s$ i, ^& e0 A, Q4 f catch(CDBException *e){8 `0 G. ?7 u h, I ?' s Z `0 v
e->Delete();- j+ ]$ A1 T' `! {! o% `8 ^+ I
EndWaitCursor();7 L2 A1 @- E9 B2 L6 y
return FALSE;3 y2 Z! L* X. S$ w+ L A' z: h9 @6 V
}6 U1 i* a: T+ G, }
return TRUE;3 _# K' }6 @3 i7 Q- [8 J" K
} |
|