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