|
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
4 J$ L" O; l1 r6 k2 x1 u7 u下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)9 j) m; S, \& I" `/ {3 t6 Q L
BOOL Database_main::OnInitDialog()
& ^+ b. I Y/ A/ p* `% Q2 ^{' u n* w1 y- \" P7 v# @4 @
CDialog::OnInitDialog();
9 I7 H* r/ G, s& u4 ^" [; s 6 L/ P/ Q: h: ?% u
// TODO: Add extra initialization here5 y( M1 \8 I" L: ~2 S& P( K" h
try{
2 r; C3 i' A* y3 m8 V3 k o m_pdatabase=new CDatabase();
' I W" I, t) Z- X: k m_pset=new CRecordset();
' ?5 A$ l$ K) Y, L6 m. N; i5 v1 \ m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
, A S- N! ^$ p1 [ ~ m_pset->m_pDatabase=m_pdatabase;
6 h+ f E' C, I+ }: h8 | }$ D1 G: Z H* q6 l, Y
catch(CDBException* e){9 A: A; r1 K# \; G) w6 r/ t
e->ReportError();, T7 n0 @6 E; l. q
e->Delete();
) r. Q& p7 y5 F3 O3 F) f' | o4 @ delete m_pset;
U5 J" [7 M1 ]1 F: C delete m_pdatabase;
6 ~9 n& q- l2 ]$ g* F! X c return TRUE;}7 p- Y2 f/ _7 n0 b9 ?+ t/ Q
DataShow("data");9 E' k8 T9 d' b# z3 O
return TRUE; // return TRUE unless you set the focus to a control
9 Y0 C6 Z0 {! ]+ u // EXCEPTION: OCX Property Pages should return FALSE
# I, D: c) ] l, }1 H k% e: }}
5 u6 ~' j- Q: x2 e- M
: l1 i2 N6 [, T/ nvoid Database_main::OnOK() 5 j3 B+ t% {# {
{
4 j4 ]9 c: O1 A* F // TODO: Add extra validation here
# E! s* _+ I3 k UINT uSelectedCount=m_list_control.GetSelectedCount();
) V5 `% i7 c) \( t9 Fint nItemSel=0;1 z: k! Q/ T: U' f5 r4 F3 j
nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);1 y! s$ p' X* x" G
for(int j=0;j<nFieldCount;j++)! s, @% ~5 y# ]- _
str[j]=m_list_control.GetItemText(nItemSel,j);+ C& z# O% \ z4 v$ L N3 O- [
}
- ~2 I& P" D& D* J0 l% B) Z1 i7 r( ]# E: P7 O7 H
9 N# X+ E# J9 S" H n, b
8 _ H9 n. Z0 i4 b. Y0 u& B/ B& g
. T5 W: h- O) x1 x% c
CDialog::OnOK();. s" E# `3 K, E$ B& P
}4 E0 P6 p$ ~" u% r
d. I6 i$ }2 y5 ]% J% \2 Zvoid Database_main::ClearList()
8 S5 i# R7 ]$ ^5 Z! G/ n! Y: a{
0 K2 I% d- I3 Q D4 E //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
1 H" |" ^; s% Q! G# Z; i- {/ p //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
0 `0 T# z0 E# l9 l m_list_control.DeleteAllItems();
8 M! z7 g# H6 T% ^) r! A+ ?$ Z while(m_list_control.DeleteColumn(0));
$ G# r# o8 l$ o$ S0 x% u& O* Z UpdateWindow();# E# I, g& ~2 P# i6 y0 i' H2 I- K, i
}
9 v% P2 Q# C0 h! `0 a////////////////////////////////////////////////////////////////////////////////////
5 X% j$ w) {( B) C7 f0 Fvoid Database_main: ataShow(CString table_name)3 L f; Y* f9 c% q/ U+ j* E4 b: q+ _
{* ?' k* D# Q( Q
ClearList();
# [0 X; Y! e; Z* ? CString strSQL;. P: w! e8 W2 f- P9 v4 S
strSQL="select * from "+table_name;
& @: G- y3 u0 Z; }9 D ShowInformation(strSQL);8 \, \, o- E2 a, f- Z4 W2 F* w" V
}: P& s( }6 L8 Y5 z: V) h
) R5 B# g: F: U: F6 z* D
BOOL Database_main::ShowInformation(CString strSQL)
& o0 K0 _" e+ z: d% ?{
' }3 l; c$ m6 m9 F- \" ` if(!m_pdatabase->IsOpen()) return FALSE;
+ _8 a$ S" b( i* W- r' h1 s if(!m_pset) return FALSE;8 T. V3 U- N( q' k, r
try{% F$ _0 e* O4 f
BeginWaitCursor();8 L% h% i" w: C
if(m_pset->IsOpen()) m_pset->Close();
4 o6 ?6 v! D! [% ~, d( Q7 r m_pset->Open(CRecordset::dynaset,strSQL);3 j7 x" E# ?! ?
if(!m_pset->IsEOF())8 L# n% X; R, A5 z3 R# C
{m_pset->MoveLast();
- U) e; D' i" }% P% U# ]' e m_pset->MoveFirst();}% d0 q. G1 [7 q% g. @( G( S [* g
nFieldCount=m_pset->GetODBCFieldCount();+ V! n- {! j$ y, N% l# F1 b5 C
CODBCFieldInfo fieldinfo;
$ g- V1 e: T+ U1 V for(int n=0;n<nFieldCount;n++){! a' W' t: @9 V
m_pset->GetODBCFieldInfo(n,fieldinfo);
6 N; }, S0 D7 i int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;4 `8 d. L; I7 `
m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);' G' u5 w* h9 }9 d7 _. R0 ^
}0 F! m2 P; h: P0 i/ t3 C
CString strValue; y, J/ v9 s6 k
m_pset->MoveFirst(); e7 X$ f$ ]9 g Z
int nCount=0;
( o8 h" R" j T7 P1 Q" @6 f; H3 g1 U while(!m_pset->IsEOF()){
- S5 n! h2 @; R( F Z" q m_list_control.InsertItem(nCount,strValue);
! g; ^. z8 |. f" w3 m* R for(int j=0;j<nFieldCount;j++){$ r+ q4 u5 _& m+ f/ ?2 a2 ~" y
m_pset->GetFieldValue(j,strValue);0 a1 H* ~1 x* k
m_list_control.SetItemText(nCount,j,strValue); Q+ H% l3 c; v" ?0 Q; |
}2 a( w0 C, b: p
m_pset->MoveNext();
9 X: T/ N. N' |. [5 g# Y nCount++;' M3 t7 \* W2 Y n
}1 x g. a! c2 O; |' [* E9 R
EndWaitCursor();5 x0 l! o5 c& f
}" l5 {% y2 [. z5 ]) t+ b% Y
catch(CDBException *e){/ `2 M' k/ P; P( g. h
e->Delete();% h: H+ @( T4 F6 Y6 ^" \
EndWaitCursor();
- L' p; r; M; i5 i( T' F return FALSE;
% `( _# b# t# M: R' v }# {9 o) x6 J) x/ h( `
return TRUE;
& U* `6 k. d: \5 y4 e1 Y9 Q} |
|