|
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS- T! v( n. a/ F2 y
下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)' j4 m! r- [1 s
BOOL Database_main::OnInitDialog() , P) T+ S3 g- M' m
{
, P. A$ Z. Z w; L7 N CDialog::OnInitDialog();
! [; x6 q9 u' J' N% ]& H3 M ( |# D/ z# C: ~0 \2 s: w
// TODO: Add extra initialization here
) ~/ |) u6 r. _1 v, ? try{
, L: o* m. S, B8 E: C% t0 r$ | m_pdatabase=new CDatabase();
7 `$ V% H' p6 c m_pset=new CRecordset();' W5 }: i7 M4 [* \% s1 i1 r
m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
8 H6 E. N# L/ |9 y: m( z# m0 m2 ~9 T m_pset->m_pDatabase=m_pdatabase; ) f3 @/ y L, A! O! ~
}- ~1 z- c% g! F0 i4 D7 G
catch(CDBException* e){
& t1 a2 ?3 C' [, K: w e->ReportError();2 A5 O5 y# K. }1 l9 B
e->Delete();
9 ^" ^- {2 m2 F. B/ e2 y( ]/ R delete m_pset;* T6 `/ ~! e/ x+ e4 X5 C
delete m_pdatabase;
8 x1 }7 O: e% X. N" r/ h8 M! L return TRUE;}
# A' e N- u' n% Y3 c DataShow("data");& P+ c6 K4 w2 \& e' p2 Q) ]
return TRUE; // return TRUE unless you set the focus to a control- l+ v: V2 J( Y; M/ f
// EXCEPTION: OCX Property Pages should return FALSE
) v K8 J; s2 P. a}; P. o' m3 w: Q2 D; N+ K' h
O, X6 I* g; g+ {( l4 e
void Database_main::OnOK()
+ U7 P. X$ F% K2 b( J{
1 h2 b/ v* y3 m$ G' x // TODO: Add extra validation here" c" }" d0 e3 D, u
UINT uSelectedCount=m_list_control.GetSelectedCount();
1 s& h1 O; f' uint nItemSel=0;
9 q% h8 e6 \: Q, ?6 p! } nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
& @) J8 r, X* j* r for(int j=0;j<nFieldCount;j++)6 S F; e0 K3 R1 I- R2 \
str[j]=m_list_control.GetItemText(nItemSel,j);; N# e, f$ b7 l) E9 Y a
}
8 t1 z9 p& J$ p: O: _9 D) [7 J# ~5 G: L, U' i1 C
6 H& x; M8 U/ |0 }6 h( V: F
\, B v- f( ~' F) G) G
6 k( D" W: J) b9 t4 _ CDialog::OnOK();* p/ h% m; S3 Y3 T8 e
}3 `) }& |' F( M" [" _
% o5 o& [ N; ?3 Z _void Database_main::ClearList()# m; U1 r- b( Q9 @, o% x8 e0 H
{
- b- W, A3 c) F' F) ?/ ~4 ? //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);; p5 X$ ~( U' t% i# m2 N
//m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);+ x4 k! ~5 ], W- k! B
m_list_control.DeleteAllItems();
+ m5 \; g6 z- u0 j2 f, O7 N6 W while(m_list_control.DeleteColumn(0));
2 _( O0 Y' A. k1 W# V" p3 C/ S UpdateWindow();
: u1 X* C3 E, J) e+ ~: ~}
3 v+ N3 l: ^" O////////////////////////////////////////////////////////////////////////////////////" v9 k6 {! o/ J: u# g$ G
void Database_main: ataShow(CString table_name)1 q' B' ~3 H8 f( ?
{& }; D. w/ P, u, s6 S
ClearList();
; K; H* w; W* o CString strSQL;) v, ?7 n) g7 K$ g2 t- B. r
strSQL="select * from "+table_name;
B. U& E' Q8 @2 r4 V. t ShowInformation(strSQL);
4 W9 I% b3 o3 P7 N* ~1 c}
9 l& p: a( j% Y
) U) O' r k" }( DBOOL Database_main::ShowInformation(CString strSQL)
8 k1 P. g7 e/ {0 t% z& o{" n# P8 C5 R$ m* X. `
if(!m_pdatabase->IsOpen()) return FALSE;
+ D6 Y- w' A I2 z if(!m_pset) return FALSE;7 O" X2 Z$ v3 {( {3 ]% \
try{; q) ~) n( f0 k2 S; ?' w& p( h. M- M
BeginWaitCursor();- z# y# E7 B4 p0 D" T' T1 u
if(m_pset->IsOpen()) m_pset->Close();9 r$ ^* s% {3 f' V
m_pset->Open(CRecordset::dynaset,strSQL);
1 Q% j5 T) v3 `& y if(!m_pset->IsEOF()); i4 i3 B& C/ [, Q5 M% _: \
{m_pset->MoveLast();- e! c* Q( @' _- J- _
m_pset->MoveFirst();}$ h4 g8 U' i( T* s/ |2 y
nFieldCount=m_pset->GetODBCFieldCount();
2 Y' ^0 I" W/ o D* V CODBCFieldInfo fieldinfo;! {* F2 }- n. t R) H5 ~
for(int n=0;n<nFieldCount;n++){8 b: O' Y( T- T1 ^% S- ]
m_pset->GetODBCFieldInfo(n,fieldinfo);
4 H4 K4 s2 s, D5 |' Y n5 ] int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
* N9 _: {' ~- w, s0 N1 C m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
/ _ ?( I: K: D: ], E n! R. Y) L }
; B& n8 I6 G0 F CString strValue;
2 ]+ L% n6 [7 G3 D7 N7 l" d m_pset->MoveFirst();
& n+ Z( l i |, f8 z* R c int nCount=0;
0 u3 g, \0 G& Q* \# h1 g+ u2 Y+ F while(!m_pset->IsEOF()){0 N$ ]9 X0 b5 K4 o
m_list_control.InsertItem(nCount,strValue);3 {8 v/ ^. Q3 ~- b& r4 o
for(int j=0;j<nFieldCount;j++){# e8 W8 T" l8 {) _& v
m_pset->GetFieldValue(j,strValue);0 d" d4 S: B1 Q3 ^8 B! B# b. F* `
m_list_control.SetItemText(nCount,j,strValue);
8 ?5 U0 W A" f9 Y* o }0 @$ X3 _3 G/ b' w' n9 z% ?* o
m_pset->MoveNext();
7 A, L% f$ D1 e2 _- C! j nCount++;
) ^9 H0 m: _5 M2 Y0 o3 v7 A& S& W }' F0 e" @3 `3 e8 |; \# z; R Q
EndWaitCursor();
5 G( o% @6 }( h/ r2 r: K9 N8 q }
; J( @& e" f- k4 d6 ^7 ] catch(CDBException *e){
7 F3 v* C- ^) i- r8 Y e->Delete();
3 T% _/ m# N, t* o3 } EndWaitCursor();
6 g: d9 ^# s: Z% q8 ?$ G return FALSE;; F& ]) E) A* }# L4 b( y9 d7 u
}" y6 P3 N) d* ^7 ]6 r
return TRUE;/ q5 R) V8 f9 e2 S" y9 U6 @5 C
} |
|