|
小弟在做毕业设计,是基于ug的典型工艺库的信息管理系统开发。用visual c++6.0编程,其他部分应该没太大问题,但是数据库死活连不上啊!!急死了,马上就要交了。。。麻烦大家帮帮忙吧。。。跪求。。。我把我的程序贴上来:+ S/ f s$ T+ _) q# N
首先是。h文件的代码:" N/ L7 _) S' a3 _2 F! r
// MaterialInfo.h : main header file for the MATERIALINFO DLL: ]$ r$ Q& H- y
//( e2 n" K# C) b5 w* \5 l0 l, J
+ V- b/ a X# R: ?7 [9 N#if !defined(AFX_MATERIALINFO_H__72DE1E8C_6732_4AF8_9DBB_582D57FEAF73__INCLUDED_)
3 i3 V) A' \7 C" u% k, I/ _#define AFX_MATERIALINFO_H__72DE1E8C_6732_4AF8_9DBB_582D57FEAF73__INCLUDED_
: \; a9 U4 z( X
/ G X, Q G, V2 X) N% ], \#if _MSC_VER > 10009 z( u+ ]( n4 C, l3 b6 B
#pragma once3 ^8 U, m0 c1 O# W
#endif // _MSC_VER > 10003 r9 b: h# j& v$ t/ Y& e3 o8 l" @
; c* {5 S8 ?& E- G6 I n#ifndef __AFXWIN_H__: C2 l3 E/ X+ w) h" H6 G) p: G
#error include 'stdafx.h' before including this file for PCH
, ?9 Q- j; ]9 D6 N9 i2 W% V c#endif
7 S* b" t, o$ e$ B8 x. z% {( c, a
#include "resource.h" // main symbols- P: x- @8 v. f+ u& e
' |: @- F+ m. n! e. \: ], I/*===========================================*/' e/ \/ D( k7 p
#ifndef MATERIALINFO_H_INCLUDED
7 `) L8 G! L* g) p7 F9 C#define MATERIALINFO_H_INCLUDED# k; R/ i: w! ]
& Q( A" ^8 x4 w$ _" z# N& K2 G6 g#include <windows.h>
/ w) _/ R; i8 L#include <stdio.h>4 j# _) D& m- K! z
#include <stdlib.h>+ v% k6 o' b: ?6 f8 w+ y
#include <string.h>$ R7 Q7 Y9 b4 a6 c" `! e# e' }
#include <conio.h>
0 D, V/ T* C! F" l#include <process.h>. n% U3 L/ c3 S# U& \% ?
#include <uf.h>) a$ ^' ^; p" S
#include <uf_defs.h>7 }0 J4 o/ N/ u( \9 M' J7 R. F3 W
#include <uf_exit.h>( f! S# W3 b3 `: B& a0 }
#include <uf_ui.h>6 W2 a* w9 a& j" q1 X. @
#include <uf_styler.h>
& U3 c6 r5 z: {; a f* @, h#include <uf_mb.h>
' D6 n* I6 t2 ~( X#include <uf_part.h>
/ T; W( j0 @6 F3 V# k6 Q#include <uf_cfi.h>
1 [9 T, {' b1 D) M8 _5 }" Y#include <uf_assem.h>7 V- L8 W$ d! R
#include <uf_layout.h>
' _8 m- j9 ^2 h5 v8 R" h#include <uf_curve.h>) q* t1 H5 ?. \1 F1 |+ ~
#include <uf_defs.h>
8 W$ V6 g: | }* v#include <uf_modl.h>
& P7 C) \: {* e( u1 m#include <uf_drf.h>
K6 M0 [% t! {2 D3 B# S2 n#include <uf_drf_types.h>
! _% K# N3 h, D" O" x# `5 c4 @- K) A4 R#include <uf_obj.h>
/ y) }1 D; P" }' I0 N: K$ q" K2 v4 m8 p7 V4 ~
#ifdef __cplusplus. F( G. m2 I% m0 ^1 A! l4 ]2 w+ K
extern "C" {9 X& P/ y( r$ n! {6 n* ]
#endif
1 r9 n) ]# z- ~, y2 [0 ^" b4 c- ~! L# x
. |. K1 I1 Y2 B: l* }6 F2 A, T/*------------------ UIStyler Dialog Definitions ------------------- */
, C" `: W: m1 s, d/* The following values are definitions into your UIStyler dialog. */0 F, \+ \: C! r! O4 D
/* These values will allow you to modify existing objects within your */& S+ j( M& J! j) }' h: t; g
/* dialog. They work directly with the NX Open API, */
& l$ v& n1 T6 {+ S8 H1 ~: W6 d, J+ n3 ~8 S/* UF_STYLER_ask_value, UF_STYLER_ask_values, and UF_STYLER_set_value.*/8 N$ h6 q7 R0 ~! ]9 Y7 I0 [
/*------------------------------------------------------------------- *// Q3 ]# l z$ `/ q6 |
. j$ K6 t F6 ?0 W, Y) z) s+ |
#define MAT_LABEL_0 ("LABEL_0")5 t! J7 Y M( K. f& ~$ C
#define MAO_MATERIALINFO ("MATERIALINFO")9 g: \) p- U: i0 O* Q5 }3 i; m
#define MAO_MATERIAL ("MATERIAL")7 [9 L: s) Z, ~/ G; |0 _9 Z% L
#define MAO_PARTINFO ("PARTINFO")0 r. B+ O$ d! }4 O
#define MAO_PART ("PART")/ U' K' l# K1 x& Q$ J
#define MAO_NAME ("NAME")$ [6 ?0 K: h+ n) G! K2 S0 m9 Z
#define MAO_PARTNAME ("PARTNAME")
( X& j* C7 F2 P9 u0 c# z- T8 x; Z#define MAO_STD_NO1 ("STD_NO1")
# Y; }4 G \5 K7 b. E: D#define MAO_NO ("NO")
% B: K* @, b; E" d#define MAO_NOTE ("NOTE")
9 F# s6 h1 w7 D0 r#define MAO_BTN ("BTN")% _- l8 |+ g. B
#define MAO_DIALOG_OBJECT_COUNT ( 10 )
$ c2 k6 t$ c: V3 u! F/ V: I0 n( l/ \. k- ?' V/ i- W
4 a; V" K/ f% u; j" N$ k/*---------------- UIStyler Callback Prototypes --------------- */" u0 E6 P. a1 M( S" ? Y* g
/* The following function prototypes define the callbacks */
$ M: w; m* ?4 H; W( e9 D# H9 `/* specified in your UIStyler built dialog. You are REQUIRED to*/& N/ y" T3 d+ ]" k& _6 ~- w
/* create the associated function for each prototype. You must */
* ?* S/ g" f7 B( v1 ~6 t" K' V/* use the same function name and parameter list when creating */& j% }0 @8 {3 M" d1 u% \% ~
/* your callback function. */
8 g6 _' q4 H; R+ t/*------------------------------------------------------------- */9 h T1 f$ i& H4 R
: K; @3 [7 O! G( d1 E
int MAO_constructor_cb ( int dialog_id,
- R# s7 Q1 G6 `) f5 R9 w void * client_data,6 a' c, o/ ?' j9 E: N/ H
UF_STYLER_item_value_type_p_t callback_data);5 E9 T$ ?( T+ Q
1 e" ^# ^0 S- U; y% \) g) M
int MAO_destructor_cb ( int dialog_id,. z3 P) r9 t" b. W
void * client_data,% t2 u4 m# ^% S' n! K% L8 S g3 o4 u
UF_STYLER_item_value_type_p_t callback_data);1 y/ B9 R( G3 ^$ Q& s8 c4 w4 W% p
' Z4 y/ L! Y- P I; S, w
int MAO_ok_cb ( int dialog_id,
2 v. O* H2 r' [, ` void * client_data,. J) i3 \' v9 f; v
UF_STYLER_item_value_type_p_t callback_data);+ }) J7 W( }% F8 G4 H! o4 y* p
( R. o0 u+ F6 ~: s; Y
int MAO_apply_cb ( int dialog_id,
: N. e; P( ]" [& C6 s" ?7 ~ void * client_data,7 i/ B* w# X, ]4 s2 p$ f) s
UF_STYLER_item_value_type_p_t callback_data);0 a4 B" I' @% i' w
) y7 Q2 \- U4 D* y5 V. R* zint MAO_cancel_cb ( int dialog_id,
4 p2 |9 G f% |; p3 p# h5 p void * client_data," @- L- ^+ L$ F& P! x- u
UF_STYLER_item_value_type_p_t callback_data);: F% n/ {7 S9 m; D9 F0 h
a3 v3 Y% u }int MAO_mao_type_sel ( int dialog_id,# Z/ `$ \* `+ _; M
void * client_data,
/ }( L1 T6 u7 K( C UF_STYLER_item_value_type_p_t callback_data);
1 Q, [) I0 C; y- a3 A0 ~/ c9 G3 T1 X1 R
int MAO_partname_type_sel ( int dialog_id,
- l: d6 k @' f* m void * client_data,4 E6 b6 d: j$ b5 _4 ~
UF_STYLER_item_value_type_p_t callback_data);
& N/ g. p* f( l$ }8 J/ S$ f# Y0 _" v! M% I" q6 ^9 a! A
int MAO_btn_cb ( int dialog_id,
9 K- ?5 u7 k$ w3 ]+ t" t* o# X void * client_data,9 n/ M5 g8 b3 b: d: X' H8 H/ \1 k
UF_STYLER_item_value_type_p_t callback_data);
! C* D+ m( U2 A) p1 N# t' ?' A/ Z% v6 N$ u4 _7 x( c1 O& I
9 v$ u1 g: U5 z: z4 u# E
4 x6 |: m# c) R3 G5 a0 n6 G. m" N
. a- G4 U: m/ j. l6 ^#ifdef __cplusplus* \& P% @1 U5 O4 w! S( J
}
. o, a; e& `! a9 c& H#endif
8 y# J2 G5 D% d. q& B- Y. F0 h0 @% ?6 U% X5 N- t! g5 P
- T5 M# |1 Z( @) R6 R; C& e
9 T* A5 d6 |5 H2 A* s7 c! K#endif /* MATERIALINFO_H_INCLUDED */
9 S0 c& B, n( T4 D/ a, p4 |! C; S7 h' J9 @- x( ?# `0 }3 w
////////////////////////////////////////////////////////////////////////////
4 V. ^7 s9 t" O- O
* }8 q; x# `% U8 }* u& Z5 O1 m W, X) U//{{AFX_INSERT_LOCATION}}
- ]: ?+ O8 y! P// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
% Z' g& f; t# E! S I7 x
" K* N9 P( s: V* w8 s- g#endif // !defined(AFX_MATERIALINFO_H__72DE1E8C_6732_4AF8_9DBB_582D57FEAF73__INCLUDED_)
0 f: t1 j n& h2 Q# N# d3 Q& q( _! R5 j" t
- W% ^* S, t- q: ^8 }5 m# B c然后。cpp:高亮部分是我的连接代码
t, S9 P. v. n, G% C// MaterialInfo.cpp : Defines the initialization routines for the DLL.
& I( r( g2 H' y D7 p) h//
3 }2 |6 O/ B) c) v" _4 ^0 L5 j9 ]3 z
#include "stdafx.h"
* V$ R4 H f$ S C0 V+ v" I#include "MaterialInfo.h"/ g% m S* J& G U% r8 v3 y) g
8 k7 r& C' @! x6 j* x0 n#ifdef _DEBUG: \- U' }; @6 u! N% [8 s
#define new DEBUG_NEW
d: L5 g' O. a" X) i7 R- d#undef THIS_FILE0 X/ x N7 I( v R/ K! U
static char THIS_FILE[] = __FILE__;$ Y1 x( r0 ?* a G8 y* y( d
#endif& E1 j: k3 y, l1 u; I
. G) B7 L% _0 |
/* The following definition defines the number of callback entries */+ P; @- {8 F! S; \+ a9 q
/* in the callback structure: */
1 A5 @6 X$ t$ X2 T& P4 i: B! P/* UF_STYLER_callback_info_t MAT_cbs */5 N4 @. G0 p0 T3 d- ~/ l1 A. @ a
#define MAO_CB_COUNT ( 6 + 1 ) /* Add 1 for the terminator */
: ~/ [" C3 b( R, S9 X, i, r# j7 e/ f) Q* V! M$ {
CString strtemp;
/ W; G }! i3 Q1 X T5 W5 rCString str_tmp1,str_tmp2,str_tmp3,str_tmp4,str_tmp5,str_tmp6;
/ @1 E8 y- E9 @" M! s6 g4 u9 {6 d8 G
//add_mark:添加标志;
' _7 U/ U" h6 f; tint add_mark=0;5 h) \, a) K8 q+ K
char DbType;
. O [1 \& r ^3 |1 {
+ e8 R& h; }' p( E1 D" G//定义数据库指针, X: C/ w* G, ?: D& M
CDatabase *m_pdatabase;1 y& {# c( P Y; g; t; C8 N" w
CRecordset *m_pset;
7 X2 a) }( i% j_ConnectionPtr m_DBCnt;" W {4 D O/ p& K4 [; S- N. d
_RecordsetPtr m_pRecordset;
8 {2 a( g+ E/ X. {$ w0 F! z0 | X# k2 F* o3 }
/*--------------------------------------------------------------------------*/+ a6 v1 }9 b3 q; l3 `( j
static UF_STYLER_callback_info_t MAO_cbs[MAO_CB_COUNT] =
8 D) N2 y- z& A! s* n2 {8 ?+ a1 M{! s/ f6 j% E& Y% h6 T. R) m
{UF_STYLER_DIALOG_INDEX, UF_STYLER_CONSTRUCTOR_CB , 0, MAO_constructor_cb},
( l' w4 X: H( I, [0 ^ {UF_STYLER_DIALOG_INDEX, UF_STYLER_DESTRUCTOR_CB , 0, MAO_destructor_cb},
" T5 Y9 y# \; n: \1 ` {UF_STYLER_DIALOG_INDEX, UF_STYLER_APPLY_CB , 0, MAO_apply_cb},' c7 H/ g6 G( B" c9 m
{MAO_MATERIAL , UF_STYLER_ACTIVATE_CB , 0, MAO_mao_type_sel},
( p9 o* m% N) T6 w" ^ {MAO_PART , UF_STYLER_ACTIVATE_CB , 0, MAO_partname_type_sel},& {6 a+ t, [; W
{MAO_BTN , UF_STYLER_ACTIVATE_CB , 0, MAO_btn_cb},
- X1 L. C. l& `, O7 X) {/ U2 I9 u" U {UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 }1 H) _/ @% R! P& a4 l% Q t9 [
};
1 `5 m( P/ p1 `& f
5 u2 z1 W( z& L9 t" @( j/*------------------------------------------------------------*/
% G4 B. i# s, Y. W$ D' o1 }static UF_MB_styler_actions_t actions[] = {3 P2 `9 ?4 A- {, f
{ "MaterialInfo.dlg", NULL, MAO_cbs, UF_MB_STYLER_IS_NOT_TOP },# k o/ w' J( n8 N
{ NULL, NULL, NULL, 0 } /* This is a NULL terminated list */
! N2 }' z4 L9 Z* E# W0 B};
2 }: `: q: J J( L' j7 O! q7 k+ I8 y( |; k% }6 @. o: f$ }- X- j
6 a- O4 ~0 s d& w2 O% E
/*------------------------------------------------------------*/
, o( K$ u9 Z& j+ f+ }extern void ufsta (char *param, int *retcode, int rlen)
9 O4 P% v: P- O4 [4 S{
, \3 ]- t; \, P4 f7 p int error_code;4 G: n1 R' t1 N* d. o
) `0 `8 w! N+ q if ( (UF_initialize()) != 0) ; \# d9 d- b$ D# Q
return;
) Y) k* C4 S& R) S! m
+ `; M' Z* }' _! v8 h$ d9 C if ( (error_code = UF_MB_add_styler_actions ( actions ) ) != 0 )
! \0 s1 {3 W) {) p' _9 m1 O @ {. V# N. b! [5 j9 o
char fail_message[133];) x. T6 u! }6 J
9 j O3 S/ c7 t6 M( t5 b: |7 \
UF_get_fail_message(error_code, fail_message);! J. P2 i' n( F2 q' K4 ?
printf ( "%s\n", fail_message );
0 x0 D- o, b G3 O: s+ M$ d4 @0 z }+ F B3 L" a# M) \# S: j
" F- d" }2 {2 b& `; c2 \
UF_terminate(); / [7 t, v, x' h z0 b( _
return;
! L1 J7 L F+ t) N4 _}' `/ R. |5 q8 ^: Z4 @. G
' G8 D+ `5 t- @6 M* d s
3 l s/ f) R# d5 X$ _
/*------------------------------------------------------------*/3 M- A* w$ v" M: R' ]! j
extern void ufusr(char *param, int *retcode, int rlen)' \ `4 y Z' p
{
4 d$ x( P0 Q5 p int response = 0;/ p6 ~7 z, G3 t7 D0 ~+ Y
int error_code = 0;
! m' @& z, j0 f0 x: q. a" } x
3 e1 E* N9 ~3 K3 G5 s if ( ( UF_initialize() ) != 0 ) : Z% s9 {: o) H8 }
return;
# m+ \/ o& w+ p$ D0 o" Q9 d2 W7 _! ]- y! I
if ( ( error_code = UF_STYLER_create_dialog ( "MaterialInfo.dlg",
2 m% O, q8 V: P9 H1 d MAO_cbs, /* Callbacks from dialog */" I+ x' f* U! {, |3 j5 F. w- H
MAO_CB_COUNT, /* number of callbacks*/
4 @/ \8 U1 w# ~. v# b NULL, /* This is your client data */9 C# F4 D8 O! Y
&response ) ) != 0 )' U9 H1 p3 F1 j- T. @ O0 R
{
$ ]4 k4 |* g! u! G r. a0 P, K char fail_message[133];
- F9 c% e. D. T% d
8 \3 }; U# L4 X4 @ /* Get the user function fail message based on the fail code.*/7 g+ U6 b" X. w9 P5 a% `
UF_get_fail_message(error_code, fail_message);
P6 S5 s' c, J! j) H$ N UF_UI_set_status (fail_message);. n: }1 ?! z9 |7 e2 w
printf ( "%s\n", fail_message ); ( w* E( s: i& J7 l, M
}
: C* _% b: Z0 J5 D0 M# G, p9 t4 w3 L& G* |# H7 t. d
2 U, t$ _% l$ X G6 _' B
UF_terminate();
; x2 c& S/ i2 A" }# |8 t, g$ l return;; d. V! p( f& l, V
}
+ j9 T: }! F7 H, t
% \0 J+ B2 J) k: J. t/*------------------------------------------------------------*/
. A N- z6 Y1 g& `extern int ufusr_ask_unload (void) G- t) N3 A4 o2 q4 z0 K4 ^
{( F K: S. t& S0 \: S! l
/* unload immediately after application exits*/
2 a5 w8 e8 B1 e2 C return ( UF_UNLOAD_IMMEDIATELY );
7 y) E3 J5 [8 i% G; k2 k$ _5 r0 g4 Z
/*via the unload selection dialog... */
6 d' F: j+ P% n- z5 K /*return ( UF_UNLOAD_SEL_DIALOG ); *// \% Y2 ]6 ?' `3 `3 G, G3 J
/*when UG terminates... */" d5 m' P7 D% @$ p
/*return ( UF_UNLOAD_UG_TERMINATE ); */ U1 M1 a+ @$ m, x/ P+ k
}
1 w% K1 y0 a. Z7 M5 g1 k
" Q- Y! w& V0 Z F
1 {7 P7 k2 d; `- P/ [1 P1 ?' [6 u/*------------------------------------------------------------*/& n( q( b' L# w6 B
extern void ufusr_cleanup (void)4 D. i+ [- y8 u0 h
{8 b' p9 ^ M0 C7 e
return;/ u; O: L0 ` m+ A" q3 \
}% Y3 y& A5 U% P! k: r0 d2 t' k
r4 i" y& F, u+ a3 y3 p0 b& E$ c: s5 I) l9 O9 J- T
/*-------------------------------------------------------------------------*/
) |: ]) D5 f, @% _5 l1 R/*---------------------- UIStyler Callback Functions ----------------------*/1 ]) x& N- U* I+ v3 W) Q2 [8 u
/*-------------------------------------------------------------------------*// Y& Y- E$ B# |% {
//在构造函数中初始化,将数据库中的产品列表信息调入显示窗口中
9 [9 H. ^& u5 z; M% P; v* P
, M; b% N; E! m3 oint MAO_constructor_cb ( int dialog_id,* b8 s3 P( V c. ]& H/ t
void * client_data,. g9 {6 m! m; m7 e2 Y: ^
UF_STYLER_item_value_type_p_t callback_data)" c( e! v! m- d8 l) N5 Q
{
" T7 H/ s/ e- c4 z, p6 h) D UF_STYLER_item_value_type_t item_data;4 j7 `: c9 k5 d) {+ M3 C, ~
2 q, Q) i g2 C7 c* g: Q+ @
/* Make sure User Function is available. */
7 R: @6 j# K. U% Q if ( UF_initialize() != 0) ' d; i, ^3 M$ ~& r
return ( UF_UI_CB_CONTINUE_DIALOG );
9 J9 A: {9 h$ l& {6 C o' V
4 ]. j+ W# [2 y4 p" B. \8 Y /* ---- Enter your callback code here ----- */
' k; b) E- }( ]% b$ N+ J5 V/*-------------数据库初始化-------------*/7 J2 U9 i' T/ r* }0 D, M' s
//----在构造函数中初始化数据库,并将材料信息显示在界面中----4 g, }6 C; n7 R8 o3 _
9 e: \- R7 u& W+ q# H( {
5 e" G9 {+ ?+ W5 L6 I! w8 {7 S z& }) d3 ~9 Y" N9 C
' Y8 F' ]* _/ a
char JigPath[120];
) N* s' f6 `. J& C% h) K* B; u strcpy(JigPath,getenv("UGII_USER_DIR"));
( F3 Y. C r9 O: @& B2 A8 u* V
) |6 t# K; q3 A1 `5 L8 G8 t& Y* E
//CString strtemp;
/ V- w' H6 t8 E# h% Z# ~/ D4 a( @strtemp = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";! C/ y( h$ A" z
strtemp = strtemp + JigPath;
) O% F3 C/ \1 Q! Q; V) ustrtemp = strtemp + "\\application\\Mao_Manage.mdb";
) [$ V/ v9 ^# u. Y- O5 K; ~) a% V4 g3 }( R( K3 z& C5 `& @( _
3 {# I0 d9 I; n! U% t try 3 e& k( B/ _9 F+ j* w
{% k. ]; ^' n# H4 p; \* z
CoInitialize(NULL);
* Z* R4 D8 z$ D0 d m_DBCnt.CreateInstance(__uuidof(Connection));& U- y' O# B" X! @% i& w0 |- M
{) _# j3 `& G0 b
m_DBCnt->Open(strtemp.GetBuffer(strtemp.GetLength()),"","",adModeUnknown);& L ?0 _/ D$ k/ S3 X! B& K2 j, K
}; M* h7 e5 ^# t' u& E2 A
}
( H% D1 V6 w# I3 e, k0 T" G% k catch(_com_error e)* E7 W3 b5 P1 {2 p
{4 Y5 |/ T! g8 V# @) r7 M
AfxMessageBox("数据库连接失败,确认数据库设置是否正确!");" j x2 i7 `, G7 N
return TRUE;9 F. {% Q7 e+ M( a5 ]: t
}9 X- E: _5 U! m/ @# k- }, M- l3 l
0 B+ h. V. m0 p4 Z4 W/ b9 Q8 v//设置按钮属性5 p2 p' |1 [3 E# L" D
item_data.item_id=MAO_BTN;
5 Z. ^% X7 z$ ~8 e- I7 B item_data.item_attr=UF_STYLER_SENSITIVITY;
' |, n' Q- j! w4 R& v8 X0 p- M2 { item_data.subitem_index=1;
: b2 |/ }0 m# Q) n" R5 f) [8 a item_data.value.integer=FALSE;
9 i- Q5 k: z" z UF_STYLER_set_value(dialog_id, &item_data); L- q5 @4 O, Y
I* @6 f- v, R
item_data.item_id=MAO_BTN;3 V% W) S3 d% D- A$ a. l7 C: G
item_data.item_attr=UF_STYLER_SENSITIVITY; `( {2 b$ p* O4 c
item_data.subitem_index=2;
: t' _5 w6 {) i/ D9 G1 i item_data.value.integer=FALSE;
; y3 {* l; C: O2 L UF_STYLER_set_value(dialog_id, &item_data);+ j3 I0 ]. ^0 l6 [2 x& k
, A4 f% X' y9 B m. q( e- }* O
//初始化SingleList 3 G7 a- l7 G$ d& h8 O4 |
//从数据库中选择类型,并列出
/ r( g6 z% I" y, M$ v2 @- |. \$ H' D/ s( R2 j, M
_variant_t var1;, k( J3 ]3 T* g& v
CString str1;" n% C Y* m( e; V- Z. z, H! H
3 s7 o; i* `! U& s( w
item_data.item_id=MAO_MATERIAL;7 O4 M+ E9 C* N
item_data.item_attr=UF_STYLER_LIST_DELETE;
* _5 U9 \# N3 w* @ item_data.subitem_index=UF_STYLER_NO_SUB_INDEX;
+ G2 @- i' L8 ]( D item_data.count=0;
6 j) e6 Z+ J% {6 [ UF_STYLER_set_value(dialog_id, &item_data);% U4 r7 F) Y: i% n( O# A: C1 O
& n. @- x* [8 x( e$ i2 w item_data.item_id=MAO_MATERIAL;
; @1 d! G0 [% E3 h( n3 h! D4 ] item_data.item_attr=UF_STYLER_LIST_INSERT;( J7 U" F. C2 T
item_data.subitem_index=UF_STYLER_NO_SUB_INDEX;7 J3 ^) j9 `6 T4 A" j; Q3 M
5 B) |) Y2 F) ^8 R m y- D if(m_DBCnt->State)' _9 H3 U( g3 b. R P
{
/ P, P$ f$ w% D% Y/ @5 R m_pRecordset.CreateInstance(__uuidof(Recordset));
5 a5 q3 ]3 b: O try
) i r. }2 B, ] { S0 t* g# C2 T0 F3 j: \
m_pRecordset->Open("SELECT Distinct MATERIAL FROM MATERIAL_INFO",
" b+ r) J! L& D m_DBCnt.GetInterfacePtr(),- C6 x4 o3 r9 [" M+ t+ j/ v
adOpenDynamic,
' P8 |7 E$ b4 U/ Z1 W) ? adLockOptimistic,
1 b. t% A0 U9 J9 o adCmdText);
; F; Y- u; v/ l; l8 R7 w try6 `0 k; i; E' Q; F+ X6 L0 B
{
, ^! d5 D8 {" E2 C9 N) i while(!m_pRecordset->adoEOF)! [0 r& s6 C, _9 H- L/ f) K l
{
b8 k8 i& L1 U if(!m_pRecordset->adoEOF)* k/ v; R) p$ i4 q
var1=m_pRecordset->GetCollect("MATERIAL");: q; Z" k' g# {; {* F
if(var1.vt != VT_NULL)6 y! Z; u$ A% {$ I0 K. x3 I% |
{
# T) [% C2 }0 G str1=(LPCSTR)_bstr_t(var1);
7 ]: U) I9 q0 }- r! X- y; ?6 k
* R. o& L( z- f( y4 m7 ` item_data.value.string=str1.GetBuffer(str1.GetLength());
1 ~. e) z4 Z9 A6 _. ~. U4 J1 k item_data.indicator=UF_STYLER_STRING_VALUE;
% g0 r) m# m a6 R4 k$ J- [! Z0 z: K UF_STYLER_set_value(dialog_id, &item_data);& m9 t/ s% v+ k' K
}
; `* c1 ]7 V' a1 x if(!m_pRecordset->adoEOF): F( n/ `" o% @2 H2 t0 M- C* G
{/ G5 S/ M4 G1 _
m_pRecordset->MoveNext();
* X; Y6 F8 M9 L3 @- y } G3 W) `+ t+ \, m9 r" V9 z
}
) z T1 s) l7 l, s6 @ m_pRecordset->Close();" {0 g: _* V$ R
}
. y2 k- \% S. H1 y' L2 p* R. { catch(_com_error *e)
, n8 @# ]* W, R; a. Y w {
$ F8 P I p9 T) X4 a# ]: Z* J AfxMessageBox(e->ErrorMessage());
: z. F* E% C$ ]2 P# z; K& c: [% x6 Y }. }# p0 [: X a) Z- s2 n$ Y
}
: L- z! e% M9 M" m" g' X$ ^ catch(_com_error *e)
' m1 S8 i: W: \' g$ R {
( s" s1 V8 v: _9 Z$ r& c AfxMessageBox(e->ErrorMessage());
2 u6 Z! H9 n5 @+ S+ U- x; E% { }, Q2 U A& k9 N9 D
}* ~" c1 v0 G7 k) I; V. t
$ K+ t2 c2 m3 j
UF_terminate ();, l9 _6 e8 B: ~+ ^
7 p, J' u1 ]# p0 C# Y /* Callback acknowledged, do not terminate dialog */* y: m. P. x& E. P1 g5 ?
return (UF_UI_CB_CONTINUE_DIALOG);
! G! b6 R; Q# t" q /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted */
( w- Y+ d. L* t1 ]1 c" e /* for this callback type. You must continue dialog construction.*/0 C# n+ ~! ?( A! s( {2 t3 x
' G1 y) {( C4 [$ _: j}) E/ A }. S& P: }
; ?3 b4 Q1 V2 O- @
/*------------------------------------------------------------*/
8 V) i: G' O1 s7 U) E/ ^int MAO_destructor_cb ( int dialog_id,( F9 o7 Q7 L. a2 y
void * client_data," H( B2 l, }! D% i% }2 K/ W* a4 s
UF_STYLER_item_value_type_p_t callback_data)
" l( O" [' @) w& _6 d{
9 D0 p" k8 x1 v# P c v C /* Make sure User Function is available. */
+ H" T1 ^" ^1 L( Z3 P& _9 s if ( UF_initialize() != 0) / d4 _" A. C w* X; J1 W) ~
return ( UF_UI_CB_CONTINUE_DIALOG );
( F$ t1 D! ?& s' @
2 C, K4 I) O4 N: ~( w$ y1 ~5 F /* ---- Enter your callback code here ----- */3 ?( [6 _/ g9 [& w+ C& U' g
, \# z4 ^% v* b! G8 M6 C m_DBCnt->Close(); //关闭ADO连接
4 A' K/ j! P; O+ f m_DBCnt= NULL;+ ~3 \3 j; |+ E, t- T, r( `# c" w! c
CoUninitialize();
/ S( s9 s) h5 e
" U# W" E! o% R. a UF_terminate ();: I/ P5 {* r' j" r/ X& }' d
6 K, B! L1 @+ [, D
/* Callback acknowledged, do not terminate dialog. */
8 V- }) Q1 }; C0 s" K+ n /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted */; |( i8 x8 q& X2 i
/* for this callback type. You must continue dialog destruction*/2 W0 r: T! D* Z) n. {
return (UF_UI_CB_CONTINUE_DIALOG);
& X0 N' i% v4 x) a
# U+ d7 ^: g' O% q}
5 C5 w# [" I6 T2 G% P, ~7 q) }. d9 k' t6 I( Y$ h; L! V" Z
* b k# _+ X1 v5 t: X4 b7 j/*------------------------------------------------------------*/* W7 n+ p' t; W& b' |
int MAO_apply_cb ( int dialog_id,7 ^# v5 |1 f7 y" n/ Q
void * client_data,1 Z3 W" O0 J7 e s$ O
UF_STYLER_item_value_type_p_t callback_data)7 _, Z ?/ Z% a; C5 n
{8 {( e: |2 Q$ ?0 }, K6 ?
/* Make sure User Function is available. */
2 F7 [5 g/ X7 e; { if ( UF_initialize() != 0)
1 V! {( n/ c* Y0 w return ( UF_UI_CB_CONTINUE_DIALOG );6 T U* g8 W. s/ A+ H7 N$ L% _
# l4 x$ d% H9 e1 J/ C( q- D3 C /* ---- Enter your callback code here ----- */
6 D; I, C( o0 B: w
6 g& K6 F7 f( V( H) P: a UF_terminate ();
3 c9 W4 Y+ H# U1 p- F8 I
7 g0 {: r. b& T7 q8 m( b# [ /* Callback acknowledged, do not terminate dialog */
/ V5 C8 j4 E- l+ Y" Y /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted */
! E2 X- j: t" [$ ^' Y1 P! u/ E /* for this callback type. You must respond to your apply button.*/
* I& k) I: d3 M" K; f( Q return (UF_UI_CB_CONTINUE_DIALOG); 4 Y0 N; o ^0 H6 Q, f% L1 o
) K+ S! ?/ X; v l}
$ [" a! N1 ?2 ]( F
( x( @# j/ h# V" Q1 @
; i& l! ]* r2 ]( o( W3 V/*------------------------------------------------------------*/2 g! w. B% A" D
int MAO_mao_type_sel ( int dialog_id,
y0 d) V+ N1 ~8 U void * client_data,- `; g% `3 ]1 m
UF_STYLER_item_value_type_p_t callback_data)
2 M: Z9 h. R+ P' l6 m8 H4 K{/ U a+ X) g9 o6 Y: p8 P$ d }
UF_STYLER_item_value_type_t item_data;, R- Y2 u! h) |2 q2 a6 x
. T t; z( v2 B+ I Z
/* Make sure User Function is available. */ 7 r0 Y) _! X% t4 `2 _ b7 m' Q- z1 Q
if ( UF_initialize() != 0)
{5 k5 P ~, t9 | return ( UF_UI_CB_CONTINUE_DIALOG );
- i0 O% q$ ^, ?: i( k* W
. `" A3 P1 E' u8 T4 e$ B: z" V+ H /* ---- Enter your callback code here ----- */9 o, q9 C9 B' t7 @1 ^2 `* X
. [+ I2 J4 d, y) X
_variant_t var;( g8 z4 B; m5 ?3 t
CString str,str1,str001,str002;
. N+ }- U& A* J+ f+ b char name[100]="";
9 Y* B2 ?; v9 g8 h) l+ ^4 Y// int i=0,j,k,m=0;
& R- N: h& z, g* ]//锁定按钮& K$ [$ ?4 m* D5 m& A/ i
item_data.item_id=MAO_BTN;
( t$ i @( I. O8 u0 M) c item_data.item_attr=UF_STYLER_SENSITIVITY;
* }: i( D4 ]2 x- E item_data.subitem_index=1;
[( n. U+ k! C5 f/ e item_data.value.integer=FALSE;
" F8 u% e4 ^$ }7 R4 f: S UF_STYLER_set_value(dialog_id, &item_data);* Q1 G7 @9 _# H& X5 ~" I/ |; N8 C- r
o% n+ ?- o% H' r: ` item_data.item_id=MAO_BTN;, ?( K# y9 q! ]8 _
item_data.item_attr=UF_STYLER_SENSITIVITY;
: \& c" Z3 f; R& M. n) d- ] item_data.subitem_index=2;
3 ^9 C5 }0 w: W R; g; p item_data.value.integer=FALSE;
8 H( Z5 k3 q+ }" l8 R UF_STYLER_set_value(dialog_id, &item_data);1 L; m0 Z9 A1 D u p0 N
" E# _, P8 w& J) v6 _. J
item_data.item_id=MAO_MATERIAL;9 W- W3 s2 _( d0 u
item_data.item_attr=UF_STYLER_VALUE; # K" Q l+ i# r K) ^
item_data.indicator=UF_STYLER_STRING_VALUE;
$ l+ N# z6 I5 f7 U UF_STYLER_ask_value(dialog_id, &item_data); 6 ~% m6 \' y* i+ Y
strcpy(name,item_data.value.string);
8 C( W1 P' D. ^) k# y* Y8 f) b) t! @: P0 [& P8 j) f
//在材料类框中选中一项后,获取其中的字符串,以此作为关键字从数据库中搜索匹配的材料;: B' u% O) M( f' P* I
//将匹配的记录显示在零件名称框中。显示方式:名称+牌号,以确保唯一性。
9 y1 v. c h% o) b1 ?+ a; a) O
+ p1 z8 |' i/ H; } O item_data.item_id=MAO_PART;
" a6 `( a, Q, ?4 { item_data.item_attr=UF_STYLER_LIST_DELETE;
' [% {5 T u" V( e; }9 I( ` item_data.subitem_index=UF_STYLER_NO_SUB_INDEX;
3 a1 r$ E2 q+ @6 _ item_data.count=0;
0 s ]6 W5 H) p# W6 V' ^ UF_STYLER_set_value(dialog_id, &item_data);
( R% T& v/ w, C9 y* {" E! A, d- D; O, F( O& D
item_data.item_id=MAO_PART;
# ^" ]8 J2 E% d: p/ V. W& _ item_data.item_attr=UF_STYLER_LIST_INSERT;
* j y6 r+ }8 |( R: ?. j! p5 X; j item_data.subitem_index=UF_STYLER_NO_SUB_INDEX;
, D* X) p# k! I) o6 L D$ B6 Z, f) s* O$ b
str="SELECT NAME,BRAND FROM MATERIAL_INFO WHERE MATERIAL=\'";. s* j% T: M5 F2 h! K/ W% p
str=str+name;
- P. i5 @' W, a/ H' I str=str+"\'";$ S1 \3 F( B; E7 W
8 O; R, W4 @, F( L' d* g% S7 ?2 i# G q9 w
if(m_DBCnt->State)
" m/ Q K$ `* @ {& o' P) s% _& }; D
m_pRecordset.CreateInstance(__uuidof(Recordset));
) v' h( X. e- r9 ?4 T" j+ O1 x) q; g try
g0 \% I. F1 N0 i, v" g" z {
( X3 A" _) z" c* D, y( l5 b* F' Q' o% J m_pRecordset->Open((LPCSTR)str, 1 v/ Q- d) c9 ?
m_DBCnt.GetInterfacePtr(),3 }$ B) k0 `/ q& o7 m; L1 Y
adOpenDynamic,; [: N( N3 W; @3 N' E" ?
adLockOptimistic,
4 V* z4 s7 Z, h# \+ B. e adCmdText);! n" v9 Q4 u! J' x* E" h1 W' P
try
6 d' U/ p, y- E% l" s/ I/ Y) c {$ g% Y, Z; e: q M6 q
while(!m_pRecordset->adoEOF), \" J& \/ Y% Y' @5 k
{: [7 H, e' P' j0 S! Q4 F( e5 ^
var=m_pRecordset->GetCollect("NAME");
+ [3 O0 `- \: I- |8 E5 ] if(var.vt != VT_NULL)
" b+ i% ^/ F% d) h; G8 Z- L, N. ] {; s8 P/ L; ^( t6 _! p. ?9 s4 d; w8 S
str001=(LPCSTR)_bstr_t(var);, V# {6 o2 G x1 H3 D
}1 p/ K4 }& N, k& \- s6 U8 }
else! S- M$ h! Z7 {1 S: c3 R E2 U! O
str001="";
8 l8 j x" J0 F var=m_pRecordset->GetCollect("BRAND");
) O+ ~, m2 y: }# A! I7 S if(var.vt != VT_NULL)
! p; d# c p z" q {. Q& }% p, t) N' ^
str002=(LPCSTR)_bstr_t(var);& B9 d. \/ W/ H/ f: T/ ~
}
+ w' N+ K) B& M5 w else& j6 w) j! ^ h. v5 N7 ^. u9 j
str002="";
/ ~* m- L, V7 d1 ?1 U f9 J
' B% z9 u2 \* q: Q) H str1=str001+"*****";- f/ L' r- n3 W5 y; M
str1=str1+str002;# N! d: V" y; u" _
: b. C: ~- M4 D4 a/ l/ a# r7 ` item_data.value.string=str1.GetBuffer(str1.GetLength());7 \! f U- u8 Y" N
item_data.indicator=UF_STYLER_STRING_VALUE;" e; E+ T# G7 `' q2 ?% @! P8 i9 e, D
UF_STYLER_set_value(dialog_id, &item_data);
$ H& B; a/ [, g, p) ?, N: E
5 Z$ @$ \, S) D6 @3 { m_pRecordset->MoveNext();
4 w$ H" R! D* V }
. G1 @. ^9 h& b2 C, U m_pRecordset->Close();
3 d0 B; j4 x) o# ^+ k6 q m_pRecordset=NULL;
: t; l' r% \9 q }1 w4 u7 u- x) V
catch(_com_error *e)3 A6 u3 R, W& @' n
{ |& P% o5 w' w5 y N
AfxMessageBox(e->ErrorMessage());
' ?/ R' X: D! |' d7 w }
9 w4 R, m1 D( O: I3 n' j }
" z5 D+ P7 {( A" `- c3 R catch(_com_error *e)6 h3 I9 I( t! X/ r
{! u, C2 \& \7 B, U
AfxMessageBox(e->ErrorMessage());. j$ r- o; X0 f" Q! H- l3 v
}
1 W+ W3 B o* h }
/ \ Z0 c' @, p) r& Z& ~2 @ 6 a9 e, P$ y! @3 v @+ c# _
UF_terminate ();
5 B) F+ r! \; P
. Z! m) T6 P3 ^4 W9 ~ /* Callback acknowledged, do not terminate dialog */- n# j' v: D5 p* s
return (UF_UI_CB_CONTINUE_DIALOG); - S# ?5 y* u+ P q6 s
' H E$ t$ b$ E2 _ /* or Callback acknowledged, terminate dialog. */
. a# w; B" t' N q, i- y3 N /* return ( UF_UI_CB_EXIT_DIALOG ); */
9 M) h! }7 {3 S {
! B A5 b& i' M4 K! O, s}
4 F2 d: e3 u) @5 w5 q
9 l4 A% \. T( j; {$ d
4 R ]3 g% ^" K8 l% y J/*------------------------------------------------------------*/
; Q+ j. m, ?8 f; j0 ?% W0 L5 d% Tint MAO_partname_type_sel ( int dialog_id,& a9 x( A4 b+ j# Q2 u" u) V) r. {
void * client_data,) \3 ^8 i( f) t& [5 n N
UF_STYLER_item_value_type_p_t callback_data)
$ M) c# C# @# {{
" D+ L8 G- w1 f f UF_STYLER_item_value_type_t item_data;
e. B& f- P' I# d* l0 _ /* Make sure User Function is available. */ 0 a x" M' X# E: \
if ( UF_initialize() != 0)
$ O9 B' C9 {" o2 ~4 B m' p return ( UF_UI_CB_CONTINUE_DIALOG );9 [. i7 r7 {, S5 {! y6 Z$ A
/ B: j$ t$ H* L8 o- U
/* ---- Enter your callback code here ----- */
; t3 p) V4 {4 r7 t//选中一种材料后,改变按钮属性:保存/删除变得可用
1 n4 ]( c3 S3 W! v7 h//设置按钮属性6 O6 d2 q# J5 A# L$ M
item_data.item_id=MAO_BTN;
; }0 k' R- b) ? item_data.item_attr=UF_STYLER_SENSITIVITY;: M4 }% k0 D, l( \6 e+ Z# @
item_data.subitem_index=1;, {. b- D1 `. A/ |) S4 n
item_data.value.integer=TRUE;
( w* a3 {+ w/ U UF_STYLER_set_value(dialog_id, &item_data);
- t2 Z O5 P! e! ~0 _9 S" i4 N3 d4 Y" x, r5 \3 _/ x, ^
item_data.item_id=MAO_BTN;! l3 O( d2 k. {9 s8 T
item_data.item_attr=UF_STYLER_SENSITIVITY;
$ H# V1 S6 ~+ a" V item_data.subitem_index=2;
$ e* ~2 W/ r+ i- B: [" G item_data.value.integer=TRUE;
- i: O: j& ~, Q7 ` UF_STYLER_set_value(dialog_id, &item_data);5 ~# A& C' x2 e6 v7 |9 A
8 E6 }# s' ~$ K! Q
//选中一种材料后,一条记录被唯一确定,下一步从数据库中定位该记录,$ w8 i% z: b% ^4 f7 t* P
//并将有关字段显示在相应输入框中。) p* `) M F2 ?5 ]1 d1 m
3 n- n0 X. P+ a: r& P
char name[120]="",name1[60]="",name2[60];# ~6 X4 i/ ^: P6 J; @! b' r% g
int i=0,j,k,m=0;2 }" m; e9 R3 A- e% [; e* T6 ~
4 K4 O* Q& Z: Q/ p6 l1 X item_data.item_id=MAO_MATERIAL;* g$ S* E2 G; c4 x6 G
item_data.item_attr=UF_STYLER_VALUE; ( e, Q5 A. d7 s" D
item_data.indicator=UF_STYLER_STRING_VALUE;
9 _0 M7 F$ T' Y UF_STYLER_ask_value(dialog_id, &item_data);
; e0 r, M) h$ u0 Y5 | strcpy(name,item_data.value.string);! X7 N$ c% o8 z$ L) V/ f0 m* N
5 \4 F; q/ @; e! H+ R
//显示材料类型名称2 M0 q5 z! c8 c. u0 i: S
item_data.item_id=MAO_NAME;6 W2 j3 G8 A- R1 n/ d
item_data.item_attr=UF_STYLER_VALUE;9 N* \* A! b2 p7 I4 h1 O$ W- s
item_data.value.integer=TRUE;
2 X% L3 p( A( m& H/ N$ j. I item_data.count=1;
6 W2 F! l: R3 L; D9 s0 I1 Q1 r% M item_data.value.string=name;! }' X; b$ T9 F) S% w
UF_STYLER_set_value(dialog_id, &item_data);7 H5 V$ ?, `- H* |2 y3 c) p4 w3 C
str_tmp2=name;
' {! K! [; w& j; P: _0 k
6 O# _- s* q' W: K6 E: X item_data.item_id=MAO_PART;1 f2 `. _: g+ J
item_data.item_attr=UF_STYLER_VALUE; ; D# T( v b! w" W- o8 C0 X# B
item_data.indicator=UF_STYLER_STRING_VALUE;
# P- M- T% K% b+ ~3 g! Y0 U& j UF_STYLER_ask_value(dialog_id, &item_data);
. Q3 u7 E. L. b. j. {" j' @ strcpy(name,item_data.value.string);% s% Y8 v) r* O. i3 l& \/ O5 s
+ O( {3 E- B7 S* s; ~/ _* g j=strlen(name);
, n& F% _7 M5 o- A while(name!='*')7 }9 `- X, C! Z8 J
{4 b A5 y4 T% l) C o& [
name1=name;
- |- b V4 M! R: ? i++;
* Q4 S5 z2 @, Q# \# s/ u8 z( g: B }
& \7 g* U+ ~* g, p+ I' b } name1='\0';: N3 W6 h1 U8 m$ A
& B2 W! D% Q# E3 t$ s8 h
for(k=i+5;k<j;k++)' a0 V1 G: ?2 P
{
1 N! Y+ ?; `1 Z$ Q, y. G name2[m]=name[k];/ X2 T# B; C9 w" O0 j; l+ a1 Y
m++;
. s* E% a: F9 `( o, c }! _" \% }4 N# [; p9 V4 w
name2[m]='\0';; k. K; s3 G& i- \% ]" R. a h
//name1: 材料类型名称;name2: 零件名称2 i& J; ]% T5 Q3 O6 c
0 v/ c" V' a6 o% [: R& C3 D8 L
# U/ Z2 i+ e5 d3 N! L3 ^' ^
//显示零件名称. R9 i3 x- _) M7 D
item_data.item_id=MAO_PARTNAME;) c- p. t- C) M7 J' T* A& C3 y
item_data.item_attr=UF_STYLER_VALUE;
$ x6 C7 S3 g# V: ?3 F item_data.value.integer=TRUE;" Q# {% m$ ?% B' Y! d
item_data.count=1;
/ k* ?% m8 t; E5 ] l item_data.value.string=name1;
. j/ m2 u/ Z( L$ \- [8 [) `5 \ UF_STYLER_set_value(dialog_id, &item_data);( J8 \* P0 e8 Y- L) }5 [. I" `
7 E0 Q1 V$ K% t$ N, L//显示零件材料牌号
3 n; ~( ]: ?, [+ `8 \4 ?9 ^ item_data.item_id=MAO_NO;
/ b: T' `0 ^( |) r0 d item_data.item_attr=UF_STYLER_VALUE;8 a2 W, {8 Z' y$ M, F: u6 X
item_data.value.integer=TRUE;2 a) C0 v- B3 ]* E
item_data.count=1;
) t d0 E5 X0 i item_data.value.string=name2; m" ~$ {: W4 ~/ U; x5 E
UF_STYLER_set_value(dialog_id, &item_data);
5 X7 u8 ^# C- t D) G" S H! u \$ |5 i( ]. ]+ k4 f- v
str_tmp3=name1;
! [. i: c# j! j0 u; o/ ` str_tmp4=name2;3 D0 a5 K7 w9 R9 E
3 S3 y2 q1 } ~% U- ~
_variant_t var1;
! ?/ m! a/ ^: f( ?9 S, i+ G. { CString str,str1,str2;: w/ a+ p2 B6 ?% c
: j! V0 u/ `4 b; f; X: {. ? str="SELECT * FROM MATERIAL_INFO WHERE NAME=\'";
+ l: D3 U- B. Z7 t7 [& { r, q' M str=str+name1;
9 `; j( U: |* w7 n; }/ p str=str+"\' and BRAND=\'";
9 ~: p3 e0 M/ T str=str+name2;9 H1 H+ b: y7 t( f% v7 M4 ]
str=str+"\'";, a1 [6 m# _& g3 i
8 h; f! Z5 P- F7 z& u if(m_DBCnt->State)" J- n- L/ T" e3 V6 M4 d9 B
{
1 p/ m9 k2 I% o" z6 U7 B2 k m_pRecordset.CreateInstance(__uuidof(Recordset)); m7 ]/ e L: [( L9 a
try% l- u) X0 D: M1 M
{
$ L+ M, G' I$ Q7 t! r* A1 X# O4 s m_pRecordset->Open(str.GetBuffer(str.GetLength()),
( H2 p/ U6 g9 W. f m_DBCnt.GetInterfacePtr(),% \5 i1 p& J5 B% [# K
adOpenDynamic,
U- Y% c( k% i# `; R- w adLockOptimistic,
& J" e6 D1 O; R1 p, h/ p adCmdText);- o! b K: D9 W3 [5 F
7 G/ I) l7 l, x
if(!m_pRecordset->adoEOF)
% K# }. n' H/ R9 Z var1=m_pRecordset->GetCollect("IID");
w4 y0 g1 o( q1 s- l if(var1.vt != VT_NULL)
: p' p, a/ u8 @' o* V str1=(LPCSTR)_bstr_t(var1); j# C& h& r; e- L3 c p* [8 L
else# a2 M' t6 @8 ?8 }. d7 t
str1="";2 j9 o7 ^; ~+ Q; q1 a. I
str_tmp1=str1;0 w: q0 U! y3 x5 A
G& g( ]) m5 T; \" D
if(!m_pRecordset->adoEOF) 7 l) W! @; w# R: m
var1=m_pRecordset->GetCollect("GB_CODE");
6 Y: _; w, v0 y5 X if(var1.vt != VT_NULL)
! D$ |8 n5 G3 o& f( Y2 q* G str1=(LPCSTR)_bstr_t(var1);
" J) L: \- h6 q else
9 C. ~4 J* T; U. h( o9 z str1="";" V$ }- k3 D* ?% k& A1 ~' Z) s
if(!m_pRecordset->adoEOF)
" F- B$ T! b+ L$ d& }% ^ var1=m_pRecordset->GetCollect("NOTE");
( N: h. U0 d% V" ? if(var1.vt != VT_NULL)0 z$ B( k+ U7 H
str2=(LPCSTR)_bstr_t(var1);
4 E5 r! W+ [! }4 v4 v3 w& d else0 S- O; O" c6 F J, G9 k9 H( e0 K q% H
str2="";! J; m) S( w9 m; d* C7 M
}
4 _4 Y& p% B1 G) e4 ^% R catch(_com_error *e)
2 s2 O+ d- x) w, d* U2 x {
" @7 p, g. P0 }8 P0 t AfxMessageBox(e->ErrorMessage());' X% K/ |0 J3 ]8 H
}, c; d l0 T, Z% U- y& B; g
m_pRecordset->Close();
* D* h( |4 p. J- F! x7 ?5 l }
1 Z/ c+ V. r- A+ U9 f, _$ y* _9 U" H0 D% g- f2 a: |2 `; G8 a0 D8 S( G
//显示国标代号
9 i C8 l8 q) g' e Y& F# Y1 ~2 m//显示备注- o5 o5 @4 o. W8 O1 O+ _
item_data.item_id=MAO_STD_NO1;- v# j# ]+ [7 e$ H0 I6 P: l
item_data.item_attr=UF_STYLER_VALUE;6 ~+ |2 y- p$ G
item_data.value.integer=TRUE;2 W- I( ]" a& H+ r! T
item_data.count=1;
2 ~0 `$ v/ Q8 I7 @6 q+ J: p item_data.value.string=str1.GetBuffer(str1.GetLength());
4 `# ]/ ~* s0 B: W! N UF_STYLER_set_value(dialog_id, &item_data);
) w: Z4 [1 l2 m- r! v% V2 [: h1 ^( E' I0 n" X4 V
item_data.item_id=MAO_NOTE;6 J! b! P! @5 J4 z2 I! f1 }
item_data.item_attr=UF_STYLER_VALUE;8 k7 `# t0 ~2 f1 R4 c
item_data.value.integer=TRUE;
: j0 G8 t+ N0 C. n7 c item_data.count=1;
4 q6 f* J& o* h b item_data.value.string=str2.GetBuffer(str2.GetLength());% G7 Q7 [6 ]+ v" u" T9 G9 _7 A3 e
UF_STYLER_set_value(dialog_id, &item_data);
8 F u8 C0 M3 {' N. `0 m+ n' {9 f( I t6 s
str_tmp5=str1; p5 b: {8 ^# A# W" S
str_tmp6=str2;+ k/ G! k! y2 X' K3 Q
8 S7 Q1 @4 D; U: o0 q
UF_terminate ();
2 O( ]: f; ~ z7 J9 J [$ G" v
! Y6 j6 \. Q! R /* Callback acknowledged, do not terminate dialog */9 r+ V. m: z) ~: P; t* B
return (UF_UI_CB_CONTINUE_DIALOG); 2 p: r, v' M0 Z7 R( V
; x2 }# P! O& Z' o& a0 G
/* or Callback acknowledged, terminate dialog. */. Y0 D3 ?: n6 f/ U
/* return ( UF_UI_CB_EXIT_DIALOG ); */: h6 h9 V# }$ a! x" V8 Z
2 K1 Y3 q, T% y" A5 M, ?}
/ v( Q& c; m5 Z4 d. N$ W/ o- n9 w% _6 J2 y3 S/ \2 |
& K: {6 E2 q1 h6 G" ^/*------------------------------------------------------------*/
8 P3 `4 j- X- Q$ Uint MAO_btn_cb ( int dialog_id,
: r) A+ z" C, L) W; S' | S void * client_data,7 e3 o/ V( `/ ?( M4 g* o
UF_STYLER_item_value_type_p_t callback_data)9 {* w2 h# J. t2 h. q
{
' m9 P# w2 [3 S: x w UF_STYLER_item_value_type_t item_data,item_data1;, |% f5 `! s) c% V
/* Make sure User Function is available. */
" I6 P3 F* N6 b4 Y' O0 k# l& f if ( UF_initialize() != 0)
R3 Z0 q* @7 ^3 E7 C& b return ( UF_UI_CB_CONTINUE_DIALOG );* W- C* E& ?0 M
0 j" J# v; n8 P: a& X. a, I3 w
/* ---- Enter your callback code here ----- */$ M* X* M9 ^7 ~4 q: k" d' d) c
& U" b4 N' `7 H7 E2 Q9 Z6 o( { _variant_t var;
# g; l& K) M3 G/ w4 ^( h7 } CString str,str0;
8 M& a3 I! ^5 \" n: f
- g" N0 ?) o' d+ N//获取按钮的索引值
+ O6 @( t$ n& M. ]+ D int BtnNdx;
' t. Q: z' i s$ D4 G) G item_data.item_attr=UF_STYLER_VALUE;
' }7 v5 F) Q# _& l0 o# ^# [ item_data.item_id=MAO_BTN; % u; R6 X/ P- N* a! g
item_data.indicator=UF_STYLER_INTEGER_VALUE;
7 ]* e2 ^/ o0 {; U6 | UF_STYLER_ask_value(dialog_id, &item_data); - U' L& m N7 v; W" d2 W4 L
BtnNdx=item_data.value.integer; ! n1 Z8 N7 l3 ~0 m5 s
( @/ V4 j4 ]) o& G//添加新材料
' S& d8 [3 i: p; k9 q; D if(BtnNdx==0)
; a! C: T5 e2 t% v7 n z {
8 z+ c$ _6 g* P2 ]5 y7 H; T add_mark=1;
: ^: p9 P5 D. v/ `8 E
* U% n+ i3 e$ A5 N //点击添加后,清空输入框中的内容4 _* y h3 L: J! m: W9 c
item_data.item_id=MAO_PARTNAME; //零件类名称! h! B+ K. U! B4 Q
item_data.item_attr=UF_STYLER_VALUE;; p5 q, C% I [! R& ~4 C' ?
item_data.value.integer=FALSE;
7 B; C% q& J8 z UF_STYLER_set_value(dialog_id, &item_data);3 s6 i$ C: _$ Z% T6 k) Q' k
item_data.value.integer=TRUE;* C2 o8 V' v$ D% X, t7 A& R
UF_STYLER_set_value(dialog_id, &item_data);2 q! g7 s: H+ O) O- b7 @
D# \7 f! { \7 L
item_data.item_id=MAO_NO; //零件牌号2 _/ B1 q6 u6 h3 |4 j8 p8 Z
item_data.item_attr=UF_STYLER_VALUE;
( P: g, i- M- {/ Q5 T' I e' L item_data.value.integer=FALSE;
; R! J2 R* J0 }; x UF_STYLER_set_value(dialog_id, &item_data);
2 }( T: Q% w" V# l" f item_data.value.integer=TRUE;# j1 }& v! s- `* j) O. M9 F
Z) B# \1 V5 t' ^1 D5 T
item_data.item_id=MAO_STD_NO1; //标准代号
* g# m* ^6 ?! X5 @% G9 G item_data.item_attr=UF_STYLER_VALUE;9 J+ \1 L& l& B K, x# \% @
item_data.value.integer=FALSE;0 j" c" W8 c4 z
UF_STYLER_set_value(dialog_id, &item_data);7 M) S! N+ [. j# `# U* y
item_data.value.integer=TRUE;8 D3 a2 E. W2 E8 `
1 Y/ |7 k! O! T0 s- H+ F
item_data.item_id=MAO_NOTE; //备注% i9 H2 S4 k p: J0 L# ^
item_data.item_attr=UF_STYLER_VALUE;
' n0 z: E1 Q1 {2 K/ G4 b item_data.value.integer=FALSE;
$ z6 p9 ?3 J: n# @ UF_STYLER_set_value(dialog_id, &item_data);
% N- f* q6 i3 O9 W9 O$ j# o: q item_data.value.integer=TRUE;
' e% S0 t G8 W; w* F. y3 z }
5 @5 z) Y# S7 x1 `' u: g" ~8 |- {6 C- F4 _1 j
//保存修改后的信息
) v/ T5 D( x' S if(BtnNdx==1)
, @) }0 u( h2 ~3 S {+ _3 l. x$ | M; f' Q
char temp1[80]="",temp2[80]="",temp3[80]="";6 J5 C$ X5 l1 z( V' B6 r& I4 F
char temp4[40]="",temp5[200]="";
3 T9 z, c$ |4 M, K' i
) u, K: A$ t, w//获取当前输入框中的信息
9 `9 q T3 i B' n t( N item_data.item_id=MAO_NAME;- `& Z& z7 ?! ~/ x
item_data.item_attr=UF_STYLER_VALUE; 8 @" p# ~8 y/ ^2 N: D2 S
item_data.indicator=UF_STYLER_STRING_VALUE; ) G \' S; V6 ~1 c
UF_STYLER_ask_value(dialog_id, &item_data); 0 Z, k* R) p5 v# L& z* }& j
strcpy(temp1,item_data.value.string);: Y0 s# A* c: D7 M
) e" V( J0 Y* ]- ? w
item_data.item_id=MAO_PARTNAME;8 W' h0 H6 p" I# t0 _7 t8 P, m
item_data.item_attr=UF_STYLER_VALUE;
. b% A4 g& t* r0 X/ v k7 E item_data.indicator=UF_STYLER_STRING_VALUE;
( ^2 K; t2 W/ n M$ j" Z6 e- q, p: r UF_STYLER_ask_value(dialog_id, &item_data); + g6 Y! ]7 O, x v+ Q! z) ]* I
strcpy(temp2,item_data.value.string);8 M' K+ @& a1 k! B Y) T
, X4 E/ X5 v4 }
item_data.item_id=MAO_NO;
& H6 a. P1 d7 ~6 @$ n' u item_data.item_attr=UF_STYLER_VALUE;
% D: d+ _, }) `/ w/ I, t8 S7 C. y V item_data.indicator=UF_STYLER_STRING_VALUE;
0 o* E: |" W% @7 T UF_STYLER_ask_value(dialog_id, &item_data);
( L7 \* d) q* ]. G/ t" Y strcpy(temp3,item_data.value.string);
1 P, n$ M$ e, a8 H- M( C f+ s6 ]3 {" v2 _- {: C# k" ?8 N8 H
item_data.item_id=MAO_STD_NO1;
$ ~ m, p5 S; i! l- K item_data.item_attr=UF_STYLER_VALUE;
. k4 @8 v) }( ~( S1 G- [ item_data.indicator=UF_STYLER_STRING_VALUE;
! r/ ]7 f4 G; r UF_STYLER_ask_value(dialog_id, &item_data);
: Y5 D7 I( V$ P6 A& H strcpy(temp4,item_data.value.string);
" \) f z3 U2 T4 A- h
2 I1 {, g! n7 R6 R1 i+ j+ T2 }1 R item_data.item_id=MAO_NOTE;% j( `" k# v( O9 z
item_data.item_attr=UF_STYLER_VALUE;
4 O6 @8 F$ o4 {# q1 @0 P, J! p5 W item_data.indicator=UF_STYLER_STRING_VALUE;
9 S$ C' m; \8 r$ a* j UF_STYLER_ask_value(dialog_id, &item_data); ; v) [0 l7 N' C1 l
strcpy(temp5,item_data.value.string);
4 s# M# L7 d! U/ s" @
* g! h6 M) R8 A1 X% S# J if (add_mark!=1)) ?$ a6 ]& T* q3 C8 W" f0 p( L6 @
{0 I6 l- ?) L. w Y8 h/ h
if((strcmp(str_tmp2,temp1)==0)&&(strcmp(str_tmp3,temp2)==0)&&2 e5 F! N! |: |3 H9 U4 n- R2 P2 X$ h* J3 _
(strcmp(str_tmp4,temp3)==0)&&(strcmp(str_tmp5,temp4)==0)&&& J2 x3 h, C7 V( ?
(strcmp(str_tmp6,temp5)==0))- o7 w" C/ `8 q9 b9 N( L
{
( d8 U4 V! a2 |' ? return (UF_UI_CB_CONTINUE_DIALOG);1 V( x+ i0 z* u# s
}: a$ d9 m7 X* s) o
else
q; P4 ?9 l q% N- q6 G {
+ O$ Z2 [! ?) K0 S+ | int info;
$ S/ c' B/ j+ S$ G* ] info=MessageBox(NULL,"纪录已经改变,是否保存?","信息提示",MB_YESNO);
* J9 q" G$ @0 \! B) ? if(info==7)
p) e( v4 {# Q) R return ( UF_UI_CB_CONTINUE_DIALOG );# S% t+ {: G9 L9 W
//如果选择"是",则保存修改后的信息, S I, t* P# O3 ?$ E# P
, a* o- D& P& J if(temp1[0]==NULL)! O6 q/ ^0 M0 n7 z/ P) o' _
{; h& W/ |/ t2 I: }+ N& Z/ ]2 t3 p- s
uc1601("材料类别不能为空!",1);, a% \ Z/ F) P# c2 ]
return (UF_UI_CB_CONTINUE_DIALOG);
1 H& E# H( O7 j Y6 \, ^ }/ h) }/ k# ~; d8 F8 w
# D+ i8 l* J! C+ z$ V5 u: H str="SELECT NAME,BRAND FROM MATERIAL_INFO WHERE NAME=\'";: t; Q% q" {+ V3 }5 P' O+ C
str=str+str_tmp3;
8 l: m& P+ J! j8 f str=str+"\' and BRAND=\'";1 o2 X& [+ t4 a, O3 A6 G
str=str+str_tmp3;2 }0 r+ S! v5 n- C
str=str+"\'";
2 c1 E: R( X4 d& H7 C- H8 Q z" y: X, H8 R* p" G' G
if(m_DBCnt->State)
1 H" E9 l x4 c( Q4 E {
* p8 V) l, A* F% C( l5 O m_pRecordset.CreateInstance(__uuidof(Recordset));$ @9 x0 g$ S" l6 R/ r7 G8 F9 q1 a1 u
try0 p5 I6 Y# O/ t3 E
{* c2 ^6 o+ E9 a3 B- y4 [9 I; z
m_pRecordset->Open(str.GetBuffer(str.GetLength()), ) z5 D" r, i) J5 T0 F
m_DBCnt.GetInterfacePtr(),$ |2 d1 e0 P1 r% ~
adOpenDynamic,7 s; ~) ^* N- s% g9 ~1 [" t6 w
adLockOptimistic,
! E! x4 S! k/ J- C( C6 J- d adCmdText);
2 `' S! j0 P& |- J }& n x, b0 P( F% n$ b
catch(_com_error *e)2 M6 Z2 t* r2 d/ c
{
- q: y- C' z8 i. q AfxMessageBox(e->ErrorMessage());
' e- P! {/ g. x }
. f9 e9 V [8 R// if(DbType=='2')7 ~' M$ X0 L" v' O1 i. A$ ~
{* W$ D6 c6 S' F! g. Z
str="DELETE FROM MATERIAL_INFO WHERE IID=";1 n0 c, d# s x8 W, K$ N; T
str=str+str_tmp1;
, Q3 y! g6 m% A6 P try) O! {8 o5 D1 Z, Z2 p2 L9 a
{% w6 @! }# G1 X4 N! d+ |
m_DBCnt->Execute(str.GetBuffer(str.GetLength()),NULL,adCmdText);6 O8 I7 C% v4 _9 [- `" I
m_DBCnt->Execute(L"COMMIT",NULL,adCmdText);
( g0 F6 E+ u6 P4 u1 p6 n }, n- r ~9 Z/ B' _: A$ _: D3 j! R* K
catch(_com_error& e)
! x5 P1 h( l+ m4 v2 a {7 k& p3 r6 M) Z9 E" c
}2 A9 l; R$ {; S' ^ T& l1 I
str="INSERT INTO MATERIAL_INFO VALUES(";
+ Z* B, S$ V/ i6 g9 E/ H# y str=str+str_tmp1;
1 @" X3 i v( w0 D( |$ m8 e str=str+",\'";+ r# G+ N( o" k# L. O" m; X3 P
str=str+temp1+"\',\'"+temp2+"\',\'"+temp3+"\',\'"+temp4+"\',\'"+temp5+"\')";: J8 _4 }0 Q* z7 K
}
( r3 W1 {6 V: W& w try ~* H2 l7 Q! Y4 P* ]- x
{
4 E: S* G- a4 l$ }% ]% O0 B m_DBCnt->Execute(str.GetBuffer(str.GetLength()),NULL,adCmdText);. [! K9 u8 t7 h, m$ W
m_DBCnt->Execute(L"COMMIT",NULL,adCmdText);( O$ l" r: b/ f$ K) R
}
8 ~# J. t9 H) ~ catch(_com_error &e)
! ]+ V7 M" F7 b* o; X/ r {
% o& a4 P3 V1 W# W; m& J2 g // AfxMessageBox(e.ErrorMessage());* |+ s" P$ x! X: `" _' D( K
}9 |$ a% ]% ?; B' s2 Q2 T
7 b; G7 h- Z2 c3 ~, E
AfxMessageBox("修改成功!");
0 M/ R0 H6 c) l# W% ~2 K6 ]$ X }
2 I. g- B( O0 A# X7 F
; s+ t ~0 T. C- u if(m_DBCnt->State)! e% m9 S6 [# K
{
' p$ t7 z0 K) p! G0 p m_pRecordset.CreateInstance(__uuidof(Recordset));
7 ]7 T: X" U5 n z% D) n; C) p1 H try1 g$ G& V9 x" N2 O4 g! _% j# ?
{
- i& O2 u; w6 S# D m_pRecordset->Open("SELECT * FROM MATERIAL_INFO ORDER BY IID ASC",
; C% S! w* f+ J& Y1 ? m_DBCnt.GetInterfacePtr(),
+ W+ X$ H$ a6 M/ o U4 ] z; Y adOpenDynamic,
0 z5 X6 `; J; K7 w4 b S- W6 { adLockOptimistic,
; Y, H! a8 N9 [ adCmdText);2 X/ ~, k* j) O3 v1 ^+ t' L/ i% b
}
+ T5 P1 `: l( y! {9 v catch(_com_error *e)! b( S+ |6 b! z7 ^8 k
{
' M1 F3 @4 U- _( o AfxMessageBox(e->ErrorMessage());
" H1 s u* w: Y* X }
. Q+ d4 l! o* t$ } }$ x3 Z5 G0 ^% T
}}
& C7 m, _- Y; E6 g9 y//点击过添加按钮,现在保存的是新添加的记录,保存完成后将添加标记add_mark=0+ [$ q" G# |9 @$ z' K* ~
if (add_mark==1)
! _9 B4 o4 g: M+ W {( r. Z9 ]( z8 s, C
if(temp1[0]==NULL)9 o5 _- E @/ G2 j6 l$ G+ H
{. p; n% T) }4 c0 a
uc1601("材料类别不能为空!",1); r# v7 {6 i: W9 F" e
return (UF_UI_CB_CONTINUE_DIALOG);
s6 E; a( p/ b) K }- M5 N% p0 r$ S6 c/ A) d3 z1 b$ Z- J3 U
//确定当前表中的最大ID号6 ~: H* u8 y' F& j. z, r' I
//select MAX(IID) from MATERIAL_INFO
. D, y! t9 e. n) z if(m_DBCnt->State)3 Y! V i, l0 f. U) _, V" k$ _
{$ G- y# s. C9 ~3 ]
m_pRecordset.CreateInstance(__uuidof(Recordset));5 G3 k& n- H1 a9 |$ @5 h
try; a' A5 r- m) U1 X2 c
{+ O9 J9 a/ k. y+ Y7 r% E! x$ D
m_pRecordset->Open("SELECT * FROM MATERIAL_INFO ORDER BY IID DESC",7 }7 v9 v9 F u6 m, R8 A3 v
m_DBCnt.GetInterfacePtr(),( r5 H3 J; h1 `4 x5 F/ {% ?9 B
adOpenDynamic,& g( N; E) Q+ i( X( n7 E
adLockOptimistic,
2 \8 Y% y+ f: r9 ^/ \ adCmdText);
4 R6 t5 r; u% A2 Y: R4 s }) D/ E7 q k* }: q
catch(_com_error *e)
" n }% _) \! J9 C& J3 q {
: |1 H9 k+ i$ _3 Y AfxMessageBox(e->ErrorMessage());
8 }7 c* n* B+ o* v/ i6 U5 D }
+ [% d v7 t7 a6 Z3 c" m# J; M }
4 l0 h% I8 g9 Y3 [ try% W* v; ]0 {8 v/ L8 o
{: O/ s* S" N, n7 [$ n% q1 G- _; a
if(!m_pRecordset->adoEOF)* o2 c4 Q* _& X# ^
{
& y) ?! F1 j: ^& b w% ~, b var = m_pRecordset->GetCollect("IID");3 E3 ?7 {+ c0 D+ h& U
if(var.vt != VT_NULL)% v: H# z4 ^1 E8 H
str=(LPCSTR)_bstr_t(var);
& O$ W4 d2 q* g2 ]( }" M2 s4 b else
1 B, p- l) `6 d0 S str="";
3 d3 a* F* z3 _. p6 ^$ w }
1 y# {$ R1 e! w( X; F7 v }
9 V/ Z* k8 w; h, a' d+ R catch(_com_error& e)! u5 x4 Y$ Z- c+ D* o9 C# w
{' b2 r4 s* V' D1 `4 l
AfxMessageBox(e.ErrorMessage());8 K* {, o" s* U- l1 r' a" s, h
}6 L: \# n8 ]+ s" d' m2 @/ a( f4 O
8 C: X" ~1 z% s str0="INSERT INTO MATERIAL_INFO VALUES(";1 P5 p! }8 I6 \, T. A* h
str0=str0+str;
# O0 n# X2 h& ?2 q; l! J y str0=str0+"+1,"; //在原有最大号上加1
9 b! g7 F9 u0 i# E8 ` str0=str0+"\'";1 L' }" K3 n5 r& W
str0=str0+temp1;
. Z8 H+ b' c9 v0 L; _* s( {% G str0=str0+"\',\'";( T2 \3 i6 n) Y) ^2 ~2 \
str0=str0+temp2;
2 k$ G. j3 e7 `+ }# }, o str0=str0+"\',\'";
$ P/ U# x) X- h+ q/ y O0 }0 B str0=str0+temp3;# X8 K1 J3 \5 G8 g" J! r9 j
str0=str0+"\',\'";4 Y( A6 J& H0 |. E c3 M
str0=str0+temp4;
. G* \4 M- }4 f+ Y0 O str0=str0+"\',\'";
8 s y8 ?* C$ f* @- K str0=str0+temp5;, O! w, J# j0 V3 w) t7 l: e5 A
str0=str0+"\')";
' C. l! x% N1 x3 s$ X) L, {5 ?0 \/ M' E5 \1 H3 K: B( q
try
; k& N) n2 I# R+ [4 A/ p {/ n% P( Q( L) N! q% i
m_DBCnt->Execute(str0.GetBuffer(str0.GetLength()),NULL,adCmdText);& N6 X0 [5 G* \9 q
m_DBCnt->Execute(L"COMMIT",NULL,adCmdText);9 v1 Y4 q, E2 X5 U
} & B# s+ R( U% I
catch(_com_error& e)2 }* L( a1 z7 U" n( X$ O
{
N$ h+ ~$ d* }! m- n0 s// AfxMessageBox(e.ErrorMessage());' G6 c6 N) J# E0 q% K
} # R' S) g* c, i# P& W
AfxMessageBox("新记录添加成功!");. I% ^) q) X; k2 V/ D
m_pRecordset->Close();
) t* g3 [9 g& o/ A5 [7 Z( d1 }. x: ]& K6 B/ l: Q
add_mark=0;
, G9 z% `% }0 U+ i! C//添加或修改后的保存完成,并设置add_mark为"0",即未添加状态+ i* `0 i+ ?, i
8 M0 r& ^8 ~9 ^" ~( {/ `$ q7 f& u/ c, a }
3 \- N2 h @: m' n8 i//下一步是刷新屏幕,将添加完后的信息重新显示在屏幕上7 ^" i2 r5 b" f) u" l
//材料类型单选列表框" o) F: a0 i* X5 h2 T6 }! y
item_data.item_id=MAO_MATERIAL;( G7 M2 o' V6 B& S
item_data.item_attr=UF_STYLER_LIST_DELETE;
# @) `' t# k, B$ l3 t4 r' `( p8 o+ `. d item_data.subitem_index=UF_STYLER_NO_SUB_INDEX;, I( J2 e" W; G- K8 O5 e
item_data.count=0;
$ p6 W# p% B1 y8 c2 k$ U! N0 } UF_STYLER_set_value(dialog_id, &item_data);
1 p1 u: D; W/ G! u1 R7 T {
9 `: x5 L" P6 J: P7 s item_data.item_id=MAO_MATERIAL;
* P8 `7 |% q+ j2 h/ m$ D1 ~; F item_data.item_attr=UF_STYLER_LIST_INSERT;: A0 t. i+ `" \0 Q
item_data.subitem_index=UF_STYLER_NO_SUB_INDEX;& |' y* i1 t/ F( l
1 J7 ^6 ~& ~$ @
//零件类列表框, A$ ~, c6 g: n, y; i9 [
item_data1.item_id=MAO_PART;# [) a) V$ b7 Q* n4 S: f8 r
item_data1.item_attr=UF_STYLER_LIST_DELETE;
; O, |# i6 K( n* h4 |9 _4 { item_data1.subitem_index=UF_STYLER_NO_SUB_INDEX;
* F4 X0 w7 e1 s% ?: |# ` item_data1.count=0; % Z$ v* ?9 ]& B- N3 m
UF_STYLER_set_value(dialog_id, &item_data1);' R- D( G7 H( b8 o
! _- e3 N! E- }" W
if(m_DBCnt->State)
0 ^% Q+ w" p5 Z, _+ n+ t: D+ _. N5 O {
" r( Z3 A7 @: _$ E3 z9 u6 ]% \ m_pRecordset.CreateInstance(__uuidof(Recordset)); f8 k+ h8 v2 G$ F
try
- k, s& B+ F" `* X; J! g# x {# R c8 q( e) [+ m" i, J
m_pRecordset->Open("SELECT Distinct MATERIAL FROM MATERIAL_INFO",
+ v: Q# s2 o6 W! a& q9 e m_DBCnt.GetInterfacePtr(),
; `8 s$ |2 W+ q5 I6 l adOpenDynamic,
# ]; a$ z, _3 G adLockOptimistic,
$ V# W; _0 S' O adCmdText);
$ i1 Q/ j6 ~5 h& J/ Q8 ? try7 D& |# z5 D( W: A! \
{
. h5 g0 r- E) U* V4 J0 ]$ n* M6 {1 q3 p while(!m_pRecordset->adoEOF)+ ]3 H) I: r' B5 H
{1 i- g' }) l! Z& {+ n% F
if(!m_pRecordset->adoEOF)3 ~7 l' N: U( \; [ K# K
var=m_pRecordset->GetCollect("MATTYPE");; |0 B5 K* \6 ~6 r- S3 C+ J9 E
if(var.vt != VT_NULL)" T0 N2 h! f5 y. _6 P9 T6 T
{! X0 M9 q" h$ a S' B
str=(LPCSTR)_bstr_t(var);2 g+ w7 O, L) S
item_data.value.string=str.GetBuffer(str.GetLength());
( f+ G- c+ ^; B& c3 @ item_data.indicator=UF_STYLER_STRING_VALUE;
) \; f4 E3 k( r T UF_STYLER_set_value(dialog_id, &item_data);( H" K3 n1 C5 v; r c- U' _( j
}; ]1 K; ?! O9 R$ \8 O
if(!m_pRecordset->adoEOF)8 W8 i" c- J( H" ^) ~( f4 ?
m_pRecordset->MoveNext();4 ]1 U9 P% Z$ z% D d; a
}
* ]3 T3 Y3 F1 l2 n: l m_pRecordset->Close();( I7 G% r7 K: F7 ~% @( H3 K' A/ \0 B
}
, Z% R+ r( H7 a0 l: @$ L catch(_com_error *e)4 d6 N/ |5 S, |- t2 m( G C7 O
{2 ]2 f+ ~0 Z! V' d( R8 _$ G
AfxMessageBox(e->ErrorMessage());# N2 F8 _: M$ S6 @2 o
}3 i3 E+ V. r6 r3 W
}
' a" O" s- W* M' n, T. A. `, ?5 t catch(_com_error *e)
9 H$ m; U, A; a$ ~! [ { 8 o/ O3 m4 ?6 [5 {8 G, x7 K
AfxMessageBox(e->ErrorMessage());) O0 t) i. y, N
}
9 m! [0 H; ^4 j9 c4 b }
. o# L5 g0 c- s* u* z6 O4 O//锁定按钮3 |9 G0 }# }5 @% X& ~
item_data.item_id=MAO_BTN;( A# }- Q+ H5 j4 i# }
item_data.item_attr=UF_STYLER_SENSITIVITY;; @ b9 N, O; ?- d% P
item_data.subitem_index=1;
2 F; {$ P' Q* W0 B7 y item_data.value.integer=FALSE;
. c& {/ r3 w; C# p& s UF_STYLER_set_value(dialog_id, &item_data);
9 f5 v" j7 ^( ?( d* x4 s9 p+ \: a- F( b |3 _6 g6 ]! {) R
item_data.item_id=MAO_BTN;
H& v) }" @( T* p& |& D, u item_data.item_attr=UF_STYLER_SENSITIVITY;
, L& I0 u6 c8 U% z; V Q item_data.subitem_index=2;
7 F/ Q$ a- ?: i4 j item_data.value.integer=FALSE;- ~8 ~- p0 D3 |0 V+ C6 F1 H* `
UF_STYLER_set_value(dialog_id, &item_data);
$ z1 |! J$ v. h4 O+ g) Z+ i
+ U4 R$ r7 s& Z4 {* S/ F }
! ?, M6 B' r/ U3 A5 b$ W: [& O. H" C" I* o
//删除材料信息1 ?1 H+ m1 O' v& w, R0 e
if(BtnNdx==2)* ^( d0 U; m% B, G. c, q
{
0 r) b. i' b5 z/ F& r/ ^+ P: f! s0 W- } str="DELETE FROM MATERIAL_INFO WHERE IID=";) @( o* g" B7 y3 Z
str0="SELECT * FROM MATERIAL_INFO WHERE IID=";
! _. a) E7 f, r str=str+str_tmp1;; U: p! y4 b) H. l' f
str0=str0+str_tmp1;
7 R' x" I2 ?: {$ L* s( l0 J) S8 b
( Y8 q; F3 j! k; l9 {$ h int info=-1;
6 f5 {& T5 }& g7 v+ I4 V info=MessageBox(NULL,"您确实要删除选中的纪录吗?","信息提示",MB_YESNO);
5 \1 H9 f6 Q! W5 t5 D7 L d if(info==7) //选择"否"
4 ^$ N+ e- F3 I- I {
7 @$ X8 `5 Q" D1 q6 H1 }$ Y return ( UF_UI_CB_CONTINUE_DIALOG );7 E' p6 n) ?! d6 I
}5 j$ H h$ W% b
else
( k# i! Y4 o' s4 L8 s {6 f ?$ G. @: L" K! v/ w: V+ U
if(m_DBCnt->State)
; `, R& N. W |* f: o {2 l, h9 Q. t: g1 K
m_pRecordset.CreateInstance(__uuidof(Recordset));& V! b. W7 P# a$ X/ i, C4 m5 w
try
7 v9 Y- q; J( p5 {' x5 [ {
~0 j2 U7 n! e0 q: Z m_pRecordset->Open(str0.GetBuffer(str0.GetLength()),
8 R; Z+ l3 k* }' |+ e9 Y m_DBCnt.GetInterfacePtr(),
$ a F, {' l& o+ { adOpenDynamic,
. l; p' D, N% H- \ adLockOptimistic,
. k f J5 M w8 j1 X9 m adCmdText);
' e$ P5 U6 S: ]) l, y% ~ }) v* T& z& E% t
catch(_com_error *e)+ _: B. u% F5 Z# {+ I
{
/ ~) t9 m6 j9 ?8 O// AfxMessageBox(e->ErrorMessage());; [: {6 `" |8 f+ p
}& j1 ?! d# F, S: a0 Y- x, |8 e
try
+ S- s( P: R1 T/ d) i! a, k {6 k! t5 q, U4 V" F! }$ Z' @
m_DBCnt->Execute(str.GetBuffer(str.GetLength()),NULL,adCmdText);1 W6 h6 @, J5 {6 P
m_DBCnt->Execute(L"COMMIT",NULL,adCmdText);
. j7 Y* o- h2 b4 Q' T }
8 E6 L8 V8 T' d$ q7 R& G catch(_com_error& e)2 F" y& c# j4 [( a4 {+ ]
{+ v t$ j! P# q" J" p8 q
// AfxMessageBox(e.ErrorMessage());0 c8 n( h8 C( F
} / Q: |4 w3 h7 F+ g% V; |0 E1 x0 M
AfxMessageBox("删除成功!");% N- D. G9 i/ u; E% A4 t/ Z8 U. ^
- L0 N$ a' j; j3 b9 p
m_pRecordset->Close();' ~' q7 X4 i' }/ G& w
} M5 D3 @2 R( U% {2 Q4 [* z
//删除成功后刷新记录显示
& P, x! W5 K: T4 N0 K* U! o- w//材料类型单选列表框' s) I* n2 X1 c8 `/ r
item_data.item_id=MAO_MATERIAL;
f- l+ `5 i7 d- ?+ ?3 I1 I1 I& B7 m7 ~ item_data.item_attr=UF_STYLER_LIST_DELETE; - R( r, n9 W. S! p$ K
item_data.subitem_index=UF_STYLER_NO_SUB_INDEX;
* o) F8 C/ e; Q9 a! j( e, W2 X item_data.count=0;
- I; f0 r3 d& }% ?$ s* e+ n UF_STYLER_set_value(dialog_id, &item_data);$ q- c( b5 c# _$ ]3 M+ z
8 L3 n% v" _' B0 ]
item_data.item_id=MAO_MATERIAL;
. B% q; Z i# [8 U item_data.item_attr=UF_STYLER_LIST_INSERT;
A; V3 U4 q. M2 ~8 e$ n' ` item_data.subitem_index=UF_STYLER_NO_SUB_INDEX;
i, w# G! G/ Q8 m. j% v7 V! `$ v/ l2 G# ]: G: R# A* Q% B/ p
//零件类列表框" [& O3 b7 K+ ~" O- ^
item_data1.item_id=MAO_PART;5 n& h- w# {5 A5 p, N
item_data1.item_attr=UF_STYLER_LIST_DELETE;
+ t, r) U1 V0 c+ v0 B2 R item_data1.subitem_index=UF_STYLER_NO_SUB_INDEX;0 ?5 c1 z/ O! l, |7 R: S' C
item_data1.count=0; ; \/ C/ S; ?) `& f# |
UF_STYLER_set_value(dialog_id, &item_data1);# g" o% `8 [4 @
1 c* B* |6 B" p* N# f6 y
if(m_DBCnt->State)
4 s6 W% H$ @# M" ]- i9 `; P" w: K {
- H5 |& O( r; V( [/ H/ j m_pRecordset.CreateInstance(__uuidof(Recordset));! {3 B( `; ]( K$ o
try9 \' q2 ~/ u+ Q+ u) G
{
$ Z) O: W* e* E& D; c2 [ m_pRecordset->Open("SELECT Distinct MATERIAL FROM MATERIAL_INFO", + q9 V: G" X% X, P
m_DBCnt.GetInterfacePtr(),
5 }% {$ \ k' }% E adOpenDynamic,
9 l8 E0 M- P- K4 P% I: i/ J adLockOptimistic,6 @5 S! c* B% a5 b/ S& t
adCmdText);
4 A0 I; Z0 f" f, I7 [) z8 ~6 h try% O( j) y( d$ J9 D/ I% v
{ ; Q, D8 P: \( @. u, u# Z& L. Q/ @: x
while(!m_pRecordset->adoEOF)2 J* D: Y2 Q g k; q; b
{
, w* r- _( m5 C, |+ N& G! b) J if(!m_pRecordset->adoEOF). Q; b# w" A& ]( X" @
var=m_pRecordset->GetCollect("MATERIAL");
; J# @3 R8 }8 {, n' v. a( O if(var.vt != VT_NULL)
J9 G" [ }1 Z8 ]4 W" E6 K {0 o k# O8 j; W: _2 q7 q
str=(LPCSTR)_bstr_t(var);
4 Y, ^6 s0 Z8 l1 U* g item_data.value.string=str.GetBuffer(str.GetLength());
3 l7 {" c/ Z3 B item_data.indicator=UF_STYLER_STRING_VALUE;3 G, G! c; S$ V! u
UF_STYLER_set_value(dialog_id, &item_data);
- N8 e( G7 b' T: V% Q/ S) T }
, y2 S3 a F/ E' x* ?/ d if(!m_pRecordset->adoEOF)$ H# u* e0 | E/ _/ ~. r$ V
m_pRecordset->MoveNext();
* g( V1 U) p, }) r/ C E }: @! T: k1 m: Y$ m* U3 a
m_pRecordset->Close();) D- F" f! C9 f, }
}
# I8 _' p: a% R5 K5 y& m" |& k catch(_com_error *e)
' U+ V6 A; ]9 a4 f% E. e {
8 M4 O8 G6 `& @" m, m AfxMessageBox(e->ErrorMessage()); s4 i: L& j4 v* Z
}
8 `( r1 a5 A9 [, g$ @ }0 h- b6 \; G( Q- Q
catch(_com_error *e)! k( v% \% U2 V9 U
{
" P! q: R5 t- W- B% S4 } AfxMessageBox(e->ErrorMessage());
: ^0 s, q6 F1 R/ w: [ }
) |/ V' b/ K% M5 ]$ Y! I2 X }: K; w( ?4 @. o A) T9 Q% C
//锁定按钮
) m, {! l Z# b8 L9 N* a2 n item_data.item_id=MAO_BTN;
f$ h+ w+ z( ?$ O9 m7 f' {! ~ item_data.item_attr=UF_STYLER_SENSITIVITY;0 @& s5 ?1 f/ ^( m; S
item_data.subitem_index=1;
% ^) d+ k5 t7 @2 { item_data.value.integer=FALSE;
# o9 _6 O2 p# u( c; m; y% p0 H UF_STYLER_set_value(dialog_id, &item_data);4 M+ E9 x9 y; h h7 y
. v- P" u. }1 g& Z) c9 a2 R2 D item_data.item_id=MAO_BTN;& r& c. x% \3 ? C& A; I
item_data.item_attr=UF_STYLER_SENSITIVITY;. L v( ~* w' T5 T$ z
item_data.subitem_index=2;! ^# l* b. W! R
item_data.value.integer=FALSE;) E$ Z2 L! A: D! L4 l; @
UF_STYLER_set_value(dialog_id, &item_data);$ ^5 l1 G7 n# A9 q% I; g
" r4 O+ n) G+ w9 i! B. `! t4 E }- c! j" U# x2 T! t
}
k$ _ W" a7 Y/ s& B+ H: {1 n
$ K9 ]- Z. B8 z0 f2 ?6 J//帮助信息; w7 `; F& e) X1 E
if(BtnNdx==3)
$ U7 ]3 a) G' R6 ^- d& g {
3 v0 G" r0 Y' u3 V8 Z5 Y char nc_env[100]="",hlp_path[100]="";
- V; r& X7 o" E! a; L strcpy(nc_env,getenv("UGII_USER_DIR"));
5 l. f& j5 V2 Y% \. u strcpy(hlp_path,nc_env);
- T1 d/ f0 s. {& [. ` strcat(nc_env,"\\Help\\iexplore.exe");
# f0 N0 h# e4 I1 ]5 y strcat(hlp_path,"\\Help\\MaterialInfo.htm");, B6 A% \* i, G* S9 B
5 T' B5 n! H0 f
spawnl(1,nc_env,nc_env,hlp_path,NULL);
: [3 p4 h; S' s1 I+ u& z }* s% |3 [5 }- g. W" P/ v: v
" j: s. e- O+ m: V, v
//退出" Y4 s" Q6 d/ l& x: w: e8 F. T
if(BtnNdx==4)
# O3 V; V, p; ?5 O# P, n$ z {
% u9 r% W9 q$ O+ `, w' }; D7 V return ( UF_UI_CB_EXIT_DIALOG );
$ m7 J; x+ H( Z, T }3 W9 x2 K9 ?" W2 {8 o! F9 X3 F! e
1 s7 I0 m6 k$ K/ G8 f
//IID,MATERIAL,NAME,BRAND,GB_CODE,NOTE;. {2 x; o' A6 O4 O! y
//MAT_NAME,MAT_PARTNAME,MAT_NO,MAT_STD_NO1,MAT_NOTE2 E* H4 U0 s: F) |
//按钮:添加,保存,删除,帮助,退出% `5 c# c" @# J% P
UF_terminate ();% ~) B5 m) y$ M) f) W# i% @) A- p
# c( t7 i5 N5 q3 Z `& q /* Callback acknowledged, do not terminate dialog */* U# s8 e: Y% Q+ g* B
return (UF_UI_CB_CONTINUE_DIALOG); + L+ Z7 T6 o' x' ?, k1 k) ?
+ F1 X" w6 O3 ]3 N% x4 W /* or Callback acknowledged, terminate dialog. */
5 S9 g! r/ B3 {0 ?1 s1 {0 Z /* return ( UF_UI_CB_EXIT_DIALOG ); */5 j! W8 W0 d6 H f9 E M9 z
5 h$ J- J- B3 E: l/ `6 X}# e. R( p" m6 {5 v5 g
" X0 L @( d3 h* u( U# c3 m. o. w5 ` r; P
|
|