|
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
6 M. R- d4 `& Z" x" ^& E下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)
6 U# s+ v' E* P1 G- j! |) JBOOL Database_main::OnInitDialog()
/ B2 n$ g) E+ @6 z: Y% P2 K0 @{
% N) J; n- ]8 v- S0 R3 o2 l CDialog::OnInitDialog();# S2 W1 L" B5 @/ O$ ^4 y5 @1 X
$ H! N/ u0 l' X3 G8 m+ g1 T // TODO: Add extra initialization here7 z1 t! w3 v. b& ~ t4 t B1 U
try{ 9 o) \6 ?% M7 V$ b( Q% |* g4 ~0 s( u
m_pdatabase=new CDatabase();
. Q8 e' W* `: k3 Z2 u& j% o: K; c m_pset=new CRecordset();8 ?/ {9 F& K( c& S8 t1 g7 b
m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
& z) L7 p9 {8 b, ^) d m_pset->m_pDatabase=m_pdatabase; . U" R* X+ \# D4 G" ^9 u% c. E
}
# ?7 E4 H1 c: w% m; y catch(CDBException* e){& ^' G) k# ]3 X- N- z9 k4 S) h
e->ReportError();7 y2 k) c1 g8 m1 g: C* r1 d
e->Delete();# U7 ~, X+ _/ r4 }
delete m_pset;
, W( E5 y2 h) P: x# s: B+ I$ H delete m_pdatabase;
/ G, [+ p( l2 C( a return TRUE;}
" K; b8 o- H& o- m8 s DataShow("data");
3 u7 B( B8 z/ H B* `2 T8 g; z) \! r return TRUE; // return TRUE unless you set the focus to a control
* A/ T5 u" w3 t! ?1 s0 j // EXCEPTION: OCX Property Pages should return FALSE. ]& z5 ?% @9 R0 ~- g" ]
}: Y' W4 [) z, e4 R6 A. a3 m4 R- q. `
. V. i: t8 d* T# C5 O/ V& } O
void Database_main::OnOK()
, F0 I- Z0 @* i% V{1 x; U1 k0 D( N+ C
// TODO: Add extra validation here$ C6 C) q) N' {# y' u
UINT uSelectedCount=m_list_control.GetSelectedCount();2 j) ~* p0 _$ y5 ?
int nItemSel=0;
4 i6 Y7 r# ]! V1 T+ N nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);9 b5 ^& f! d1 ]* M5 a2 W
for(int j=0;j<nFieldCount;j++)& l3 W2 U$ Y* Z- p, t% i- s* H0 w+ o
str[j]=m_list_control.GetItemText(nItemSel,j);: r' ~! @, | A+ h$ q+ [8 O
}
+ T% u1 f! j, T* |7 E+ ?1 f+ \# e$ w
* t3 C( U8 r- \/ M/ E" V+ y; k7 ^0 `
9 [6 I9 o7 P0 z' ?( [% Z
4 B4 `/ A4 ~1 ?- x) y7 T2 l0 e
CDialog::OnOK();
8 j/ Y6 h8 C3 }! n& |" W}
4 P2 ^9 f0 n' M' F. l6 k* p! o6 L. c( e9 d1 n/ a! m
void Database_main::ClearList()) X4 E' t/ \ R0 }7 ^+ U$ F4 r
{6 A9 v! d/ i3 g# t* {; V; F1 u
//m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT); h0 _9 o/ `. h6 ^1 ?" I$ e* Q
//m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
' O( Q0 M& F+ D6 U/ a m_list_control.DeleteAllItems();! H; k$ H" z: e
while(m_list_control.DeleteColumn(0));# N1 d' o8 i. E. E
UpdateWindow(); k4 _" k. \6 j7 z b( U6 q
}
0 d C0 B6 z( Z' p////////////////////////////////////////////////////////////////////////////////////- m# s% l0 R; k' _, Y
void Database_main: ataShow(CString table_name)2 r: x9 K# @) T; @
{
) Q7 z8 g( W. [" V ClearList();
+ z K; Y3 {/ S7 B$ n CString strSQL;1 g$ e- C0 H B% m& r. \' e3 \
strSQL="select * from "+table_name;
. F+ S' z9 M0 R/ l0 v+ n7 b ShowInformation(strSQL);
6 }# P" G& ?- M# ?7 ^; ]}
R# Y7 N$ I( B, U
2 |4 f$ q7 A" o) h7 q% l. bBOOL Database_main::ShowInformation(CString strSQL)- {2 W$ m0 `2 e h6 P: P0 ^
{
+ L* H& b2 B& ?1 r if(!m_pdatabase->IsOpen()) return FALSE;& J/ l2 G, P6 b/ T: m9 P: m8 Z
if(!m_pset) return FALSE;
$ K' H3 {7 b, r2 N. O+ B, y, c9 | try{1 |1 y9 C8 N8 Y. {0 C
BeginWaitCursor();
. _% o1 l0 n' e6 s- W, {9 P5 a if(m_pset->IsOpen()) m_pset->Close();
7 O; o. t) x9 C6 ~% X m_pset->Open(CRecordset::dynaset,strSQL);
0 ?- u+ f2 v% \: ^' D; [ if(!m_pset->IsEOF())2 F# H" E1 D& |* `6 f) _
{m_pset->MoveLast();
, k) q# H4 s- d7 x9 _! Z m_pset->MoveFirst();}$ \) t8 Q: m- @& r
nFieldCount=m_pset->GetODBCFieldCount();
4 X {( L$ d" B P# ]: u7 f CODBCFieldInfo fieldinfo;
4 A' b! s, C' p* F, h% E' o/ b for(int n=0;n<nFieldCount;n++){
; I4 B6 U1 e0 P6 X" j m_pset->GetODBCFieldInfo(n,fieldinfo);% c2 N+ F, H2 R( d1 J
int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
* L1 x2 Q+ q1 `- [1 _* ~ m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);. I7 Z# } Z: `9 \3 Z5 s
}8 d6 G6 V9 r$ e O
CString strValue;4 {7 k5 n) D0 ?/ H# P( K* b3 Y
m_pset->MoveFirst();
$ f: z" @$ J) q, s int nCount=0;8 ^4 z; p: D7 e. s
while(!m_pset->IsEOF()){* v* H- e* c( O: B
m_list_control.InsertItem(nCount,strValue);0 @# [+ U3 N. \$ W8 ?
for(int j=0;j<nFieldCount;j++){
+ Y; g4 |$ l+ O v; F/ s1 h: O m_pset->GetFieldValue(j,strValue);4 |+ I& B8 Z. g/ Y9 Y
m_list_control.SetItemText(nCount,j,strValue);
# M7 S# Z+ i) k5 i0 F& G7 r' o# {6 D }
" o0 s+ D, F' i: l* a+ g# S m_pset->MoveNext();% |* Z9 n8 _" E0 f" f
nCount++;: k3 G9 }0 q1 x7 v% n4 p0 z+ U9 Q
}
9 c- Q& f* L6 {/ ]" C EndWaitCursor();2 R1 i& c. q& \/ F) g
}
0 N) ]0 r4 F# n" i0 r catch(CDBException *e){
9 G/ S7 x! a3 [8 d2 B P e->Delete();0 J- l Q7 C5 q: n5 a
EndWaitCursor();! I6 F2 Y! A2 y2 c' g
return FALSE;
( r$ k( w! l0 d0 Z/ ~: b1 K, { }
3 f3 @; h; q0 N" U, a6 | return TRUE;1 I) D' S6 H$ S2 n9 D9 f0 V
} |
|