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