|
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
/ \8 S0 h& }0 \8 \ A+ n下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)0 t0 Y- ~: q/ t
BOOL Database_main::OnInitDialog()
) Q6 C7 m# p! G$ }" x0 x{' e7 n& V& B0 K( i
CDialog::OnInitDialog();$ D7 o O- `) \% |
* \! e$ Q, M# Q
// TODO: Add extra initialization here$ w0 Z% d k/ V+ m
try{
8 R" L4 m( ^( j( ` m_pdatabase=new CDatabase();' R' D5 ]0 [7 U0 H
m_pset=new CRecordset();
3 u; V5 ~, U1 X6 i7 \3 t m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);$ o, I( f0 ~$ x/ t3 B/ ?
m_pset->m_pDatabase=m_pdatabase;
) I$ M- Q3 m6 W6 ~7 N. O- [$ n }$ d1 e0 I9 y! L) Y n/ x4 e
catch(CDBException* e){* c9 K5 N0 W7 u" [2 S
e->ReportError();: U9 ?& `8 M/ u
e->Delete();
$ F$ @/ P5 G6 n- Q* t2 j! Y delete m_pset;
7 a2 i0 Z+ M" V2 C( y delete m_pdatabase;
; E+ ~9 v: I2 K$ R: r return TRUE;}
, U# z/ t& W% j7 Z* \ DataShow("data");4 g! {+ S5 I! t- L# e; u+ h2 K5 a
return TRUE; // return TRUE unless you set the focus to a control) e0 n" Y! M+ O1 t2 g/ @: w9 F
// EXCEPTION: OCX Property Pages should return FALSE$ c4 @# |! f* [
}& |8 s- j0 L5 c3 p
/ {( A. ~) r5 P0 T+ lvoid Database_main::OnOK() / V4 o5 v$ b: q% J. Z# ~3 { V4 M
{
. L2 W2 z% e5 A4 P5 Y9 f // TODO: Add extra validation here$ F4 [( f: |9 k
UINT uSelectedCount=m_list_control.GetSelectedCount();; _% \# k, h- z1 M2 D
int nItemSel=0;$ ?+ o1 P# ]8 s+ q D" q5 F. [
nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
0 k$ k0 l0 H% p1 ~; \) h9 U for(int j=0;j<nFieldCount;j++)$ \+ A2 H( J* b# T4 u9 ~; K
str[j]=m_list_control.GetItemText(nItemSel,j);& m1 j% k; |/ D5 X% `
}
& O" T. B- p" F4 k0 B
9 Y; K, z! C$ c+ L
: h; ~! E6 ^8 d: X
8 B+ c3 N, Q) ]0 l" S, M " \3 l, F& \- j, g8 D
CDialog::OnOK();3 W+ I; f8 \- S
}
5 U7 `" k% F- }3 _+ d) |! f- a1 k3 s/ b! V
void Database_main::ClearList()
/ w7 G7 W/ c, a; _1 W! e* a K{6 u( M8 b( n+ T2 @" E$ @
//m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);" [5 v: V. \& u! `3 N+ V" i
//m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
# s0 h0 v- r8 S& | m_list_control.DeleteAllItems();! J9 ^2 m" q( z0 d6 V" V
while(m_list_control.DeleteColumn(0));( ^* s2 G: ?! C) R' M% A& N. u
UpdateWindow();
' i& \( ?. |1 C8 K; H E}# r K: ^* z8 w, C/ A( Q* x+ D
////////////////////////////////////////////////////////////////////////////////////
$ M- {2 o4 e; I# Ovoid Database_main:ataShow(CString table_name)7 ` L3 `$ g& }& r9 f8 Q
{% R" ? }6 T# a7 h8 T) U' X
ClearList();
3 V$ x V$ B& `0 H, ]7 ] CString strSQL;* _+ H- f4 T- ]" p
strSQL="select * from "+table_name;+ B5 \& ?( y. b% C3 v
ShowInformation(strSQL);* _$ _! W% l% {. k5 C- x
}
+ F' u! p3 B; E( x6 u: N
/ e6 U; u, J8 t9 K' q4 YBOOL Database_main::ShowInformation(CString strSQL)
; a+ S/ o5 ^, n7 r3 r& s{
( I- l2 j8 x- ]$ r0 X$ g if(!m_pdatabase->IsOpen()) return FALSE;
! I$ `6 M4 `' {9 R if(!m_pset) return FALSE;
) y* e+ Q2 @; ?% R try{
% n" i4 o( K9 k( m' ^) j BeginWaitCursor();
: B$ K& g6 C) h2 F if(m_pset->IsOpen()) m_pset->Close();
Q1 s& b! ~! ^1 ?7 O m_pset->Open(CRecordset::dynaset,strSQL); O5 @* h4 H' P" i1 K
if(!m_pset->IsEOF())% P; X0 t' T1 y$ m
{m_pset->MoveLast();
3 _7 U- I9 o1 Z m_pset->MoveFirst();} w, K5 B. F3 X+ U+ U
nFieldCount=m_pset->GetODBCFieldCount();
2 }' |0 S/ ^. H: i& s CODBCFieldInfo fieldinfo;4 _: C4 C( i: }7 X# f/ P, m
for(int n=0;n<nFieldCount;n++){. y2 v* A6 a2 |* z& t
m_pset->GetODBCFieldInfo(n,fieldinfo);0 _8 O* ^+ h# m' }' Z
int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
: u9 J H' Z& q. M& | m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);" j2 U# @$ ]) q& R( n* g( s& |
}% u; e3 u& K0 `2 }/ A
CString strValue;6 i# F) K1 J/ K3 ?8 N4 Q4 ]
m_pset->MoveFirst();
0 B) W+ W( q' b" n int nCount=0;) ?2 d; L; I I) ?5 a+ b5 s
while(!m_pset->IsEOF()){1 v" N5 i$ K. G3 c7 h
m_list_control.InsertItem(nCount,strValue);
3 k f% D& J, A7 {. f4 ?6 b/ v! f9 t. p for(int j=0;j<nFieldCount;j++){
: R4 ^5 K' P4 e7 Q5 ~ m_pset->GetFieldValue(j,strValue);4 a$ v; L1 w1 X3 o
m_list_control.SetItemText(nCount,j,strValue);
- \ V4 ^) y& ?, X }
, } t! I6 \- m* m! @, H! v m_pset->MoveNext();
! G8 V: ]5 O" t2 U% k5 t. ]/ T- s- |- p; O nCount++;
) y/ k) Z% z1 o' h; L* e2 y }
4 {3 u# T: _( |+ \( F% V+ I: F EndWaitCursor();
; @7 J- f9 v3 a7 t7 x }
. o* j1 ~& T7 { catch(CDBException *e){8 h2 F3 I3 N+ c3 o7 f
e->Delete();
. p& N: R% _. M) X EndWaitCursor();
( u: r% G( t4 X r5 f, | return FALSE;* ~. e2 Q0 x5 J# {' K6 i) E
}
0 R5 `1 i# k1 m- e4 r1 G return TRUE;
- X; c3 F; R" v+ z/ F} |
|