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, 10 months ago) by tony
Content type: text/x-pascal
File size: 16427 byte(s)
Log Message:
Beta Release 0.1

File Contents

# User Rev Content
1 tony 45 (*
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 tony 291 {$IFDEF MSWINDOWS}
64     {$DEFINE WINDOWS}
65 tony 56 {$ENDIF}
66 tony 45
67     {$IFDEF FPC}
68 tony 56 {$mode delphi}
69 tony 45 {$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 tony 60 ibxeInterfaceNotSupported,
137     ibxeCharacterSetExists,
138 tony 68 ibxeUnknownUserCharSet,
139 tony 103 ibxeUninitializedInputParameter,
140 tony 221 ibxeMultiThreadRequired,
141 tony 263 ibxeTokenQueueOverflow,
142     ibxeTokenQueueUnderflow,
143     ibxErrorParsing,
144     ibxeDLInfoError,
145 tony 315 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 tony 345 ibxeUnknownParamTypeName,
160     ibxInvalidQueryAction,
161     ibxeSQLTypeUnchangeable,
162     ibxeCannotIncreaseMetadatasize,
163     ibxeBatchModeNotSupported,
164     ibxeNotInBatchMode,
165     ibxeInBatchMode,
166     ibxeInvalidBatchQuery,
167     ibxeBatchRowBufferOverflow,
168 tony 350 ibxeBatchBufferSizeTooBig,
169 tony 371 ibxeNoScrollableCursors,
170     ibxeUnableTosetaTextType,
171     ibxeCantDropAcquiredDB,
172     ibxeTransactionNotOwned,
173     ibxeIntegerOverflow,
174     ibxIntegerUnderflow,
175     ibxeScaleCannotBeChanged
176 tony 45 );
177    
178 tony 56 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
179 tony 45
180 tony 291 {IBError is used internally and by IBX to throw an EIBClientError}
181    
182     procedure IBError(ErrMess: TIBClientError; const Args: array of const);
183    
184 tony 45 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 tony 47 SArray = '(array)';
192 tony 345 SBatchCompletionError = 'Error Processing update/insert batch on row number %d - ';
193 tony 45
194     implementation
195    
196 tony 291 uses IBUtils, IB;
197 tony 45
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 tony 315 SInvalidDataConversion = 'Invalid data conversion from %s';
215 tony 45 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 tony 144 SOutputParsingError = 'Unexpected Output buffer value (%d) - %s';
228 tony 45 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 tony 47 SInvalidArrayDimensions = 'Invalid number of array dimensions (%d)';
238 tony 45 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 tony 56 SInterfaceNotSupported = 'Interface not supported; Guid %s not found';
259 tony 60 SCharacterSetExists = 'Character set "%s" is already defined';
260     SUnknownUserCharSet = 'Unknown user character set "%s"';
261 tony 68 SUninitializedInputParameter = 'SQL Param No. %d (%s) is uninitialised';
262 tony 217 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 tony 263 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 tony 315 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 tony 345 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 tony 350 SNoScrollableCursors = 'Scrollable cursors are not supported';
293 tony 371 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 tony 45
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 tony 60 SInterfaceNotSupported,
360     SCharacterSetExists,
361 tony 68 SUnknownUserCharSet,
362 tony 103 SUninitializedInputParameter,
363 tony 221 SMultiThreadRequired,
364 tony 263 STokenQueueOverflow,
365     STokenQueueUnderflow,
366     SErrorParsing,
367     SDLInfoError,
368 tony 315 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 tony 345 SUnknownParamTypeName,
383     SInvalidQueryAction,
384     SSQLTypeUnchangeable,
385     SCannotIncreaseMetadatasize,
386     SBatchModeNotSupported,
387     SNotInBatchMode,
388     SInBatchMode,
389     SInvalidBatchQuery,
390     SBatchRowBufferOverflow,
391 tony 350 SBatchBufferSizeTooBig,
392 tony 371 SNoScrollableCursors,
393     SUnableTosetaTextType,
394     SCantDropAcquiredDB,
395     STransactionNotOwned,
396     SIntegerOverflow,
397     SIntegerUnderflow,
398     SScaleCannotBeChanged
399 tony 45 );
400    
401 tony 56 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
402 tony 45 begin
403     Result := IBErrorMessages[ErrMess];
404     end;
405    
406 tony 291 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 tony 345
413 tony 45 end.
414