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