|
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS9 i7 Z5 ^2 `2 _7 } _
下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)6 @* ?! J( O8 M
BOOL Database_main::OnInitDialog() + Z! }( p5 {; @ }- v( R2 ?0 c! X- L) ?
{% N2 r8 N7 `# R4 B5 F9 [3 G
CDialog::OnInitDialog();
0 s/ I3 h" B! p8 R7 Y5 W
' v6 p( Z: b) B* f // TODO: Add extra initialization here) [: t8 L7 M" s' C! B3 J, K/ H
try{ : L( j4 T/ s7 |! N* |! n( u
m_pdatabase=new CDatabase();, g" t* I2 P6 |. F
m_pset=new CRecordset();4 K5 a7 p' V4 H: i4 E; q* `
m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);$ d% a! r. U8 H& u
m_pset->m_pDatabase=m_pdatabase;
9 @2 x3 M: k5 t7 }" D1 X. D/ [ }
$ F, ^5 T6 M2 W' i& z& S" L/ q catch(CDBException* e){ w5 D4 n" P/ x* w" D8 f
e->ReportError();
3 s7 o' B7 N6 i; x/ A$ k e->Delete();* `$ o, ~" y& a- C6 M2 J7 E8 o( u; n
delete m_pset;3 N; j2 X8 J8 A" Q ^
delete m_pdatabase;8 w+ ~' r: y- V; l; p/ W, s
return TRUE;}" c! b/ K" N. o: R+ I' \( B
DataShow("data");4 S( d) @& g' d
return TRUE; // return TRUE unless you set the focus to a control' z* Q/ @/ _. @8 X, }. d
// EXCEPTION: OCX Property Pages should return FALSE9 y5 j$ y, X' S" i, N) m B
}
7 T: l5 y8 ~# T+ W, d; G: z1 y( _4 w$ l
void Database_main::OnOK()
" f' r; \' m8 D2 }4 J' I3 _{$ K- G& i' T. N T
// TODO: Add extra validation here
7 e5 M# L0 l. L UINT uSelectedCount=m_list_control.GetSelectedCount();
1 x6 A# w. j+ B; m! tint nItemSel=0;
- r2 S, q( V* {: k" b5 b7 k nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
1 r& m" D) ^5 P. v for(int j=0;j<nFieldCount;j++)- J% Q* `4 \6 K: \! n- d }+ _) D9 a
str[j]=m_list_control.GetItemText(nItemSel,j);
6 l9 A2 e4 g6 M8 q3 d F$ x }
z9 t% V( k( j. L* k8 M
& F; z, J' h- O5 _- [- U; z3 b V3 @6 g. h5 @& e9 f
7 K/ q& k% I4 Q; A( P9 S' ^0 `4 n& c R( K
1 [- G0 v0 q. {/ r CDialog::OnOK();
) ^1 V4 X* [# L: A3 p4 c9 G}- K" V1 H5 ^+ p9 {* l5 d5 p
. R2 I# x, l- U, S o. j0 u- @void Database_main::ClearList()" [& \! E, {: _" Z5 E
{# @- }3 W6 U! o0 v8 o1 y
//m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
5 L- D2 ?# Z, ]- b4 T //m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
2 } c: q) N) |5 \# I m_list_control.DeleteAllItems();. S/ y: h+ `; @6 h& t
while(m_list_control.DeleteColumn(0));* |+ ?+ R2 L3 v( H( m
UpdateWindow();6 q7 L$ w; _5 `; k
}0 t$ C/ B: q7 q" c+ L! {1 }/ M
////////////////////////////////////////////////////////////////////////////////////8 I$ E2 d3 q9 J9 m" H( l
void Database_main: ataShow(CString table_name)
0 x9 \8 R S! b; }3 b! _{
! V5 U3 ~! h6 h6 Z ClearList();
' u% _+ ]5 E+ B CString strSQL;6 K7 {. M/ N, V+ e/ X' N
strSQL="select * from "+table_name;2 M( R+ e" f$ e; ^+ Z# W9 k
ShowInformation(strSQL);
. |, d8 r( X9 P1 p0 h& m}
. j8 j+ M4 U! r# V6 x/ Y
( b4 n1 S7 F3 {BOOL Database_main::ShowInformation(CString strSQL)
8 T/ r+ z# z: `& H8 [) K5 c$ y{
b0 R- P) h5 q, p2 m; q6 ?* e# g4 [ if(!m_pdatabase->IsOpen()) return FALSE;: K3 `6 ]: ]# E
if(!m_pset) return FALSE;/ ^# O! U1 f G9 \+ P3 Q) i: v
try{2 S6 f# O. U! B7 Q- u5 s
BeginWaitCursor();
6 P2 ~$ P% [% t1 N' y0 S" s7 g if(m_pset->IsOpen()) m_pset->Close();% {8 h; V5 a2 y* i. G
m_pset->Open(CRecordset::dynaset,strSQL);3 K& e% a& Z/ L8 E# Q
if(!m_pset->IsEOF())
* E {) p: J" k3 d7 f7 Z) V$ `6 T {m_pset->MoveLast();
2 r7 a- n; f( q, D8 `2 K m_pset->MoveFirst();}
% f& o. H H' ?5 i nFieldCount=m_pset->GetODBCFieldCount();6 K& Z7 ^( Y/ J4 h5 G0 c' Y; {' x
CODBCFieldInfo fieldinfo;
" S# o! A0 \, {) M& \. T. m for(int n=0;n<nFieldCount;n++){1 f" I- N4 c. ?( o
m_pset->GetODBCFieldInfo(n,fieldinfo);
, W+ V! E3 }% R! v/ x int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
* M# N5 C" N' N W; J m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
N! V* x# a7 |' g }
! V0 g0 t4 F" t5 |$ D/ J CString strValue;
) Y8 X6 s6 V& z% N# o& N- G7 P m_pset->MoveFirst();, q' G7 p5 x- c5 W
int nCount=0;) n l1 S1 S1 u' F
while(!m_pset->IsEOF()){
7 D, Q$ M% U, ?5 a m_list_control.InsertItem(nCount,strValue);* I6 G: q- B. k6 R* c% F' ?
for(int j=0;j<nFieldCount;j++){$ K0 l- c o7 g( |) U0 Z( Y0 g f
m_pset->GetFieldValue(j,strValue);
. `8 a' h* r+ r; W* w* ^5 @ m_list_control.SetItemText(nCount,j,strValue);/ m7 R1 _/ n, c
}
j( l6 n' }6 a ]$ ]2 l9 ^6 n m_pset->MoveNext(); d6 k6 m+ V& D2 T8 V4 g
nCount++;( `- M7 {! j$ l, [/ i9 A9 q, v F( E1 o
}! N# b' I, I0 K6 s# s# d n3 v
EndWaitCursor();2 R2 q/ P9 U7 J( ?+ h4 O, @: A
}4 O! S6 m6 ~0 i" H- k5 [# }
catch(CDBException *e){
7 \* n3 Q, c* ]7 S% d e->Delete();) D+ A8 S/ Z. P& a# x& i( r
EndWaitCursor();
7 L- ?, ]6 E$ n2 q0 v return FALSE;
: Y2 Y# {0 R+ b0 O H4 {+ Y }# w; `2 f, b( a, a
return TRUE;! t2 F7 E1 a' ~+ n, v @' C1 Y
} |
|