|
MFC的DLL可以办到!但是你要在UG里运行的话最好是UIStyler结合上MFC,MFC调用ACCESS
8 p _2 U# `3 V, w下面是部分代码:(我这是一套的,代码很多也很杂,给你下面部分)
/ ?: D! u$ O5 P( Y1 lBOOL Database_main::OnInitDialog() 4 g1 [; U) r' d$ {/ ^" [- Q
{
# D# l$ U/ R' o$ u+ j CDialog::OnInitDialog();7 u' W6 B. ?) i/ j
z+ ` g: T+ S: e2 J // TODO: Add extra initialization here8 S6 L! ], D5 w& f
try{
( T2 M5 ?# N8 D& h m_pdatabase=new CDatabase();
( e1 G0 ~( u# L& C) | m_pset=new CRecordset();
3 r v0 o- L7 B% {4 c m_pdatabase->Open(_T("data"),FALSE,FALSE,_T("ODBC;DSN=data"),FALSE);
, K4 O# _3 B* z6 A4 T$ r) y m_pset->m_pDatabase=m_pdatabase;
Y# F3 s+ F. E }
( w: C- q+ }& N- P/ H catch(CDBException* e){
7 V' R7 X- H0 m$ C e->ReportError();
# D7 I! s0 }- M e->Delete();1 t7 W# x5 c3 y; e' h( S
delete m_pset;9 Z/ m; h; j1 G ^9 r' O
delete m_pdatabase;
" b* I( C3 \. t. k6 j# e return TRUE;} m3 s0 Y; s! y$ v; }6 S
DataShow("data");
7 I5 I' L' H/ v6 c8 U: X return TRUE; // return TRUE unless you set the focus to a control
8 \1 i o* c+ n" i6 K! X6 w // EXCEPTION: OCX Property Pages should return FALSE# v9 @$ t% `% S# F
}
8 \' F; I. w* B, \1 b f' s: K O5 s3 n7 r
void Database_main::OnOK() 3 P% E4 i5 ~& {( k2 w( q3 z) j
{
8 n" \$ e9 @0 { // TODO: Add extra validation here) _( t7 b4 Q' O9 B+ V+ o
UINT uSelectedCount=m_list_control.GetSelectedCount();
; h* _1 J& G. L( T ^" d8 |int nItemSel=0;, ?! k; P$ o1 H$ y( s% r% V
nItemSel=m_list_control.GetNextItem(nItemSel-1,LVNI_SELECTED);2 l/ H0 {; o+ A3 g
for(int j=0;j<nFieldCount;j++)% E6 G, i% @, \3 h
str[j]=m_list_control.GetItemText(nItemSel,j);+ |% P7 o$ n8 O" v) t% {% |
}; {. a- K) G$ F$ F( Z, p* c( H" v
2 ~9 B# f) {5 h! ~6 K
" V- k2 S: U9 P
1 T+ | T3 _; F. `$ Q+ a
, N9 s5 u1 ~- S$ f4 @! s/ M CDialog::OnOK();* I, J3 l( t* C0 _0 g& o+ N+ f
}
' M1 I* U3 B/ O& D$ `- J9 y6 w v$ F Q6 B# W
void Database_main::ClearList()
" O" `3 }' A( z" Z- d{
8 W; k$ s2 l6 R6 {* v( u //m_list_control.SetExtendedStyle(LVS_EX_FULLROWSELECT);/ \; p+ I7 ?& R6 K( x+ I# J8 c7 Q
//m_list_control.SetExtendedStyle(LVS_EX_GRIDLINES);8 T3 L5 v' m/ P& U9 q
m_list_control.DeleteAllItems();0 _7 C# B) W9 ?' o$ p/ |
while(m_list_control.DeleteColumn(0));6 m. p6 ^" U6 h# B) v0 k/ f
UpdateWindow();
) r& a# A% @# ^' u& e Q; M6 s$ n}: ~0 ^1 p- o( J. V% t# z& l6 s
////////////////////////////////////////////////////////////////////////////////////
" Z4 e7 f3 |$ N; x' ?9 vvoid Database_main:ataShow(CString table_name); O1 a7 A+ S/ p2 l& R
{
$ b/ X' \) _' k- V( \3 K ClearList();
- w& n5 R$ _% d! r: m" c CString strSQL;
$ {+ |) F! A9 X1 e$ x- H$ W1 i! ] strSQL="select * from "+table_name;
6 E9 G( h* ?/ H% X+ \/ \ ShowInformation(strSQL);! L6 ^# [) o* [3 A; T$ h
}
7 h7 k0 ]% Z) }9 F
. e) y. p9 Y0 h8 y& fBOOL Database_main::ShowInformation(CString strSQL)
! o- l* P$ H f. s{
+ D4 @5 [( y: B7 ] b5 v' B if(!m_pdatabase->IsOpen()) return FALSE;+ a6 L! V3 v6 s* r
if(!m_pset) return FALSE;
% ]% Q& J* G: N# m try{
$ ]4 [7 Z% N3 Z- u$ k+ O z BeginWaitCursor();
& x7 C, s" s0 G1 n2 F! { if(m_pset->IsOpen()) m_pset->Close();
( G6 _, T3 K) c8 L$ p m_pset->Open(CRecordset::dynaset,strSQL);
7 y; E4 |& H3 k5 t# y9 Q& U if(!m_pset->IsEOF())
. \( D- g8 W+ ?* w; \4 J3 f {m_pset->MoveLast();5 i A" [5 t M; Q- x& m
m_pset->MoveFirst();}* C3 L1 f" j' d9 ]
nFieldCount=m_pset->GetODBCFieldCount();& g7 p; u3 P" k p4 j! W o+ V1 L3 }+ @$ c
CODBCFieldInfo fieldinfo;) Q$ s8 w# A1 I4 `
for(int n=0;n<nFieldCount;n++){$ C1 K+ ]8 u2 Q, p% O7 ?
m_pset->GetODBCFieldInfo(n,fieldinfo);% O' b& i4 E B% {' v" N3 V% C
int nWidth=m_list_control.GetStringWidth(fieldinfo.m_strName)+35;! Y8 L% A' z. D- \+ Z1 X
m_list_control.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
# D* L3 @& B& Z7 r+ g, R! J }
; l9 a' s7 E) | CString strValue;: V8 Y" E( S) ~; E- z
m_pset->MoveFirst();6 C. X3 X: y& g/ W
int nCount=0;
1 h- `- o1 [% m3 |2 z. q while(!m_pset->IsEOF()){0 n+ Z2 e. _) D9 O8 `
m_list_control.InsertItem(nCount,strValue);- Z. {9 Q2 ?2 p' S
for(int j=0;j<nFieldCount;j++){4 N% ?; W+ T7 q7 P7 U; U$ k. c
m_pset->GetFieldValue(j,strValue);
1 j7 m" h9 {$ c% [- D4 \ m_list_control.SetItemText(nCount,j,strValue);0 ?/ i/ H9 D* C& e6 \' T2 r: m" ^# p
}
1 A% v; r$ A' R E m_pset->MoveNext();
' y/ a! N( s) v. P% c+ j" n+ e nCount++;! @1 Q( \- Q2 M0 V0 y4 Y! J3 u
}
6 e! k4 \- W ~ EndWaitCursor();
# u s2 R) Y; ?# d. P) ~ }! v6 a/ p0 R5 }+ Y7 N
catch(CDBException *e){
+ z! t# _1 A, b e->Delete();* Z/ l9 |+ Q0 [* u) M
EndWaitCursor(); ] |- y1 d1 N! Q
return FALSE;
: s9 r1 r' a8 x! V9 ? }: E0 c# ^: p& Y% j4 h: E2 }
return TRUE;
, @( s, A3 Y" q6 ?# z7 e) L- z} |
|