|
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
( ^3 j+ j4 Y! c5 y- `下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)# J7 b* G* }* ?5 I6 \, K
BOOL Database_main::OnInitDialog()
- e8 F& C; A0 B4 p1 ^* }0 K" s{" }( b x, T$ l v7 r! f
CDialog::OnInitDialog();8 l, ]6 S( K6 J! d* `
1 r$ S: l" f, v$ `& c" b
// TODO: Add extra initialization here
; V! T r+ s! f% [ try{
& e9 L" y. g9 C; t m_pdatabase=new CDatabase();8 X) y% I3 ` Z' ?
m_pset=new CRecordset();
R K) Y4 D/ C0 Y m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
L9 s8 D/ O+ q6 F m_pset->m_pDatabase=m_pdatabase; , d6 A: V; Z- y1 L0 e
}
9 y, \! \; U8 m1 v, P0 @8 T. E catch(CDBException* e){7 X! \+ d# l6 A( k# g5 u9 c
e->ReportError();. E* l% f$ [; J% h
e->Delete();
0 r4 M/ i9 ?1 F7 ]6 T delete m_pset;7 z: m5 D% V/ z7 F) v/ o9 |
delete m_pdatabase;
5 @9 E, ]9 y7 L. U return TRUE;}
9 c8 x$ A& c1 f% t! O DataShow("data");/ y. C9 j4 Q# {( N" ~! {# ^
return TRUE; // return TRUE unless you set the focus to a control
7 `; }+ H+ N' O- I; u6 Y4 t$ t* v // EXCEPTION: OCX Property Pages should return FALSE
" X. f+ ^, Q' ]7 C' E6 L, N. R. B}
8 c) Y' P, P# V- s; F% u; [& o; G. ~3 T! N0 m9 t3 V- P, S
void Database_main::OnOK() . l, e# x% Y2 r; f5 v1 Z1 }
{
9 o: u& K( @, h% G# N // TODO: Add extra validation here
, y+ G; F" [. c U* h UINT uSelectedCount=m_list_control.GetSelectedCount();
4 @$ I! Z* l( F" q# Rint nItemSel=0;
: e3 W# R6 j6 l& o5 y nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);
: d. k, v1 L/ U! o2 ] for(int j=0;j<nFieldCount;j++): [# f4 W, n+ i/ G; W9 k8 ^0 j
str[j]=m_list_control.GetItemText(nItemSel,j);# F2 m: N( D' Y( t9 B
}
1 v3 K* D, t4 L- k8 y1 F& t4 Q* ]( p" ~5 e3 L" ~
9 \7 o) R6 W, D1 p: D
, p0 a1 r4 A$ r$ y
3 ?$ o" z& \5 E
CDialog::OnOK();
! S0 B& y8 a8 ~# e: c! B, C5 p}: f8 e2 S/ u' o% s
3 b4 B' h3 @4 A$ i) e% G' tvoid Database_main::ClearList()
' T+ ^( M- |2 Q{
# i' w& r% G7 |9 m //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);6 }" g3 l# ?# L' ]
//m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);
- m& z' P8 O) e m_list_control.DeleteAllItems();
8 @+ o1 H: ~: E" G, M8 ]3 ] while(m_list_control.DeleteColumn(0));9 C* @0 c! R8 D
UpdateWindow();; e% j% |3 {5 i" g2 |8 Z4 L
}
1 D/ \4 O+ O$ V5 J/ A% n9 t////////////////////////////////////////////////////////////////////////////////////8 m" M- q/ s7 i& Z _( M: A, n
void Database_main:ataShow(CString table_name)
9 Q+ ^2 I. u' y2 Z7 q0 C# B{
, @" a. C6 G: d ClearList();
' g/ S$ X( O) n# Z5 O1 q: W4 z5 d CString strSQL;; T+ k$ d4 p1 ~2 Z" s# U1 G
strSQL="select * from "+table_name;/ b( u- Q0 c( ^% b
ShowInformation(strSQL);) `9 O& {3 v7 s; y# i3 i) F! U' i
}
\+ v6 d6 N8 \7 F9 b5 }1 k- w/ d) X& I% M* J' E% r
BOOL Database_main::ShowInformation(CString strSQL)
* L7 f; M1 g3 K2 K2 X) V/ Q{1 r U. q4 E/ Q# s n8 C5 G5 u
if(!m_pdatabase->IsOpen()) return FALSE;
) w+ G8 H: }$ o1 T0 C3 B: y3 ^ if(!m_pset) return FALSE;
5 `$ g% S0 O+ e" [3 N. Y& M try{
) Q) l; s7 b3 B BeginWaitCursor();& z& l3 t& A+ `/ T2 ~+ H" m
if(m_pset->IsOpen()) m_pset->Close();
2 U# Y# G5 W/ o) M m_pset->Open(CRecordset::dynaset,strSQL);* R8 L! r! V( V% u/ _5 k
if(!m_pset->IsEOF()); r4 O3 J! N! ~8 p$ {- w4 r
{m_pset->MoveLast();
J( n: A) t; p. i m_pset->MoveFirst();}/ P& Y# S2 U! r3 u- |, p: a4 R [
nFieldCount=m_pset->GetODBCFieldCount();; g% k& c0 [1 L$ U. m
CODBCFieldInfo fieldinfo;
# ]' m0 k8 D; U5 q6 W T for(int n=0;n<nFieldCount;n++){- w6 e' X% V% b9 z3 ~
m_pset->GetODBCFieldInfo(n,fieldinfo);
4 \+ g( |; f/ ]) f! O- d! n( R* ~ int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;
+ b- c$ \. P% E. K( K: M0 W m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
; e. p5 x5 |3 M+ N/ l l6 `- J* ` }
' c5 @: u3 u9 \* C, Q' L CString strValue;
! s% x4 F& \% s% ], @0 k m_pset->MoveFirst();
) g; }' S z$ O! L% h& a. F. D int nCount=0;9 _ c4 C; T5 w( T% p4 T ?$ ~+ K
while(!m_pset->IsEOF()){
0 C1 C# }5 V, F3 Z% O& @6 G m_list_control.InsertItem(nCount,strValue);9 q" ?" F& u8 P6 {
for(int j=0;j<nFieldCount;j++){
! s5 X0 K/ T2 Q+ Q% X1 g m_pset->GetFieldValue(j,strValue);
) K) n6 r$ M6 n$ M m_list_control.SetItemText(nCount,j,strValue);; o$ R5 X. D# \, [8 z, r4 `
}9 N, k3 L. G5 {4 d
m_pset->MoveNext();
, d. u; D) e- I, M2 c4 w& F. T! Z nCount++;. ^7 h9 b2 Y& R8 K- Z" m
}; Z3 a$ d2 }# V! J3 F! [
EndWaitCursor();
. ^1 t# i, _" m: X }
' e2 ~) J( o3 } catch(CDBException *e){
. ?8 ]2 l8 T/ \7 {) D. y e->Delete();
1 k) n5 E! `& D9 \$ e) j; W1 ~8 U EndWaitCursor();
( d1 z; @0 a0 E N8 j+ g: R return FALSE;$ e: ^0 d7 w2 Y, h2 L
}
! \5 \# b( F. U# f/ s8 P* D return TRUE;
! E5 [$ S4 r. G' G: G2 B- r+ E5 l} |
|