line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Win32::ADO;
|
2
|
1
|
|
|
1
|
|
752
|
use strict;
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
47
|
|
3
|
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
BEGIN {
|
5
|
1
|
|
|
1
|
|
6
|
use Exporter ();
|
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
22
|
|
6
|
1
|
|
|
1
|
|
4
|
use vars qw( @ISA @EXPORT @EXPORT_OK $VERSION );
|
|
1
|
|
|
|
|
15
|
|
|
1
|
|
|
|
|
343
|
|
7
|
1
|
|
|
1
|
|
19
|
@ISA = qw(Exporter);
|
8
|
1
|
|
|
|
|
3
|
@EXPORT_OK = qw(CheckDBErrors QuoteString);
|
9
|
1
|
|
|
|
|
26
|
@EXPORT = qw( adOpenForwardOnly
|
10
|
|
|
|
|
|
|
adOpenKeyset
|
11
|
|
|
|
|
|
|
adOpenDynamic
|
12
|
|
|
|
|
|
|
adOpenStatic
|
13
|
|
|
|
|
|
|
adHoldRecords
|
14
|
|
|
|
|
|
|
adMovePrevious
|
15
|
|
|
|
|
|
|
adAddNew
|
16
|
|
|
|
|
|
|
adDelete
|
17
|
|
|
|
|
|
|
adUpdate
|
18
|
|
|
|
|
|
|
adBookmark
|
19
|
|
|
|
|
|
|
adApproxPosition
|
20
|
|
|
|
|
|
|
adUpdateBatch
|
21
|
|
|
|
|
|
|
adResync
|
22
|
|
|
|
|
|
|
adLockReadOnly
|
23
|
|
|
|
|
|
|
adLockPessimistic
|
24
|
|
|
|
|
|
|
adLockOptimistic
|
25
|
|
|
|
|
|
|
adLockBatchOptimistic
|
26
|
|
|
|
|
|
|
adUseClient
|
27
|
|
|
|
|
|
|
adUseServer
|
28
|
|
|
|
|
|
|
adUseClientBatch
|
29
|
|
|
|
|
|
|
adEmpty
|
30
|
|
|
|
|
|
|
adTinyInt
|
31
|
|
|
|
|
|
|
adSmallInt
|
32
|
|
|
|
|
|
|
adInteger
|
33
|
|
|
|
|
|
|
adBigInt
|
34
|
|
|
|
|
|
|
adUnsignedTinyInt
|
35
|
|
|
|
|
|
|
adUnsignedSmallInt
|
36
|
|
|
|
|
|
|
adUnsignedInt
|
37
|
|
|
|
|
|
|
adUnsignedBigInt
|
38
|
|
|
|
|
|
|
adSingle
|
39
|
|
|
|
|
|
|
adDouble
|
40
|
|
|
|
|
|
|
adCurrency
|
41
|
|
|
|
|
|
|
adDecimal
|
42
|
|
|
|
|
|
|
adNumeric
|
43
|
|
|
|
|
|
|
adBoolean
|
44
|
|
|
|
|
|
|
adError
|
45
|
|
|
|
|
|
|
adUserDefined
|
46
|
|
|
|
|
|
|
adVariant
|
47
|
|
|
|
|
|
|
adIDispatch
|
48
|
|
|
|
|
|
|
adIUnknown
|
49
|
|
|
|
|
|
|
adGUID
|
50
|
|
|
|
|
|
|
adDate
|
51
|
|
|
|
|
|
|
adDBDate
|
52
|
|
|
|
|
|
|
adDBTime
|
53
|
|
|
|
|
|
|
adDBTimeStamp
|
54
|
|
|
|
|
|
|
adBSTR
|
55
|
|
|
|
|
|
|
adChar
|
56
|
|
|
|
|
|
|
adVarChar
|
57
|
|
|
|
|
|
|
adLongVarChar
|
58
|
|
|
|
|
|
|
adWChar
|
59
|
|
|
|
|
|
|
adVarWChar
|
60
|
|
|
|
|
|
|
adLongVarWChar
|
61
|
|
|
|
|
|
|
adBinary
|
62
|
|
|
|
|
|
|
adVarBinary
|
63
|
|
|
|
|
|
|
adLongVarBinary
|
64
|
|
|
|
|
|
|
adPromptAlways
|
65
|
|
|
|
|
|
|
adPromptComplete
|
66
|
|
|
|
|
|
|
adPromptCompleteRequired
|
67
|
|
|
|
|
|
|
adPromptNever
|
68
|
|
|
|
|
|
|
adModeUnknown
|
69
|
|
|
|
|
|
|
adModeRead
|
70
|
|
|
|
|
|
|
adModeWrite
|
71
|
|
|
|
|
|
|
adModeReadWrite
|
72
|
|
|
|
|
|
|
adModeShareDenyRead
|
73
|
|
|
|
|
|
|
adModeShareDenyWrite
|
74
|
|
|
|
|
|
|
adModeShareExclusive
|
75
|
|
|
|
|
|
|
adModeShareDenyNone
|
76
|
|
|
|
|
|
|
adXactUnspecified
|
77
|
|
|
|
|
|
|
adXactChaos
|
78
|
|
|
|
|
|
|
adXactReadUncommitted
|
79
|
|
|
|
|
|
|
adXactBrowse
|
80
|
|
|
|
|
|
|
adXactCursorStability
|
81
|
|
|
|
|
|
|
adXactReadCommitted
|
82
|
|
|
|
|
|
|
adXactRepeatableRead
|
83
|
|
|
|
|
|
|
adXactSerializable
|
84
|
|
|
|
|
|
|
adXactIsolated
|
85
|
|
|
|
|
|
|
adXactPollAsync
|
86
|
|
|
|
|
|
|
adXactPollSyncPhaseOne
|
87
|
|
|
|
|
|
|
adXactCommitRetaining
|
88
|
|
|
|
|
|
|
adXactAbortRetaining
|
89
|
|
|
|
|
|
|
adXactAbortAsync
|
90
|
|
|
|
|
|
|
adFldBookmark
|
91
|
|
|
|
|
|
|
adFldMayDefer
|
92
|
|
|
|
|
|
|
adFldUpdatable
|
93
|
|
|
|
|
|
|
adFldUnknownUpdatable
|
94
|
|
|
|
|
|
|
adFldFixed
|
95
|
|
|
|
|
|
|
adFldIsNullable
|
96
|
|
|
|
|
|
|
adFldMayBeNull
|
97
|
|
|
|
|
|
|
adFldLong
|
98
|
|
|
|
|
|
|
adFldRowID
|
99
|
|
|
|
|
|
|
adFldRowVersion
|
100
|
|
|
|
|
|
|
adFldCacheDeferred
|
101
|
|
|
|
|
|
|
adEditNone
|
102
|
|
|
|
|
|
|
adEditInProgress
|
103
|
|
|
|
|
|
|
adEditAdd
|
104
|
|
|
|
|
|
|
adRecOK
|
105
|
|
|
|
|
|
|
adRecNew
|
106
|
|
|
|
|
|
|
adRecModified
|
107
|
|
|
|
|
|
|
adRecDeleted
|
108
|
|
|
|
|
|
|
adRecUnmodified
|
109
|
|
|
|
|
|
|
adRecInvalid
|
110
|
|
|
|
|
|
|
adRecMultipleChanges
|
111
|
|
|
|
|
|
|
adRecPendingChanges
|
112
|
|
|
|
|
|
|
adRecCanceled
|
113
|
|
|
|
|
|
|
adRecCantRelease
|
114
|
|
|
|
|
|
|
adRecConcurrencyViolation
|
115
|
|
|
|
|
|
|
adRecIntegrityViolation
|
116
|
|
|
|
|
|
|
adRecMaxChangesExceeded
|
117
|
|
|
|
|
|
|
adRecObjectOpen
|
118
|
|
|
|
|
|
|
adRecOutOfMemory
|
119
|
|
|
|
|
|
|
adRecPermissionDenied
|
120
|
|
|
|
|
|
|
adRecSchemaViolation
|
121
|
|
|
|
|
|
|
adRecDBDeleted
|
122
|
|
|
|
|
|
|
adGetRowsRest
|
123
|
|
|
|
|
|
|
adPosUnknown
|
124
|
|
|
|
|
|
|
adPosBOF
|
125
|
|
|
|
|
|
|
adPosEOF
|
126
|
|
|
|
|
|
|
adAffectCurrent
|
127
|
|
|
|
|
|
|
adAffectGroup
|
128
|
|
|
|
|
|
|
adAffectAll
|
129
|
|
|
|
|
|
|
adFilterNone
|
130
|
|
|
|
|
|
|
adFilterPendingRecords
|
131
|
|
|
|
|
|
|
adFilterAffectedRecords
|
132
|
|
|
|
|
|
|
adFilterFetchedRecords
|
133
|
|
|
|
|
|
|
adPropNotSupported
|
134
|
|
|
|
|
|
|
adPropRequired
|
135
|
|
|
|
|
|
|
adPropOptional
|
136
|
|
|
|
|
|
|
adPropRead
|
137
|
|
|
|
|
|
|
adPropWrite
|
138
|
|
|
|
|
|
|
adErrInvalidArgument
|
139
|
|
|
|
|
|
|
adErrNoCurrentRecord
|
140
|
|
|
|
|
|
|
adErrIllegalOperation
|
141
|
|
|
|
|
|
|
adErrInTransaction
|
142
|
|
|
|
|
|
|
adErrFeatureNotAvailable
|
143
|
|
|
|
|
|
|
adErrItemNotFound
|
144
|
|
|
|
|
|
|
adErrObjectNotSet
|
145
|
|
|
|
|
|
|
adErrDataConversion
|
146
|
|
|
|
|
|
|
adErrObjectClosed
|
147
|
|
|
|
|
|
|
adErrObjectOpen
|
148
|
|
|
|
|
|
|
adErrProviderNotFound
|
149
|
|
|
|
|
|
|
adErrBoundToCommand
|
150
|
|
|
|
|
|
|
adParamSigned
|
151
|
|
|
|
|
|
|
adParamNullable
|
152
|
|
|
|
|
|
|
adParamLong
|
153
|
|
|
|
|
|
|
adParamUnknown
|
154
|
|
|
|
|
|
|
adParamInput
|
155
|
|
|
|
|
|
|
adParamOutput
|
156
|
|
|
|
|
|
|
adParamInputOutput
|
157
|
|
|
|
|
|
|
adParamReturnValue
|
158
|
|
|
|
|
|
|
adCmdUnknown
|
159
|
|
|
|
|
|
|
adCmdText
|
160
|
|
|
|
|
|
|
adCmdTable
|
161
|
|
|
|
|
|
|
adCmdStoredProc
|
162
|
|
|
|
|
|
|
);
|
163
|
1
|
|
|
|
|
2084
|
$VERSION = '0.03';
|
164
|
|
|
|
|
|
|
}
|
165
|
|
|
|
|
|
|
|
166
|
|
|
|
|
|
|
##---- CursorTypeEnum Values ----
|
167
|
0
|
|
|
0
|
0
|
|
sub adOpenForwardOnly { 0 }
|
168
|
0
|
|
|
0
|
0
|
|
sub adOpenKeyset { 1 }
|
169
|
0
|
|
|
0
|
0
|
|
sub adOpenDynamic { 2 }
|
170
|
0
|
|
|
0
|
0
|
|
sub adOpenStatic { 3 }
|
171
|
|
|
|
|
|
|
|
172
|
|
|
|
|
|
|
##---- CursorOptionEnum Values ----
|
173
|
0
|
|
|
0
|
0
|
|
sub adHoldRecords { 0x00000100 }
|
174
|
0
|
|
|
0
|
0
|
|
sub adMovePrevious { 0x00000200 }
|
175
|
0
|
|
|
0
|
0
|
|
sub adAddNew { 0x01000400 }
|
176
|
0
|
|
|
0
|
0
|
|
sub adDelete { 0x01000800 }
|
177
|
0
|
|
|
0
|
0
|
|
sub adUpdate { 0x01008000 }
|
178
|
0
|
|
|
0
|
0
|
|
sub adBookmark { 0x00002000 }
|
179
|
0
|
|
|
0
|
0
|
|
sub adApproxPosition { 0x00004000 }
|
180
|
0
|
|
|
0
|
0
|
|
sub adUpdateBatch { 0x00010000 }
|
181
|
0
|
|
|
0
|
0
|
|
sub adResync { 0x00020000 }
|
182
|
|
|
|
|
|
|
|
183
|
|
|
|
|
|
|
##---- LockTypeEnum Values ----
|
184
|
0
|
|
|
0
|
0
|
|
sub adLockReadOnly { 1 }
|
185
|
0
|
|
|
0
|
0
|
|
sub adLockPessimistic { 2 }
|
186
|
0
|
|
|
0
|
0
|
|
sub adLockOptimistic { 3 }
|
187
|
0
|
|
|
0
|
0
|
|
sub adLockBatchOptimistic { 4 }
|
188
|
|
|
|
|
|
|
|
189
|
|
|
|
|
|
|
##---- CursorLocationEnum Values ----
|
190
|
0
|
|
|
0
|
0
|
|
sub adUseClient { 1 }
|
191
|
0
|
|
|
0
|
0
|
|
sub adUseServer { 2 }
|
192
|
0
|
|
|
0
|
0
|
|
sub adUseClientBatch { 3 }
|
193
|
|
|
|
|
|
|
|
194
|
|
|
|
|
|
|
##---- DataTypeEnum Values ----
|
195
|
0
|
|
|
0
|
0
|
|
sub adEmpty { 0 }
|
196
|
0
|
|
|
0
|
0
|
|
sub adTinyInt { 16 }
|
197
|
0
|
|
|
0
|
0
|
|
sub adSmallInt { 2 }
|
198
|
0
|
|
|
0
|
0
|
|
sub adInteger { 3 }
|
199
|
0
|
|
|
0
|
0
|
|
sub adBigInt { 20 }
|
200
|
0
|
|
|
0
|
0
|
|
sub adUnsignedTinyInt { 17 }
|
201
|
0
|
|
|
0
|
0
|
|
sub adUnsignedSmallInt { 18 }
|
202
|
0
|
|
|
0
|
0
|
|
sub adUnsignedInt { 19 }
|
203
|
0
|
|
|
0
|
0
|
|
sub adUnsignedBigInt { 21 }
|
204
|
0
|
|
|
0
|
0
|
|
sub adSingle { 4 }
|
205
|
0
|
|
|
0
|
0
|
|
sub adDouble { 5 }
|
206
|
0
|
|
|
0
|
0
|
|
sub adCurrency { 6 }
|
207
|
0
|
|
|
0
|
0
|
|
sub adDecimal { 14 }
|
208
|
0
|
|
|
0
|
0
|
|
sub adNumeric { 131 }
|
209
|
0
|
|
|
0
|
0
|
|
sub adBoolean { 11 }
|
210
|
0
|
|
|
0
|
0
|
|
sub adError { 10 }
|
211
|
0
|
|
|
0
|
0
|
|
sub adUserDefined { 132 }
|
212
|
0
|
|
|
0
|
0
|
|
sub adVariant { 12 }
|
213
|
0
|
|
|
0
|
0
|
|
sub adIDispatch { 9 }
|
214
|
0
|
|
|
0
|
0
|
|
sub adIUnknown { 13 }
|
215
|
0
|
|
|
0
|
0
|
|
sub adGUID { 72 }
|
216
|
0
|
|
|
0
|
0
|
|
sub adDate { 7 }
|
217
|
0
|
|
|
0
|
0
|
|
sub adDBDate { 133 }
|
218
|
0
|
|
|
0
|
0
|
|
sub adDBTime { 134 }
|
219
|
0
|
|
|
0
|
0
|
|
sub adDBTimeStamp { 135 }
|
220
|
0
|
|
|
0
|
0
|
|
sub adBSTR { 8 }
|
221
|
0
|
|
|
0
|
0
|
|
sub adChar { 129 }
|
222
|
0
|
|
|
0
|
0
|
|
sub adVarChar { 200 }
|
223
|
0
|
|
|
0
|
0
|
|
sub adLongVarChar { 201 }
|
224
|
0
|
|
|
0
|
0
|
|
sub adWChar { 130 }
|
225
|
0
|
|
|
0
|
0
|
|
sub adVarWChar { 202 }
|
226
|
0
|
|
|
0
|
0
|
|
sub adLongVarWChar { 203 }
|
227
|
0
|
|
|
0
|
0
|
|
sub adBinary { 128 }
|
228
|
0
|
|
|
0
|
0
|
|
sub adVarBinary { 204 }
|
229
|
0
|
|
|
0
|
0
|
|
sub adLongVarBinary { 205 }
|
230
|
|
|
|
|
|
|
|
231
|
|
|
|
|
|
|
##---- ConnectPromptEnum Values ----
|
232
|
0
|
|
|
0
|
0
|
|
sub adPromptAlways { 1 }
|
233
|
0
|
|
|
0
|
0
|
|
sub adPromptComplete { 2 }
|
234
|
0
|
|
|
0
|
0
|
|
sub adPromptCompleteRequired { 3 }
|
235
|
0
|
|
|
0
|
0
|
|
sub adPromptNever { 4 }
|
236
|
|
|
|
|
|
|
|
237
|
|
|
|
|
|
|
##---- ConnectModeEnum Values ----
|
238
|
0
|
|
|
0
|
0
|
|
sub adModeUnknown { 0 }
|
239
|
0
|
|
|
0
|
0
|
|
sub adModeRead { 1 }
|
240
|
0
|
|
|
0
|
0
|
|
sub adModeWrite { 2 }
|
241
|
0
|
|
|
0
|
0
|
|
sub adModeReadWrite { 3 }
|
242
|
0
|
|
|
0
|
0
|
|
sub adModeShareDenyRead { 4 }
|
243
|
0
|
|
|
0
|
0
|
|
sub adModeShareDenyWrite { 8 }
|
244
|
0
|
|
|
0
|
0
|
|
sub adModeShareExclusive { 0xc }
|
245
|
0
|
|
|
0
|
0
|
|
sub adModeShareDenyNone { 0x10 }
|
246
|
|
|
|
|
|
|
|
247
|
|
|
|
|
|
|
##---- IsolationLevelEnum Values ----
|
248
|
0
|
|
|
0
|
0
|
|
sub adXactUnspecified { 0xffffffff }
|
249
|
0
|
|
|
0
|
0
|
|
sub adXactChaos { 0x00000010 }
|
250
|
0
|
|
|
0
|
0
|
|
sub adXactReadUncommitted { 0x00000100 }
|
251
|
0
|
|
|
0
|
0
|
|
sub adXactBrowse { 0x00000100 }
|
252
|
0
|
|
|
0
|
0
|
|
sub adXactCursorStability { 0x00001000 }
|
253
|
0
|
|
|
0
|
0
|
|
sub adXactReadCommitted { 0x00001000 }
|
254
|
0
|
|
|
0
|
0
|
|
sub adXactRepeatableRead { 0x00010000 }
|
255
|
0
|
|
|
0
|
0
|
|
sub adXactSerializable { 0x00100000 }
|
256
|
0
|
|
|
0
|
0
|
|
sub adXactIsolated { 0x00100000 }
|
257
|
|
|
|
|
|
|
|
258
|
|
|
|
|
|
|
##---- XactAttributeEnum Values ----
|
259
|
0
|
|
|
0
|
0
|
|
sub adXactPollAsync { 2 }
|
260
|
0
|
|
|
0
|
0
|
|
sub adXactPollSyncPhaseOne { 4 }
|
261
|
0
|
|
|
0
|
0
|
|
sub adXactCommitRetaining { 0x00020000 }
|
262
|
0
|
|
|
0
|
0
|
|
sub adXactAbortRetaining { 0x00040000 }
|
263
|
0
|
|
|
0
|
0
|
|
sub adXactAbortAsync { 0x00080000 }
|
264
|
|
|
|
|
|
|
|
265
|
|
|
|
|
|
|
##---- FieldAttributeEnum Values ----
|
266
|
0
|
|
|
0
|
0
|
|
sub adFldBookmark { 0x00000001 }
|
267
|
0
|
|
|
0
|
0
|
|
sub adFldMayDefer { 0x00000002 }
|
268
|
0
|
|
|
0
|
0
|
|
sub adFldUpdatable { 0x00000004 }
|
269
|
0
|
|
|
0
|
0
|
|
sub adFldUnknownUpdatable { 0x00000008 }
|
270
|
0
|
|
|
0
|
0
|
|
sub adFldFixed { 0x00000010 }
|
271
|
0
|
|
|
0
|
0
|
|
sub adFldIsNullable { 0x00000020 }
|
272
|
0
|
|
|
0
|
0
|
|
sub adFldMayBeNull { 0x00000040 }
|
273
|
0
|
|
|
0
|
0
|
|
sub adFldLong { 0x00000080 }
|
274
|
0
|
|
|
0
|
0
|
|
sub adFldRowID { 0x00000100 }
|
275
|
0
|
|
|
0
|
0
|
|
sub adFldRowVersion { 0x00000200 }
|
276
|
0
|
|
|
0
|
0
|
|
sub adFldCacheDeferred { 0x00001000 }
|
277
|
|
|
|
|
|
|
|
278
|
|
|
|
|
|
|
##---- EditModeEnum Values ----
|
279
|
0
|
|
|
0
|
0
|
|
sub adEditNone { 0x0000 }
|
280
|
0
|
|
|
0
|
0
|
|
sub adEditInProgress { 0x0001 }
|
281
|
0
|
|
|
0
|
0
|
|
sub adEditAdd { 0x0002 }
|
282
|
|
|
|
|
|
|
|
283
|
|
|
|
|
|
|
##---- RecordStatusEnum Values ----
|
284
|
0
|
|
|
0
|
0
|
|
sub adRecOK { 0x0000000 }
|
285
|
0
|
|
|
0
|
0
|
|
sub adRecNew { 0x0000001 }
|
286
|
0
|
|
|
0
|
0
|
|
sub adRecModified { 0x0000002 }
|
287
|
0
|
|
|
0
|
0
|
|
sub adRecDeleted { 0x0000004 }
|
288
|
0
|
|
|
0
|
0
|
|
sub adRecUnmodified { 0x0000008 }
|
289
|
0
|
|
|
0
|
0
|
|
sub adRecInvalid { 0x0000010 }
|
290
|
0
|
|
|
0
|
0
|
|
sub adRecMultipleChanges { 0x0000040 }
|
291
|
0
|
|
|
0
|
0
|
|
sub adRecPendingChanges { 0x0000080 }
|
292
|
0
|
|
|
0
|
0
|
|
sub adRecCanceled { 0x0000100 }
|
293
|
0
|
|
|
0
|
0
|
|
sub adRecCantRelease { 0x0000400 }
|
294
|
0
|
|
|
0
|
0
|
|
sub adRecConcurrencyViolation { 0x0000800 }
|
295
|
0
|
|
|
0
|
0
|
|
sub adRecIntegrityViolation { 0x0001000 }
|
296
|
0
|
|
|
0
|
0
|
|
sub adRecMaxChangesExceeded { 0x0002000 }
|
297
|
0
|
|
|
0
|
0
|
|
sub adRecObjectOpen { 0x0004000 }
|
298
|
0
|
|
|
0
|
0
|
|
sub adRecOutOfMemory { 0x0008000 }
|
299
|
0
|
|
|
0
|
0
|
|
sub adRecPermissionDenied { 0x0010000 }
|
300
|
0
|
|
|
0
|
0
|
|
sub adRecSchemaViolation { 0x0020000 }
|
301
|
0
|
|
|
0
|
0
|
|
sub adRecDBDeleted { 0x0040000 }
|
302
|
|
|
|
|
|
|
|
303
|
|
|
|
|
|
|
##---- GetRowsOptionEnum Values ----
|
304
|
0
|
|
|
0
|
0
|
|
sub adGetRowsRest { -1 }
|
305
|
|
|
|
|
|
|
|
306
|
|
|
|
|
|
|
##---- PositionEnum Values ----
|
307
|
0
|
|
|
0
|
0
|
|
sub adPosUnknown { -1 }
|
308
|
0
|
|
|
0
|
0
|
|
sub adPosBOF { -2 }
|
309
|
0
|
|
|
0
|
0
|
|
sub adPosEOF { -3 }
|
310
|
|
|
|
|
|
|
|
311
|
|
|
|
|
|
|
##---- AffectEnum Values ----
|
312
|
0
|
|
|
0
|
0
|
|
sub adAffectCurrent { 1 }
|
313
|
0
|
|
|
0
|
0
|
|
sub adAffectGroup { 2 }
|
314
|
0
|
|
|
0
|
0
|
|
sub adAffectAll { 3 }
|
315
|
|
|
|
|
|
|
|
316
|
|
|
|
|
|
|
##---- FilterGroupEnum Values ----
|
317
|
0
|
|
|
0
|
0
|
|
sub adFilterNone { 0 }
|
318
|
0
|
|
|
0
|
0
|
|
sub adFilterPendingRecords { 1 }
|
319
|
0
|
|
|
0
|
0
|
|
sub adFilterAffectedRecords { 2 }
|
320
|
0
|
|
|
0
|
0
|
|
sub adFilterFetchedRecords { 3 }
|
321
|
|
|
|
|
|
|
|
322
|
|
|
|
|
|
|
##---- PropertyAttributesEnum Values ----
|
323
|
0
|
|
|
0
|
0
|
|
sub adPropNotSupported { 0x0000 }
|
324
|
0
|
|
|
0
|
0
|
|
sub adPropRequired { 0x0001 }
|
325
|
0
|
|
|
0
|
0
|
|
sub adPropOptional { 0x0002 }
|
326
|
0
|
|
|
0
|
0
|
|
sub adPropRead { 0x0200 }
|
327
|
0
|
|
|
0
|
0
|
|
sub adPropWrite { 0x0400 }
|
328
|
|
|
|
|
|
|
|
329
|
|
|
|
|
|
|
##---- ErrorValueEnum Values ----
|
330
|
0
|
|
|
0
|
0
|
|
sub adErrInvalidArgument { 0xbb9 }
|
331
|
0
|
|
|
0
|
0
|
|
sub adErrNoCurrentRecord { 0xbcd }
|
332
|
0
|
|
|
0
|
0
|
|
sub adErrIllegalOperation { 0xc93 }
|
333
|
0
|
|
|
0
|
0
|
|
sub adErrInTransaction { 0xcae }
|
334
|
0
|
|
|
0
|
0
|
|
sub adErrFeatureNotAvailable { 0xcb3 }
|
335
|
0
|
|
|
0
|
0
|
|
sub adErrItemNotFound { 0xcc1 }
|
336
|
0
|
|
|
0
|
0
|
|
sub adErrObjectNotSet { 0xd5c }
|
337
|
0
|
|
|
0
|
0
|
|
sub adErrDataConversion { 0xd5d }
|
338
|
0
|
|
|
0
|
0
|
|
sub adErrObjectClosed { 0xe78 }
|
339
|
0
|
|
|
0
|
0
|
|
sub adErrObjectOpen { 0xe79 }
|
340
|
0
|
|
|
0
|
0
|
|
sub adErrProviderNotFound { 0xe7a }
|
341
|
0
|
|
|
0
|
0
|
|
sub adErrBoundToCommand { 0xe7b }
|
342
|
|
|
|
|
|
|
|
343
|
|
|
|
|
|
|
##---- ParameterAttributesEnum Values ----
|
344
|
0
|
|
|
0
|
0
|
|
sub adParamSigned { 0x0010 }
|
345
|
0
|
|
|
0
|
0
|
|
sub adParamNullable { 0x0040 }
|
346
|
0
|
|
|
0
|
0
|
|
sub adParamLong { 0x0080 }
|
347
|
|
|
|
|
|
|
|
348
|
|
|
|
|
|
|
##---- ParameterDirectionEnum Values ----
|
349
|
0
|
|
|
0
|
0
|
|
sub adParamUnknown { 0x0000 }
|
350
|
0
|
|
|
0
|
0
|
|
sub adParamInput { 0x0001 }
|
351
|
0
|
|
|
0
|
0
|
|
sub adParamOutput { 0x0002 }
|
352
|
0
|
|
|
0
|
0
|
|
sub adParamInputOutput { 0x0003 }
|
353
|
0
|
|
|
0
|
0
|
|
sub adParamReturnValue { 0x0004 }
|
354
|
|
|
|
|
|
|
|
355
|
|
|
|
|
|
|
##---- CommandTypeEnum Values ----
|
356
|
0
|
|
|
0
|
0
|
|
sub adCmdUnknown { 0 }
|
357
|
0
|
|
|
0
|
0
|
|
sub adCmdText { 0x0001 }
|
358
|
0
|
|
|
0
|
0
|
|
sub adCmdTable { 0x0002 }
|
359
|
0
|
|
|
0
|
0
|
|
sub adCmdStoredProc { 0x0004 }
|
360
|
|
|
|
|
|
|
|
361
|
|
|
|
|
|
|
sub QuoteString {
|
362
|
0
|
|
|
0
|
0
|
|
my $sql = shift;
|
363
|
0
|
|
|
|
|
|
$sql =~ s/\'/\'\'/g;
|
364
|
0
|
|
|
|
|
|
return $sql;
|
365
|
|
|
|
|
|
|
}
|
366
|
|
|
|
|
|
|
|
367
|
|
|
|
|
|
|
sub CheckDBErrors {
|
368
|
0
|
|
|
0
|
0
|
|
my $Conn = shift;
|
369
|
0
|
|
|
|
|
|
my $arrayref = shift;
|
370
|
0
|
|
|
|
|
|
my $Errors = $Conn->Errors();
|
371
|
0
|
|
|
|
|
|
my $error;
|
372
|
0
|
|
|
|
|
|
my $NumErrors = 0;
|
373
|
0
|
|
|
|
|
|
foreach $error (in $Errors) {
|
374
|
0
|
0
|
|
|
|
|
next if $error->{Number} == 0; # Skip warnings
|
375
|
0
|
|
|
|
|
|
$NumErrors++;
|
376
|
0
|
|
|
|
|
|
push @{$arrayref}, "Error: [" .
|
|
0
|
|
|
|
|
|
|
377
|
|
|
|
|
|
|
$error->{Number} . "] " . $error->{Description} . "\n";
|
378
|
|
|
|
|
|
|
}
|
379
|
0
|
|
|
|
|
|
$Errors->Clear;
|
380
|
0
|
0
|
|
|
|
|
return $NumErrors == 0 ? 1 : 0;
|
381
|
|
|
|
|
|
|
}
|
382
|
|
|
|
|
|
|
|
383
|
|
|
|
|
|
|
1;
|
384
|
|
|
|
|
|
|
|
385
|
|
|
|
|
|
|
__END__
|