ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/udr/client/FBMessages.pas
Revision: 371
Committed: Wed Jan 5 15:21:22 2022 UTC (2 years, 3 months ago) by tony
Content type: text/x-pascal
File size: 16427 byte(s)
Log Message:
Beta Release 0.1

File Contents

# Content
1 (*
2 * Firebird Interface (fbintf). The fbintf components provide a set of
3 * Pascal language bindings for the Firebird API. Although predominantly
4 * a new development they include source code taken from IBX and may be
5 * considered a derived product. This software thus also includes the copyright
6 * notice and license conditions from IBX.
7 *
8 * Except for those parts dervied from IBX, contents of this file are subject
9 * to the Initial Developer's Public License Version 1.0 (the "License"); you
10 * may not use this file except in compliance with the License. You may obtain a
11 * copy of the License here:
12 *
13 * http://www.firebirdsql.org/index.php?op=doc&id=idpl
14 *
15 * Software distributed under the License is distributed on an "AS
16 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17 * implied. See the License for the specific language governing rights
18 * and limitations under the License.
19 *
20 * The Initial Developer of the Original Code is Tony Whyman.
21 *
22 * The Original Code is (C) 2016 Tony Whyman, MWA Software
23 * (http://www.mwasoftware.co.uk).
24 *
25 * All Rights Reserved.
26 *
27 * Contributor(s): ______________________________________.
28 *
29 *)
30 {************************************************************************}
31 { }
32 { Borland Delphi Visual Component Library }
33 { InterBase Express core components }
34 { }
35 { Copyright (c) 1998-2000 Inprise Corporation }
36 { }
37 { InterBase Express is based in part on the product }
38 { Free IB Components, written by Gregory H. Deatz for }
39 { Hoagland, Longo, Moran, Dunst & Doukas Company. }
40 { Free IB Components is used under license. }
41 { }
42 { The contents of this file are subject to the InterBase }
43 { Public License Version 1.0 (the "License"); you may not }
44 { use this file except in compliance with the License. You }
45 { may obtain a copy of the License at http://www.Inprise.com/IPL.html }
46 { Software distributed under the License is distributed on }
47 { an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either }
48 { express or implied. See the License for the specific language }
49 { governing rights and limitations under the License. }
50 { The Original Code was created by InterBase Software Corporation }
51 { and its successors. }
52 { Portions created by Inprise Corporation are Copyright (C) Inprise }
53 { Corporation. All Rights Reserved. }
54 { Contributor(s): Jeff Overcash }
55 { }
56 { IBX For Lazarus (Firebird Express) }
57 { Contributor: Tony Whyman, MWA Software http://www.mwasoftware.co.uk }
58 { Portions created by MWA Software are copyright McCallum Whyman }
59 { Associates Ltd 2011 - 2015 }
60 { }
61 {************************************************************************}
62 unit FBMessages;
63 {$IFDEF MSWINDOWS}
64 {$DEFINE WINDOWS}
65 {$ENDIF}
66
67 {$IFDEF FPC}
68 {$mode delphi}
69 {$codepage UTF8}
70 {$ENDIF}
71
72 interface
73
74 uses
75 Classes, SysUtils;
76
77 type
78 TIBClientError = (
79 ibxeInterBaseMissing,
80 ibxeIB60feature,
81 ibxeNotSupported,
82 ibxeNotPermitted,
83 ibxeDatabaseClosed,
84 ibxeNotInTransaction,
85 ibxeTransactionNotAssigned,
86 ibxeEOF,
87 ibxeBOF,
88 ibxeInvalidStatementHandle,
89 ibxeSQLClosed,
90 ibxeUnknownSQLDataType,
91 ibxeInvalidColumnIndex,
92 ibxeInvalidDataConversion,
93 ibxeBlobCannotBeRead,
94 ibxeBlobCannotBeWritten,
95 ibxeBlobNotOpen,
96 ibxeEmptyQuery,
97 ibxeFieldNotFound,
98 ibxeSQLParseError,
99 ibxeIsASelectStatement,
100 ibxeIsAExecuteProcedure,
101 ibxeMaximumEvents,
102 ibxeServiceActive,
103 ibxeServiceInActive,
104 ibxeServerNameMissing,
105 ibxeOutputParsingError,
106 ibxeEmptyAttachmentsList,
107 ibxeInfoBufferTypeError,
108 ibxServiceRequestIndexError,
109 ibxServiceParamTypeError,
110 ibxeOutputBlockIndexError,
111 ibxeOutputBlockTypeError,
112 ibxePBIndexError,
113 ibxePBParamTypeError,
114 ibxeDuplicateParamName,
115 ibxeInvalidArrayDimensions,
116 ibxeNotAMultiDatabaseTransaction,
117 ibxeAttachmentListIndexError,
118 ibxeNotAnArray,
119 ibxeNotABlob,
120 ibxeInvalidSubscript,
121 ibxeArrayElementOverFlow,
122 ibxArrayBoundsCantIncrease ,
123 ibxeStatementNotPrepared,
124 ibxeInterfaceOutofDate,
125 ibxeInvalidBlobMetaData,
126 ibxeNoDPB,
127 ibxeInEventWait,
128 ibxeIncompatibleBlob,
129 ibxeMissingColumnName,
130 ibxStringTooLong,
131 ibxFieldNotinDataSet,
132 ibxeNoDefaultCharacterSet,
133 ibxeParamBufferOverflow,
134 ibxeInvalidParamCount,
135 ibxeInvalidVariantType,
136 ibxeInterfaceNotSupported,
137 ibxeCharacterSetExists,
138 ibxeUnknownUserCharSet,
139 ibxeUninitializedInputParameter,
140 ibxeMultiThreadRequired,
141 ibxeTokenQueueOverflow,
142 ibxeTokenQueueUnderflow,
143 ibxErrorParsing,
144 ibxeDLInfoError,
145 ibxeDifferentAPIs,
146 ibxeInvalidDateTimeStr,
147 ibxeBadTimeZoneID,
148 ibxeBadBCDConversion,
149 ibxeBadTimeZoneName,
150 ibxeTimeZoneUnknown,
151 ibxeBadTimeSpecification,
152 ibxeBCDTooBig,
153 ibxeInvalidTimeZoneID,
154 ibxeBadTimestampOrNoTimeZoneDBEntry,
155 ibxeBCDOverflow,
156 ibxeNoTimezoneSupport,
157 ibxeDecFloatNotSupported,
158 ibxeInt128NotSupported,
159 ibxeUnknownParamTypeName,
160 ibxInvalidQueryAction,
161 ibxeSQLTypeUnchangeable,
162 ibxeCannotIncreaseMetadatasize,
163 ibxeBatchModeNotSupported,
164 ibxeNotInBatchMode,
165 ibxeInBatchMode,
166 ibxeInvalidBatchQuery,
167 ibxeBatchRowBufferOverflow,
168 ibxeBatchBufferSizeTooBig,
169 ibxeNoScrollableCursors,
170 ibxeUnableTosetaTextType,
171 ibxeCantDropAcquiredDB,
172 ibxeTransactionNotOwned,
173 ibxeIntegerOverflow,
174 ibxIntegerUnderflow,
175 ibxeScaleCannotBeChanged
176 );
177
178 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
179
180 {IBError is used internally and by IBX to throw an EIBClientError}
181
182 procedure IBError(ErrMess: TIBClientError; const Args: array of const);
183
184 resourcestring
185 { generic strings used in code }
186 SParamNameExpected = 'Parameter name expected';
187 sSQLErrorSeparator = ' When Executing: ';
188 SFirebirdAPIFuncNotFound = 'Unable to load Firebird Client Library Function "%s"';
189 STrue = 'true';
190 SFalse = 'false';
191 SArray = '(array)';
192 SBatchCompletionError = 'Error Processing update/insert batch on row number %d - ';
193
194 implementation
195
196 uses IBUtils, IB;
197
198 resourcestring
199
200 { strings used in error messages}
201 SInterBaseMissing = 'Firebird library not found in the path. Please install Firebird to use this functionality';
202 SIB60feature = '%s is an InterBase 6 function. Please upgrade to InterBase 6 to use this functonality';
203 SNotSupported = 'Unsupported feature';
204 SNotPermitted = 'Not permitted';
205 SDatabaseClosed = 'Cannot perform operation -- DB is not open';
206 SNotInTransaction = 'Transaction is not active';
207 STransactionNotAssigned = 'Transaction not assigned';
208 SEOF = 'End of file';
209 SBOF = 'Beginning of file';
210 SInvalidStatementHandle = 'Invalid statement handle';
211 SSQLClosed = 'IBSQL Closed';
212 SUnknownSQLDataType = 'Unknown SQL Data type (%d)';
213 SInvalidColumnIndex = 'Invalid column index (index exceeds permitted range)';
214 SInvalidDataConversion = 'Invalid data conversion from %s';
215 SBlobCannotBeRead = 'Blob stream cannot be read';
216 SBlobCannotBeWritten = 'Blob stream cannot be written';
217 SBlobNotOpen = 'The Blob is not open';
218 SEmptyQuery = 'Empty query';
219 SFieldNotFound = 'Field "%s" not found';
220 SSQLParseError = 'SQL Parse Error:' + CRLF + CRLF + '%s';
221 SIsASelectStatement = 'use Open for a Select Statement';
222 SIsAExecuteProcedure = 'use ExecProc for Procedure; use TQuery for Select procedures';
223 SMaximumEvents = 'Exceded Maximum Event limits';
224 SServiceActive = 'Cannot perform operation -- service is not attached';
225 SServiceInActive = 'Cannot perform operation -- service is attached';
226 SServerNameMissing = 'Server Name Missing';
227 SOutputParsingError = 'Unexpected Output buffer value (%d) - %s';
228 SEmptyAttachmentsList = 'The list of database attachments cannot be empty';
229 SInfoBufferTypeError = 'Invalid operation for Info Buffer Type (%d)';
230 SServiceRequestIndexError = 'Service Request Index Out of Range (%d)';
231 SServiceParamTypeError = 'Invalid Request for Service Param Type';
232 SOutputBlockIndexError = 'Output Block Index Out of Range (%d)';
233 SOutputBlockTypeError = 'Invalid Request for Output Block Type';
234 SPBIndexError = 'DPB Index out of range (%d)';
235 SPBParamTypeError = 'Invalid Request for DPB Param Type';
236 SDuplicateParamName = 'Blob or array parameter name must be unique (%s)';
237 SInvalidArrayDimensions = 'Invalid number of array dimensions (%d)';
238 SNotAMultiDatabaseTransaction = 'This is not a multi-database transaction';
239 SAttachmentListIndexError = 'Attachment List index out of range (%d)';
240 SNotAnArray = 'Table Column must be an array';
241 SNotABlob = 'Table Column must be a Blob';
242 SInvalidSubscript = 'Invalid Subscript (%d) for Array Dimension %d';
243 SArrayElementOverFlow = 'Array Element too big';
244 SArrayBoundsCantIncrease = 'Array Bounds can only be narrowed';
245 SStatementNotPrepared = 'The Statement has not been prepared';
246 SInterfaceOutofDate = 'This interface is no longer up-to-date';
247 SInvalidBlobMetaData = 'Unable to Access Blob Meta Data';
248 SNoDPB = 'A DPB must be provided';
249 SInEventWait = 'Already in Event Wait State';
250 SIncompatibleBlob = 'Incompatible Blob SubTypes. %d expected, %d found';
251 SMissingColumnName = 'Relation or Column Name Missing';
252 SStringTooLong = 'String "%s" is too long. Max %d characters';
253 SFieldNotinDataSet = 'Field %s is not a member of DataSet %s';
254 SNoDefaultCharacterSet = 'A connection default character set is required to perform this operation';
255 SParamBufferOverflow = 'Parameter Buffer Overflow';
256 SInvalidParamCount = 'Invalid Parameter Count. %d expected, %d found';
257 SInvalidVariantType = 'Invalid variant type';
258 SInterfaceNotSupported = 'Interface not supported; Guid %s not found';
259 SCharacterSetExists = 'Character set "%s" is already defined';
260 SUnknownUserCharSet = 'Unknown user character set "%s"';
261 SUninitializedInputParameter = 'SQL Param No. %d (%s) is uninitialised';
262 SMultiThreadRequired = 'Multi-threading required for %s but not enabled. Please recompile with multi-threading support enabled. '+
263 'Hint: you probably need to add -dUseCThreads to the Custom Options.';
264 STokenQueueOverflow = 'Error in SQL Token Analyser - token queue overflow';
265 STokenQueueUnderflow = 'Error in SQL Token Analyser - token queue underflow';
266 SErrorParsing = 'Error parsing SQL Statement at clause starting with %s';
267 SDLInfoError = 'dlinfo returned error - %s';
268 SDifferentAPIs = 'All transaction attachments must use the same Firebird Library';
269 SInvalidDateTimeStr = '%s is not a valid Date/Time string';
270 SBadTimeZoneID = 'Invalid Time Zone ID (%d,%d)';
271 SBadBCDConversion = 'Conversion to BCD failed';
272 SBadTimeZoneName = 'Invalid Time Zone Name "%s"';
273 STimeZoneUnknown = 'Time Zone Unknown';
274 SBadTimeSpecification = '%d:%d:%d.%d is not a valid time specification';
275 SBCDTooBig = 'BCD Precision (%d) is too large for Firebird Data Type max precision (%d)';
276 SInvalidTimeZoneID = 'Invalid Time Zone ID (%d)';
277 SBadTimestampOrNoTimeZoneDBEntry = 'Bad Timestamp or missing time zone DB entry (%s) TZ ID = %d';
278 SBCDOverflow = 'BCD Precision too large for Firebird data type,[%s]';
279 SNoTimezoneSupport = 'TIME/TIMESTAMP WITH TIME ZONE data type not supported';
280 SDecFloatNotSupported = 'DecFloat Data Type not supported';
281 SInt128NotSupported = 'INT128 Data Type not supported';
282 SUnknownParamTypeName = '%s:Unknown Param Type Name "%s"';
283 SInvalidQueryAction = 'Query Action only valid for an Update or Insert Query';
284 SSQLTypeUnchangeable = 'Cannot change SQL Type from %s to %s';
285 SCannotIncreaseMetadatasize = 'Cannot increase Metadata size from %d to %d';
286 SBatchModeNotSupported = 'Batch Mode is not available. Firebird 4 or later client and server is required';
287 SNotInBatchMode = 'Not in Batch Mode - have you called AddToBatch?';
288 SInBatchMode = 'Invalid Operation: a Batch is pending';
289 SInvalidBatchQuery = 'This query type (%s) cannot be batched';
290 SBatchRowBufferOverflow = 'Adding Row No. %d - batch buffer size limit (%d bytes) exceeded';
291 SBatchBufferSizeTooBig = 'Requested Batch Buffer Size (%d bytes) exceeds 256MB limit';
292 SNoScrollableCursors = 'Scrollable cursors are not supported';
293 SUnableTosetaTextType = 'Param[%d] "%s": Unable to change from a %s to a string type';
294 SCantDropAcquiredDB = 'Drop database not allowed by acquired attachment';
295 STransactionNotOwned = 'Cannot Commit or Rollback a linked transaction';
296 SIntegerOverflow = 'Integer overflow when scaling numeric';
297 SIntegerUnderflow = 'Integer underflow when scaling numeric';
298 SScaleCannotBeChanged = 'Unable to change numeric field scale';
299
300 const
301 IBErrorMessages: array[TIBClientError] of string = (
302 SInterBaseMissing,
303 SIB60feature,
304 SNotSupported,
305 SNotPermitted,
306 SDatabaseClosed,
307 SNotInTransaction,
308 STransactionNotAssigned,
309 SEOF,
310 SBOF,
311 SInvalidStatementHandle,
312 SSQLClosed,
313 SUnknownSQLDataType,
314 SInvalidColumnIndex,
315 SInvalidDataConversion,
316 SBlobCannotBeRead,
317 SBlobCannotBeWritten,
318 SBlobNotOpen,
319 SEmptyQuery,
320 SFieldNotFound,
321 SSQLParseError,
322 SIsASelectStatement,
323 SIsAExecuteProcedure,
324 SMaximumEvents,
325 SServiceActive,
326 SServiceInActive,
327 SServerNameMissing,
328 SOutputParsingError,
329 SEmptyAttachmentsList,
330 SInfoBufferTypeError,
331 SServiceRequestIndexError,
332 SServiceParamTypeError,
333 SOutputBlockIndexError,
334 SOutputBlockTypeError,
335 SPBIndexError,
336 SPBParamTypeError,
337 SDuplicateParamName,
338 SInvalidArrayDimensions,
339 SNotAMultiDatabaseTransaction,
340 SAttachmentListIndexError,
341 SNotAnArray,
342 SNotABlob,
343 SInvalidSubscript,
344 SArrayElementOverFlow,
345 SArrayBoundsCantIncrease,
346 SStatementNotPrepared,
347 SInterfaceOutofDate,
348 SInvalidBlobMetaData,
349 SNoDPB,
350 SInEventWait,
351 SIncompatibleBlob,
352 SMissingColumnName,
353 SStringTooLong,
354 SFieldNotinDataSet,
355 SNoDefaultCharacterSet,
356 SParamBufferOverflow,
357 SInvalidParamCount,
358 SInvalidVariantType,
359 SInterfaceNotSupported,
360 SCharacterSetExists,
361 SUnknownUserCharSet,
362 SUninitializedInputParameter,
363 SMultiThreadRequired,
364 STokenQueueOverflow,
365 STokenQueueUnderflow,
366 SErrorParsing,
367 SDLInfoError,
368 SDifferentAPIs,
369 SInvalidDateTimeStr,
370 SBadTimeZoneID,
371 SBadBCDConversion,
372 SBadTimeZoneName,
373 STimeZoneUnknown,
374 SBadTimeSpecification,
375 SBCDTooBig,
376 SInvalidTimeZoneID,
377 SBadTimestampOrNoTimeZoneDBEntry,
378 SBCDOverflow,
379 SNoTimezoneSupport,
380 SDecFloatNotSupported,
381 SInt128NotSupported,
382 SUnknownParamTypeName,
383 SInvalidQueryAction,
384 SSQLTypeUnchangeable,
385 SCannotIncreaseMetadatasize,
386 SBatchModeNotSupported,
387 SNotInBatchMode,
388 SInBatchMode,
389 SInvalidBatchQuery,
390 SBatchRowBufferOverflow,
391 SBatchBufferSizeTooBig,
392 SNoScrollableCursors,
393 SUnableTosetaTextType,
394 SCantDropAcquiredDB,
395 STransactionNotOwned,
396 SIntegerOverflow,
397 SIntegerUnderflow,
398 SScaleCannotBeChanged
399 );
400
401 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
402 begin
403 Result := IBErrorMessages[ErrMess];
404 end;
405
406 procedure IBError(ErrMess: TIBClientError; const Args: array of const);
407 begin
408 raise EIBClientError.Create(Ord(ErrMess),
409 Format(GetErrorMessage(ErrMess), Args));
410 end;
411
412
413 end.
414