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