OLE, COM, ActiveX and DBMS Reference
Contents
Contents
Copyright and Trademarks
1
- The SQL-ODBC Library
1.1
- Introduction
1.1.1
- Implementation
1.1.2
- Using the SQL-ODBC library in applications
1.1.3
- SQL Standards
1.1.4
- Object-oriented languages and relational databases
1.1.5
- Result-retrieval protocol
1.1.6
- Processing results
1.1.7
- Bridging the object-relational gap
1.1.8
- Error handling
1.1.9
- Examples used in this document
1.2
- Connecting to a database
1.2.1
- The <DBMS> class
<dbms>
1.2.2
- The <USER> class
<user>
1.2.3
- The <DATABASE> class
<database>
1.2.4
- The <CONNECTION> class
<connection>
1.2.5
- Connection protocol functions, methods, and macros
with-dbms
dbms
database
user
1.2.6
- Connecting and disconnecting
connect
connections
default-connection
disconnect
disconnect-all
with-connection
with-database
1.3
- Executing SQL statements
1.3.1
- The null value
<null-value>
$null-value
1.3.2
- Input indicators and output indicators
1.3.3
- The SQL statement class
<database-statement>
execute
<sql-statement>
coercion-policy
coercion-policy-setter
datatype-hints
datatype-hints-setter
execute
input-indicator
input-indicator-setter
output-indicator
output-indicator-setter
text
text-setter
1.4
- Data retrieval using result-set collection
1.5
- Result-set collections
1.5.1
- Record class
<coercion-policy>
<record>
1.5.2
- Result-set policy class
<result-set-policy>
1.5.3
- Result-set classes
<result-set>
<forward-only-result-set>
<scrollable-result-set>
1.5.4
- Liaison functions
1.5.5
- Coercion policies
1.6
- Data types and conversions
1.7
- Warning and error conditions
1.7.1
- Diagnostics
row-count
<diagnostic>
condition-number
returned-sqlstate
class-origin
subclass-origin
connection-name
message-text
1.7.2
- SQL condition classes
<ambiguous-cursor-name>
<cardinality-violation>
<connection-exception>
<connection-does-not-exist>
<connection-failure>
<connection-name-in-use>
<sql-client-unable-to-establish-connection>
<sql-server-rejected-establishment-of-connection>
<transaction-resolution-unknown>
<cursor-operation-conflict>
<data-exception>
<character-not-in-repertoire>
<datetime-field-overflow>
<division-by-zero>
<error-in-assignment>
<indicator-overflow>
<interval-field-overflow>
<invalid-character-value-for-cast>
<invalid-datetime-format>
<invalid-escape-character>
<invalid-escape-sequence>
<invalid-fetch-sequence>
<invalid-parameter-value>
<invalid-time-zone-displacement-value>
<null-value-no-indicator-parameter>
<Numeric-value-out-of-range>
<string-data-length-mismatch>
<string-data-right-truncation>
<substring-error>
trim-error>
<unterminated-C-string>
<dependent-privilege-descriptors-still-exist>
<dynamic-sql-error>
<cursor-specification-cannot-be-executed>
<invalid-descriptor-count>
<invalid-descriptor-index>
<prepared-statement-not-a-cursor-specification>
<restricted-data-type-attribute-violation>
<using-clause-does-not-match-dynamic-parameter-specification>
<using-clause-does-not-match-target-specification>
<using-clause-required-for-dynamic-parameters>
<using-clause-required-for-result-fields>
<feature-not-supported>
<multiple-server-transaction>
<integrity-constraint-violation>
<invalid-authorization-specification>
<invalid-catalog-name>
<invalid-character-set-name>
<invalid-condition-number>
<invalid-cursor-name>
<invalid-schema-name>
<invalid-sql-descriptor-name>
<invalid-sql-statement-name>
<invalid-transaction-state>
<invalid-transaction-termination>
<no-data>
<remote-database-access>
<successful-completion>
<syntax-error-or-access-rule-violation>
<syntax-error-or-access-rule-violation-in-direct-sql-statement>
<syntax-error-or-access-rule-violation-in-dynamic-sql-statement>
<transaction-rollback>
<transaction-rollback-due-to-integrity-constraint-violation>
<transaction-rollback-due-to-serialization-failure>
<statement-completion-unknown>
<triggered-data-change-violation>
<sql-warning>
<warning-cursor-operation-conflict>
<disconnect-error>
<implicit-zero-bit-padding>
<insufficient-item-descriptor-areas>
<null-value-eliminated-in-set-function>
<privilege-not-granted>
<privilege-not-revoked>
<query-expression-too-long-for-information-schema>
<search-condition-too-long-for-information-schema>
<warning-string-data-right-truncation>
<with-check-option-violation>
1.7.3
- ODBC-specific extensions to the diagnostic protocol
native-error-code
column-number
row-number
1.7.4
- ODBC-specific diagnostic classes
<odbc-invalid-connection-string-attribute>
<odbc-error-in-row>
<odbc-option-value-changed>
<odbc-attempt-to-fetch-before-result-set-returned-the-first-rowset>
<odbc-fractional-truncation>
<odbc-error-saving-file-dsn>
<odbc-invalid-keyword>
<odbc-invalid-use-of-default-parameter>
<odbc-communication-link-failure>
<odbc-insert-value-list-does-not-match-column-list>
<odbc-invalid-cursor-state>
<odbc-transaction-state>
<odbc-transaction-still-active>
<odbc-transaction-is-rolledback>
<odbc-base-table-or-view-already-exists>
<odbc-base-table-or-view-not-found>
<odbc-index-already-exists>
<odbc-index-not-found>
<odbc-column-already-exists>
<odbc-column-not-found>
<odbc-general-error>
<odbc-memory-allocation-error>
<odbc-invalid-application-buffer-type>
<odbc-invalid-sql-data-type>
<odbc-associated-statement-is-not-prepared>
<odbc-operation-canceled>
<odbc-invalid-use-of-null-pointer>
<odbc-function-sequence-error>
<odbc-attribute-cannot-be-set-now>
<odbc-invalid-transaction-operation-code>
<odbc-memory-management-error>
<odbc-limit-on-the-number-of-handles-exceeded>
<odbc-no-cursor-name-available>
<odbc-cannot-modify-an-implementation-row-descriptor>
<odbc-invalid-use-of-an-automatically-allocated-descriptor-handle>
<odbc-server-declined-cancel-request>
<odbc-non-character-and-non-binary-data-sent-in-pieces>
<odbc-attempt-to-concatenate-a-null-value>
<odbc-inconsistent-descriptor-information>
<odbc-invalid-attribute-value>
<odbc-invalid-string-or-buffer-length>
<odbc-invalid-descriptor-field-identifier>
<odbc-invalid-attribute-option-identifier>
<odbc-invalid-parameter-number>
<odbc-function-type-out-of-range>
<odbc-invalid-information-type>
<odbc-column-type-out-of-range>
<odbc-scope-type-out-of-range>
<odbc-nullable-type-out-of-range>
<odbc-uniqueness-option-type-out-of-range>
<odbc-accuracy-option-type-out-of-range>
<odbc-invalid-retrieval-code>
<odbc-invalid-precision-or-scale-value>
<odbc-invalid-parameter-type>
<odbc-fetch-type-out-of-range>
<odbc-row-value-out-of-range>
<odbc-invalid-cursor-position>
<odbc-invalid-driver-completion>
<odbc-invalid-bookmark-value>
<odbc-optional-feature-not-implemented>
<odbc-connection-timeout-expired>
<odbc-driver-does-not-support-this-function>
<odbc-data-source-name-not-found>
<odbc-specified-driver-could-not-be-loaded>
<odbc-driver-SQLAllocHandle-on-SQL-HANDLE-ENV-failed>
<odbc-driver-SQLAllocHandle-on-SQL-HANDLE-DBC-failed>
<odbc-driver-SQLSetConnectAttr-failed>
<odbc-no-data-source-or-driver-specified>
<odbc-dialog-failed>
<odbc-unable-to-load-translation-dll>
<odbc-data-source-name-too-long>
<odbc-driver-name-too-long>
<odbc-DRIVER-keyword-syntax-error>
<odbc-invalid-name-of-file-DSN>
<odbc-corrupt-file-data-source>
<odbc-trace-file-error>
1.8
- Database introspection
1.8.1
- Database objects and integrity constraints
<database-object>
database-object-name
1.8.2
- Catalogs
<catalog>
catalogs
1.8.3
- Schema
<schema>
1.8.4
- Tables
<sql-table>
indexes
1.8.5
- Columns
<column>
domain
nullable?
default-value
1.8.6
- Indexes
<index>
indexed-table
fields
unique-index?
2
- Functional Developer's COM, OLE, and ActiveX Libraries
2.1
- Introduction
2.1.1
- About COM
2.1.2
- About OLE and compound documents
2.1.3
- About OLE Automation
2.1.4
- About OLE (ActiveX) controls
2.1.5
- Terminology
2.1.6
- OLE/COM example: using compound documents
2.2
- Overview of OLE/COM and the Functional Developer API
2.2.1
- COM interfaces and methods
2.2.2
- COM objects and classes
2.2.3
- Representing interfaces
2.2.4
- Dispatch interfaces
2.2.5
- GUIDs: Globally unique identifiers
2.2.6
- Type information and type libraries
2.3
- Registering OLE/COM software
2.4
- About the example OLE/COM programs
2.4.1
- OLE examples
2.4.2
- Win32 API OLE examples
2.4.3
- Building and registering the examples
2.4.4
- Running the examples
2.5
- Making GUIDs
2.5.1
- Creating GUID numbers
2.5.2
- Making a GUID instance
2.6
- Supported interfaces
2.7
- Libraries in the Functional Developer OLE/COM API
2.7.1
- High-level DUIM integration
2.7.2
- Low-level FFI libraries
2.7.3
- Intermediate layer libraries
2.7.4
- Basic COM integration and utilities
2.8
- Choosing the right OLE/COM libraries
2.8.1
- For compound document server applications
2.8.2
- For compound document container applications
2.8.3
- For OLE controls
2.8.4
- For OLE control container applications
2.8.5
- For OLE Automation servers and controllers
2.8.6
- For OLE dialogs
3
- Compound Documents and OLE Controls in DUIM
3.1
- Introduction
3.2
- About the DUIM-OLE-Server library
3.2.1
- Limitations of the DUIM-OLE-Server library
3.2.2
- Modules exported from DUIM-OLE-Server
3.2.3
- A note about compound document container applications and DUIM
3.3
- About the DUIM-OLE-Control library
3.3.1
- Modules exported from DUIM-OLE-Control
3.3.2
- A note about OLE control container applications and DUIM
3.4
- Building a compound document server in DUIM
3.4.1
- Differences from ordinary DUIM applications
3.4.2
- Running your DUIM-OLE-Server application
3.4.3
- Registering server applications with Windows
3.4.4
- Specifying menus for in-place activation
3.4.5
- Skeleton application
3.4.6
- Example DUIM-OLE-Server application
3.5
- Building an OLE control in DUIM
3.5.1
- Differences from implementing OLE compound document servers
3.5.2
- Getting the control container's ambient properties
3.5.3
- Skeleton application
3.5.4
- Example DUIM-OLE-Control application
3.6
- The DUIM-OLE-SERVER module
<embeddable-frame>
frame-container-menus
frame-container-name
frame-embedded-sheet
frame-embedded-size
frame-embedded-size-requested
frame-init-new-object
frame-in-place-active?
frame-ole-object
frame-ole-object-class
note-embedded-data-changed
note-embedded-region-changed
note-in-place-activation
note-in-place-deactivation
save-frame-to-storage
load-frame-from-storage
3.7
- The DUIM-OLE-CONTROL module
initialize-ole-control
max-storage-size
<ocx-dispatch>
ocx-frame
3.7.1
- Getting the ambient properties of the control's container
3.7.2
- Automatically generated control properties
3.8
- Low-level DUIM-OLE-Control features
<DUIM-OCX>
4
- OLE Automation
4.1
- Introduction
4.2
- About the OLE-Automation library
4.3
- Overview of OLE Automation
4.3.1
- Dispinterfaces, properties, and dispatch methods
4.3.2
- Automation servers and COM objects
4.3.3
- Type libraries and type information
4.3.4
- Class factories
4.4
- Example of Automation
4.5
- Building an Automation controller application
4.5.1
- Initializing OLE Automation
4.5.2
- Connecting to an Automation server application
4.5.3
- Getting Dispatch IDs for properties and dispatch methods
4.5.4
- Getting and setting the value of a dispatch property
4.5.5
- Calling dispatch methods
4.5.6
- Releasing the dispinterface
4.5.7
- Closing OLE Automation down
4.5.8
- Skeleton OLE Automation controller
4.5.9
- Controllers using more than one dispinterface
4.6
- Building an Automation server application
4.6.1
- Overview
4.6.2
- Defining the Dylan class representing a dispinterface
4.6.3
- Defining type information for the dispinterface
4.6.4
- Defining dispatch methods for the dispinterface
4.6.4.1
- Dispatch method argument requirements
4.6.4.2
- Dispatch method return value requirements
4.6.5
- Dispatch method argument and return value types
4.6.6
- Defining type information for dispatch methods
4.6.7
- The DEFINE DISPATCH-INTERFACE macro
4.6.8
- Retaining arguments sent to dispatch methods
4.6.9
- Cleaning up with TERMINATE
4.6.10
- Servers providing more than one dispinterface
4.6.11
- Local server initialization
4.6.12
- Registering an Automation server
4.6.13
- Skeleton OLE Automation server
4.6.14
- In-process server initialization
4.7
- Error reporting
4.8
- Datatypes
4.9
- Memory management issues
4.10
- Internationalization
4.11
- Low-level OLE Automation API
4.12
- The OLE-AUTOMATION module
<LPDISPATCH>
<BSTR>
<ole-array>
<ole-vector>
<class-factory>
<simple-dispatch>
<disp-type-info>
<variable-description>
<constant-description>
<function-description>
<coclass-type-info>
<simple-component-object>
<component-interface-description>
OLE-initialize
OLE-uninitialize
with-OLE
with-dispatch-interface
copy-automation-value
get-id-of-name
get-property
get-indexed-property
set-property
call-simple-method
pass-as
out-ref
inout-ref
arg-spec-value
create-dispatch
make-object-factory
revoke-registration
with-class-factory
ole-array-type
HRESULT-FROM-WIN32
OLE-util-in-process-startup?
OLE-util-automation?
OLE-util-file-arg
OLE-util-register-only?
register-automation-server
register-type-library
in-process-automation-server
pass-as
out-ref
inout-ref
arg-spec-value
5
- Macros for Defining Custom Interfaces
5.1
- Introduction
5.2
- Overview
5.3
- Macros for defining custom interfaces
define custom-interface
define coclass
define vtable-interface
define dispatch-client
define dispatch-interface
define dual-interface
6
- The OLE-Server Library
6.1
- Introduction
6.2
- About compound documents
6.3
- Basics of writing OLE compound document servers
6.4
- Example
6.5
- Implementing local servers
6.6
- Implementing in-process servers
6.7
- The OLE-SERVER module
6.7.1
- Framework classes and definition macro
<ole-server-framework>
<ole-in-process-server>
define COM-interface
6.7.2
- Required methods for compound document servers
OLE-part-doc-window
OLE-part-open-out
OLE-part-draw-metafile
terminate
6.7.3
- More required methods (persistent storage)
OLE-part-Create-Streams
OLE-part-Open-Streams
OLE-part-Release-Streams
OLE-part-Save-To-Storage
OLE-part-Load-From-Storage
6.7.4
- Self-registration for local server applications
OLE-util-register-only?
register-ole-server
6.7.5
- Optional methods for compound document servers
OLE-part-init-new
OLE-part-dirty?
OLE-part-title
OLE-part-set-focus
OLE-part-requested-size
OLE-part-change-size
OLE-part-position-window
OLE-part-hide
OLE-part-in-place-activated
OLE-part-UI-activated
OLE-part-in-place-deactivated
OLE-part-UI-deactivated
OLE-part-insert-menus
OLE-part-release-menu
OLE-part-command-window
OLE-part-accelerators
OLE-part-toolbar-window
OLE-part-get-data
OLE-part-set-data
OLE-part-formats-for-get
OLE-part-formats-for-set
OLE-part-enable-dialog
6.7.6
- Miscellaneous OLE-SERVER module classes and functions
<storage-istream>
istream-rewrite
istream-write-integer
istream-write-int16
istream-write-float
istream-write-string
istream-read-integer
istream-read-int16
istream-read-float
istream-read-string
OLE-util-Create-Stream
OLE-util-open-stream
OLE-util-set-status-text
OLE-util-started-by-OLE?
OLE-util-in-process-startup?
OLE-util-container-name
OLE-util-translate-accelerator
OLE-util-current-size
OLE-util-HIMETRIC-size
OLE-util-close-server
OLE-util-in-place-active?
OLE-util-view-changed
revoke-registration
<class-factory>
6.7.7
- OLE API hooks
in-place-frame-info
container-IOleInPlaceFrame
server-IOleObject
container-parent-window
hatch-window
6.7.8
- Initializing and registering in-process compound document servers
initialize-ole-server
6.7.9
- Persistent storage for in-process compound document servers
OLE-part-max-save-size
OLE-part-Save-To-Stream
OLE-part-Load-From-Stream
OLE-part-init-new
OLE-part-dirty?-setter
6.7.10
- Other required methods for in-process servers
OLE-part-draw
7
- The OLE-Control-Framework Library
7.1
- Introduction
7.2
- OLE Controls
7.2.1
- Mnemonic keys
7.2.2
- Ambient properties
7.3
- The OLE-CONTROL-FRAMEWORK module
<OLE-control-framework>
initialize-ole-control
OLE-part-mnemonics
OLE-part-on-mnemonic
OLE-util-key-change
OLE-util-on-focus
freeze-events?
freeze-UI?
OLE-util-locale
container-IDispatch
OLE-part-ambient-properties
OLE-part-set-ambient-property
OLE-util-translate-color
8
- Basic COM Integration
8.1
- Introduction
8.2
- Basic COM interface and data representation in Dylan
<LPUNKNOWN>
8.3
- GUID utilities
<REFGUID>
<REFCLSID>
make-GUID
as <string> GUID => string
as <REFGUID> string => GUID
8.4
- COM IUnknown interface methods
AddRef
Release
QueryInterface
8.5
- Error handling
<ole-error>
ole-error
check-ole-status
ole-error-status
ole-error-context
ole-error-instance
ole-error-args
9
- OLE FFI Facilities
9.1
- Introduction
9.2
- Dylan and Win32 library correspondences
9.3
- C-to-Dylan name-mapping scheme
9.4
- How to use the Dylan libraries
Index
OLE, COM, ActiveX and DBMS Reference - 31 MAR 2000