.. :   aka DmitrO, mailto: dmitro@russian.ru

.. include:: commonchm.txt


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ODBC
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
..      <chminfo>
                <insert nodes="//common/maininfo/*"/>
                <alinks>_1cpp_odbc_</alinks>
        </chminfo>

.. contents:: 
        :backlinks: none

    **             ODBC
 :
        
        * ODBCDataBase_ -       ;
        * ODBCRecordSet_ -    c    SQL   
           ,       (. ` `_);
        * MetaDataWork_ -      1   , 
           ,        ;
        * SQLLock_ -       .


#####################################################################
ODBCDataBase
#####################################################################
..      <chminfo><alinks>_1cpp_odbc_Database</alinks></chminfo>

             ,
  DSN     ODBC.

        **:**  ,  SQL -  1       
        1:.

     ODBCRecordSet_.    ODBCDataBase    
 ODBCRecordSet_.


=====================================================================
..      <chminfo split="0" splitchild="1">
                <insert nodes="//common/propsmethods/*"/>
        </chminfo>

 / Close
---------------------------------------------------------------------
        **:** ()

        **:**    .

 / DriverConnect
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : . `    ODBC <http://msdn.microsoft.com/library/en-us/odbc/htm/odbcconnection_strings.asp?frame=true>`_.
                          . . : http://www.connectionstrings.com/.

        **:**          .

 / GetConnectionTimeout
---------------------------------------------------------------------
        **:** ()

        **:** : .    .

        **:**     .

 / GetLastError
---------------------------------------------------------------------
        **:** ()

        **:** : .  .

        **:**      .

 / IsConnected
---------------------------------------------------------------------
        **:** ()

        **:** : . 1 -     , 0 -  .

        **:**  -   .

 / Open
---------------------------------------------------------------------
        **:** (, , )

        **:**

                -  - : .  . . ` / DriverConnect`_.;
                -  - : .  ;
                -  - : .  ;

        **:** : . 1 -  , 0 -  .

        **:**          .
            ` / DriverConnect`_        .

 / SetConnectionTimeout
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .  .

        **:**   .

 / SetConnectionTimeout
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .  .

        **:**    .

 / SetReadOnly
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .     .

        **:**      " ".

1 / Attach1C
---------------------------------------------------------------------
        **:** 1()

        **:**       -  1:  SQL.

 / ConfigDataSource
---------------------------------------------------------------------
        **:** ()

        **:**    .

 / GetDriverVer
---------------------------------------------------------------------
        **:** ()

        **:** : .  .

        **:**     ODBC.

ODBC / GetODBCVer
---------------------------------------------------------------------
        **:** ODBC()

        **:** : .    ODBC.

        **:**      ODBC.

ReconnectNative / ReconnectNative
---------------------------------------------------------------------
        **:** ReconnectNative()

        **:**       MSSQL 2000
        (`Bug #: 472280 <http://support.microsoft.com/?scid=kb;en-us;891553&spid=2852>`_)
                .      
         ,  ,      ,   
         ODBCRecordset_ (  , ).     
            .

 / AttachIB
---------------------------------------------------------------------
        **:** (, [], [], [])

        **:**

                -  - : .     .   "\\".
                -  - : .         .    -   .
                -  - : .           .    -   .
                -  - : .     ODBC.   :
                        -   sql-: "Driver={SQL Server};Server=%1;Database=%2;Uid=%3;Pwd=%4;", %1 -  sql-, %2 -   , %3 -   , %4 - ,   ,    .
                        -   dbf-: "DRIVER={Microsoft Visual FoxPro Driver};Deleted=No;Null=Yes;Collate=RUSSIAN;Exclusive=No;SourceType=DBF;SourceDB=%1",  %1 -  ;

        **:**            
          .
         ,      ODBCRecordset  _,   ,
              .

        **:**            sql-. (    dbf-   .)
        
        ::

                =("ODBCDataBase");
                .("\\server\\");
                =("ODBCRecordset");
                .();
                =.();

#####################################################################
ODBCRecordSet
#####################################################################
..      <chminfo><alinks>_1cpp_odbc_Recordset</alinks></chminfo>

        ,    ,   
  ODBC,   (\*.txt, \*.csv  ..).

        **:**  ,  SQL -  1       
        1:        (ODBCDatabase_).     
               _  1_.

  ,    ,   (    )
   :

        +    1:  SQL;
        +     1:  SQL;
        +  ;
        +   (,     );
        +   ( ,  MS T-SQL).

    ` `__.

.. __: ` `_

    ()       1.

        **:**      ODBC   1:
                - SQL_BINARY(16) -   GUID.

     1   .    
, ` `__    .

.. __: `  `_

    ,     ::

        select
                .descr as ,
                $. as [ $.],
                $. as [ $.],
                $. as 
        from $. as  (nolock)
        where .isfolder = 2

  
=====================================================================
..      <chminfo split="0">     </chminfo>

 (       ,    
   )::

        [<> $<1>]
        <> ::= <,          >
        <1> ::= <,   1>

1 -   ,      1_.


=====================================================================
..      <chminfo split="0" splitchild="1">
                <insert nodes="//common/propsmethods/*"/>
        </chminfo>

 / md
---------------------------------------------------------------------
        **:**  .

        **:** MetaDataWork_.

        **:**      MetaDataWork_.


=====================================================================
..      <chminfo split="0" splitchild="1">
                <insert nodes="//common/propsmethods/*"/>
        </chminfo>

 / Debug
---------------------------------------------------------------------
        **:** ([])

        **:**

                -  - : . 1 - . ; 0 - . .   - 1.

        **:** /  ,       .
             ,    ,     - 
         ,     .


 / SetDatabase
---------------------------------------------------------------------
.. _ :

        **:** ()

        **:**

                -  - : ODBCDataBase_. C,  .

        **:**     ODBCRecordset.


1 / SetDatabase1C
---------------------------------------------------------------------
.. _1 :

        **:** 1()

        **:**  SQL   **  1:.

 / Close
---------------------------------------------------------------------
        **:** 1()

        **:**     .

 / Execute
---------------------------------------------------------------------
        **:** (SQL)

        **:**

                - SQL - : . SQL     * *.

        **:** : . 1 -   , 0 - ,    ,
          _.

        **:**   SQL ,    .     
          , ,  .

 / GetLastError
---------------------------------------------------------------------
.. _:

        **:** ()

        **:** : .  .

        **:**        .

 / SetPropertyCursor
---------------------------------------------------------------------
        **:** (CURSOR_TYPE, CURSOR_SCROLLABLE, CURSOR_SENSITIVITY, CONCURRENCY)

        **:**    = 0 -      .
               ODBC.   
            ,   
        `MSDN <http://msdn.microsoft.com/library/en-us/odbc/htm/odbcsqlsetstmtattr.asp?frame=true>`_.

                - CURSOR_TYPE - : . SQL_ATTR_CURSOR_TYPE -  ODBC.

                        + 1 - SQL_CURSOR_FORWARD_ONLY;
                        + 2 - SQL_CURSOR_STATIC;
                        + 3 - SQL_CURSOR_KEYSET_DRIVEN;
                        + 4 - SQL_CURSOR_DYNAMIC.

                - CURSOR_SCROLLABLE - : . SQL_ATTR_CURSOR_SCROLLABLE -  ODBC.

                        + 1 - SQL_NONSCROLLABLE;
                        + 2 - SQL_SCROLLABLE.

                - CURSOR_SENSITIVITY - : . SQL_ATTR_CURSOR_SENSITIVITY -  ODBC.

                        + 1 - SQL_UNSPECIFIED;
                        + 2 - SQL_INSENSITIVE;
                        + 3 - SQL_SENSITIVE.

                - CONCURRENCY - : . SQL_ATTR_CONCURRENCY -  ODBC.

                        + 1 - SQL_CONCUR_READ_ONLY;
                        + 2 - SQL_CONCUR_LOCK;
                        + 3 - SQL_CONCUR_ROWVER;
                        + 4 - SQL_CONCUR_VALUES.

        **:**  /  .

 / SetRowsetSize
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .   .

        **:**     (   ),    
        ODBC       .     ,    
          .          __.

.. __: ODBCRecordsetOpen_

 / Prepare
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .  .

        **:** : . 1 -    ; 0 - .   
           _.

        **:**  ** SQL .      .
             (      
          "?" (*SQL *)).      
             .     
            .

 / BuildParams
---------------------------------------------------------------------
        **:** ()

        **:** : . 1 -    ; 0 - .

        **:**  SQL      Prepare  ,
              "?".       SQL
        .

                **:**    ;
                           ; 
                    .         
                   / .

        ::

                rc.Prepare("INSERT INTO MyTable (NAME, AGE, SALARY, DATEOFBIRTH) VALUES(?, ?, ?, ?)");
                if rc.BuildParams() = 1 then
                        rc.SetParam(1, " ");
                        rc.SetParam(2, 28);
                        rc.SetParam(3, 1250.25);
                        rc.SetParam(4, '17.11.1974');
                        rc.Execute();                   
                endif;

 / AddParam
---------------------------------------------------------------------
        **:** (IOType, nSQLType, nLen, nDec, [pname])

        **:**

                - IOType - : .   :

                        * 1 - SQL_PARAM_INPUT;
                        * 2 - SQL_PARAM_OUTPUT;
                        * 3 - SQL_PARAM_INPUT_OUTPUT.

                - nSQLType - : . SQL  :

                        * 1  - SQL_BIT
                        * 2  - SQL_TINYINT
                        * 3  - SQL_SMALLINT
                        * 4  - SQL_INTEGER
                        * 5  - SQL_REAL
                        * 6  - SQL_FLOAT
                        * 7  - SQL_DOUBLE
                        * 8  - SQL_TYPE_DATE
                        * 9  - SQL_TYPE_TIME
                        * 10 - SQL_TYPE_TIMESTAMP
                        * 11 - SQL_NUMERIC
                        * 12 - SQL_DECIMAL
                        * 13 - SQL_BIGINT
                        * 14 - SQL_CHAR
                        * 15 - SQL_VARCHAR
                        * 16 - SQL_LONGVARCHAR
                        * 17 - SQL_BINARY
                        * 18 - SQL_VARBINARY
                        * 19 - SQL_LONGVARBINARY

                - nLen -  . ;

                - nDec -  . ;

                - pname -  . -    "@Par1".  ,   "".

        **:**   SQL    .

 / ParamCount
---------------------------------------------------------------------
        **:** ()

        **:**   /  SQL .

        **:**     .

 / SetParam
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : .  ,    1.
                -  - : .  .

        **:**   SQL .

 / GetParam
---------------------------------------------------------------------
        **:** (, 1)

        **:**

                -  - : .  ,    1.
                - 1 - : .   .  :

                        * "/Reference" -       
                            : [Kind(4)][ID(6)][Sign(3)] = 13 ,  
                           .
                        * "/Reference.*" -  "*" -   ,     
                          (),    1.   ,    
                           : [ID(6)][Sign(3)] = 9 .
                        * "/Document" -   (13)     .
                        * "/Document.*" -  "*" -   ,      ().
                          ,   ,     .
                        * "/Enum" -    (13)    .
                        * "/Enum.*" -    (9)    .
                        * "/Undefine" -   [Type(2)][Kind(4)][ID(6)][Sign(3)] = 15 
                                    ,     .

        **:** : .  .

        **:**    SQL ,      ,  
            1.

SQL_ / ExeSQL_FromTV
---------------------------------------------------------------------
        **:** SQL_(, )

        **:**

                -  - : .      .  
                    ,     , ..      
                    ,       ..;
                -  - : . ,    0.     ,
                       ,     ,    
                      -         
                   .      ,     
                    :         0.1
                  ( .. 10%    ).

        **:**         .    
             .
        
             ` / AddParam`_   ` / BuildParams`_.
              ,     .

              ,       
          SQL .

        ::

                rc = ("ODBCRecordSet");
                rc.Execute("DELETE FROM [TestSQL].[dbo].[MyTable]");            
                rc.Close();
                
                rc.Prepare("INSERT INTO MyTable (NAME, AGE, SALARY, DATEOFBIRTH) VALUES(?, ?, ?, ?)");
                 = ("");
                
                .("NAME","");
                .("AGE","",4);       
                .("SALARY","",18,2);
                .("DATEOFBIRTH","");
                
                for i = 1 to 10 do
                .();
                        .NAME        = " ";
                        .AGE         = 28;
                        .SALARY      = 1453.12;
                        .DATEOFBIRTH = '17.11.1974';
                        .();
                        .NAME        = " ";
                        .AGE         = 23;
                        .SALARY      = 1233.99;
                        .DATEOFBIRTH = '09.03.1980';
                enddo;          
                rc.ExeSQL_FromTV();

 / ClearParams
---------------------------------------------------------------------
        **:** ()

        **:**    SQL .

 / DeleteParam
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .  ,    1.

        **:**    SQL   .

 / Open
---------------------------------------------------------------------
.. _ODBCRecordsetOpen:

        **:** ([], [], [])

        **:**

                -  - : .  SQL .   ,    
                      ` / Prepare`_. ,   -  ;
                -  - : . 1 -  ,        
                  (     "Prepare",      ,
                          ` / SetPropertyCursor`_),
                  0 -   .      SetPropertyCursor,   
                   . ,    0;
                -  - : . 1 -     ` / Prepare`_ . 0 - 
                       . ,    0,    
                       1,     .

        **:** : . 1 -   ,    . 0 -  .

        **:**      -   SQL .   
        :    ,     ,       
          .   : **   **.

        **:**    ,         (  
         ) -   , ..        .

1 / SetTypeColumn1C
---------------------------------------------------------------------
.. _1 :

        **:** 1()

        **:**

                -  - : . ,  .     ,
                        .  ,    
                   - .

        **:**      ,  __.  
             ,      1    .

.. __: ODBCRecordsetOpen_

          ::

                type_string ::= empty-string[,] | type[,] | type, type_string
                empty-string ::=""
                type ::=
                 | 
                 | 
                 | 
                 | [.*] | Reference[.*]
                 | [.*] | Document[.*]
                 | [.*] | Enum[.*]
                 | [.*] | Account[.*]
                 |  | Undefine

        | `` | Reference`` -        
        |        : [Kind(4)][ID(6)][Sign(3)] = 13 ,    ;
        | ``.* | Reference.*`` -  "*" -   ,      (),
        |          1.   ,      :
        |       [ID(6)][Sign(3)] = 9 .
        | `` | Document`` -   (13)     .
        | ``.* | Document.*`` -  "*" -   ,      ().
        |       ,   ,     .
        | `` | Enum`` -    (13)    .
        | ``.* | Enum.*`` -    (9)    .
        | `` | Account`` -    (13)   .
        | ``.* | Account.*`` -    (9)   .
        | `` | Undefine`` -   [Type(2)][Kind(4)][ID(6)][Sign(3)] = 23 
        |            ,     ,     .

        ::

                rc.SetTypeColumn1C(", , , ._2, ,
                |._, , ._2");

 / IsOpen
---------------------------------------------------------------------
        **:** ()

        **:** : . 1 -   ,  0.

        **:**      .

 / MoveNext
---------------------------------------------------------------------
        **:** ()

        **:** : .      0,  1.

        **:**     .

 / MovePrevious
---------------------------------------------------------------------
        **:** ()

        **:** : .         ,    0,  1.

        **:**     .

 / MoveFirst
---------------------------------------------------------------------
        **:** ()

        **:**     .

 / MoveLast
---------------------------------------------------------------------
        **:** ()

        **:**     .

 / GetFieldCount
---------------------------------------------------------------------
        **:** ()

        **:** : .  .

        **:**     ()  .

 / IsBOF
---------------------------------------------------------------------
        **:** ()

        **:** : . 1,      ,  0.

        **:**    .

 / IsEOF
---------------------------------------------------------------------
        **:** ()

        **:** : . 0,       , 1 -    
         .

        **:**    .

 / GetFieldIndex
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .  .

        **:** : .   ( ).       -1.

        **:**        .

 / GetRowsAffected
---------------------------------------------------------------------
        **:** ()

        **:** : .  ,  SQL .

        **:**     -    (   rowcount).

 / GetValue
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .   ( 1)   .

        **:** : .     .

        **:**    .

 / GetValues
---------------------------------------------------------------------
        **:** (...)

        **:**     .

        **:**       .   ,
                ,      1   .

 / GetValuesInSV
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .   ( 1)     ,  .

        **:** : , .    .

        **:**    .     ,   ,
             .   ,     
              .       ,
              ,       , 
              .

_ / GetResultsInVT
---------------------------------------------------------------------
        **:** _(, )

        **:**

                -  - : ,   .      .
                -  - : . 1 -      , 0 -   ,
                     ,         
                   , ..            .

        **:**             
        .

        **:**   ,     ` / ExecuteStatement`_.

 / SetTextParam
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : .  ;
                -  - : .  .

        **:**   .      .

 / GetFieldDefs
---------------------------------------------------------------------
        **:** (, [1], [1], [1], [SQL], [SQL], [SQL], [NULL])

        **:**

                -  - : , .    ;
                - 1 - : .    1;
                - 1 - : .    1;
                - 1 - : .    1;
                - SQL - : .    ODBC;
                - SQL - : .    ODBC;
                - SQL - : .    ODBC;
                - NULL - : .   NULL  ODBC. 1 - , 0 -  .

        **:** : , .       -   , 
          -   .

        **:**    .

 / AutoTypification
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .    . 1 - , 0 -.

        **:**      ,     
                    spXXX.  
          1 (    ),      1  .  
          ( )     .

 / PutObjectList
---------------------------------------------------------------------
        **:** (, , [])

        **:**

                -  - : , , . ,      .
                     ,  .    .
                      ,  ,  ,  -   
                       ,     ( ,
                    ),         .
                -  - : .   .
                -  - : .          
                     .    ,    .

        **:**         MS SQL. 
                 val char(9).    
          "#".

            -   ,     ,
             . (  ""    1.)

        **:**        Microsoft SQL Server.

 / SetQueryTimeout
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .    .

        **:**      .     
           -         
        (SQLSTATE = HYT00).
           0  ,      ,    
        .     .

 / IsQueryTimeoutExpired
---------------------------------------------------------------------
        **:** ()

        **:** : . 1 -    ,  0.

        **:**   -        
         .        __.

.. __: _

 / BackFromTAEnabled
---------------------------------------------------------------------
        **:** ()

        **:** : . 1 - ,  0.

        **:**      .     ,
        ..     .   ,   ,    
          ,  -   .

 / ExecuteStatement
---------------------------------------------------------------------
        **:** ([], [], [])

        **:**

                -  - : .  ,    -   .
                  ,   -  .
                -  - :   , ,       .
                  (    -   ,   ,   .)   ,
                       .
                  ,    ,        .
                -  - : . 1 -            .
                  0 -  . ,   - 1.

        **:** : , ,       , .
           ,   -   .

        **:**  SQL ,        ODBC   .
            ,      ,    
          ( select,  DML  ) -    .
            SQL  (multistatement batch),     
        . ,       (  ODBC,    
           -   .   SQL Server  ),  
        .     ,         -    .
            -    .
                    = 0,
                .
            ,          .
                ,        .
                ,         .


 / ExecuteScalar
---------------------------------------------------------------------
        **:** ([])

        **:**

                -  - : .  ,   -  .
                  ,   -  .

        **:** : , .     ,     .

        **:**  SQL ,        ODBC   .
             :      .  
          ,    ,         - 
          ,      -   ,  
          ,        .
            ,         -    ,
              ,    ,   ,
          .
            -    .

XML / ExecuteXML
---------------------------------------------------------------------
        **:** XML([], [])

        **:**

                -  - : .  ,   -  .
                  ,   -  .
                -  - : BinaryData.     .
                  ,   -  .

        **:** : , .   ,     - 
        .

        **:**       XML .      BinaryData,
              (        ),   
           ,    -  ,    -  .

RPC / RPCMode
---------------------------------------------------------------------
        **:** RPC()

        **:**

                -  - : . 1 -  , 0 -  .

        **:**       .    , 
            RPC    sp_executesql. (      
          BOL (Books Online)).    -  ,     .   
         .     .
        
            ,           ,
          T-SQL .  ,  T-SQL   ,   .
                   T-SQL .
         ,    ,     ,
         ,    ,   (, ,    
          -  )       
          (    ).

        **  :**  -,    ,    ,   
          (   ),     
        (   , ).

        **:**        Microsoft SQL Server;   
             ,         .
        ,    ,   ,       
          ().

13 / PutObjectList13
---------------------------------------------------------------------
        **:** 13(, )

        **:**

                -  - : , , . ,      .
                     ,  .    .
                -  - : .   .

        **:**       MS SQL.     
          .     val char(13).       "#".

#####################################################################
MetaDataWork
#####################################################################
      1   ,   
 SQL .

       ``   -     
   1      .      
 ``   -        .


=====================================================================
..      <chminfo split="0" splitchild="1">
                <insert nodes="//common/propsmethods/*"/>
        </chminfo>

 / GetConstID
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .     .

        **:** : .   .

        **:**     .

 / GetRefID
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .      ().

        **:** : .   .

        **:**     .

 / GetRefFieldID
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : , .      ().
                -  - : , .       .

        **:** : .    .

        **:**      .

 / GetRefTableName
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : , .      ().

        **:** : .      .

        **:**        .

 / GetDocID
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .      ().

        **:** : .   .

        **:**     .

 / GetDocHeadFieldID
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : , .      ().
                -  - : , .         .

        **:** : .     .

        **:**       .

 / GetDocHeadTableName
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .      ().

        **:** : .       .

        **:**         .

 / GetDocTblFieldID
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : , .      ().
                -  - : , .          
                  .

        **:** : .      .

        **:**        .

 / GetDocTblTableName
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .      ().

        **:** : .        .

        **:**          .

 / GetCJID
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .       .

        **:** : .    .

        **:**      .

 / GetCJFieldID
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : , .       .
                -  - : , .         .

        **:** : .     .

        **:**       .

 / GetCJTableName
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .       .

        **:** : .       .

        **:**         .

 / GetRegID
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .     .

        **:** : .   .

        **:**     .

 / GetRegDimensionID
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : , .     .
                -  - : , .       .

        **:** : .    .

        **:**      .

 / GetRegResourceID
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : , .     .
                -  - : , .       .

        **:** : .    .

        **:**      .

 / GetRegAttributeID
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : , .     .
                -  - : , .       .

        **:** : .    .

        **:**      .

 / GetRegActsTableName
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .     .

        **:** : .       .

        **:**         .

 / GetRegTotalsTableName
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , .     .

        **:** : .       .

        **:**         .

 / GetMetadataID
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .  .

        **:** : .    .

        **:**      .

 / IntToBase
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : .   .
                -  - : .  .

        **:** : .  .

        **:**        .

 / BaseToInt
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : .   .
                -  - : .  .

        **:** : .  .

        **:**        .

 / ValueToDBString
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , , , , , , ,
                  .   .

        **:** : .  .

        **:**      (  ) [ID(6)][Sign(3)] = 9 .

 / ValueToLongDBString
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , , , , ,
                  .   .

        **:** : .  .

        **:**      (  )
        [Kind(4)][ID(6)][Sign(3)] = 9 .

 / ValueToLongDBString
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : , , , , , .
                    .

        **:** : .  .

        **:**      (  )
        [Kind(4)][ID(6)][Sign(3)] = 13 .

 / ValueFromDBString
---------------------------------------------------------------------
        ** 1:** (, , )

        **:**

                -  - : .  . (10, 11, 12, 15, 16, 17);
                -  - : .    ;
                -  - : .    .

        **:** : , , , , , .  .

        ** 2:** (, )

        **:**

                -  - : .   . : ``.``;
                -  - : .    . 9 .

        **:** : , , , , , .  .

        ** 3:** (, , )

        **:**

                -  - : .  . (10, 11, 12, 15, 16, 17);
                -  - : .  . : ````;
                -  - : .    . 9 .

        **:** : , , , , , .  .

        ** 4:** (, , )

        **:**

                -  - : .  . : ````;
                -  - : .  . : ````;
                -  - : .    . 9 .

        **:** : , , , , , .  .

        **:**         . ,
                .  
              ""  "CalcJournalRecord",
             ,        
         9 .

        **!:**     , ..       
            ,  9 !

 / ValueFromLongDBString
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : , .      ;
                -  - : .    . 13 .

        **:** : , , , , , .  .

        **:**         .

        **!**     , ..       
            ,  13 !

 / GetEndOfPeriod
---------------------------------------------------------------------
        **:** ([])

        **:**

                -  - : . ,    . ,  
                  -   .

        **:** : .     .

        **:**       .

 / GetBegOfPeriod
---------------------------------------------------------------------
        **:** ([])

        **:**

                -  - : . ,    . ,  
                  -   .

        **:** : .     .

        **:**       .

 / GetEndOfPeriodForReg
---------------------------------------------------------------------
        **:** (, [])

        **:**

                -  - : , .     .
                -  - : . ,    . ,  
                  -   .

        **:** : .     .

        **:**          .

 / GetBegOfPeriodForReg
---------------------------------------------------------------------
        **:** (, [])

        **:**

                -  - : , .     .
                -  - : . ,    . ,  
                  -   .

        **:** : .     .

        **:**          .

 / GetStringInVL
---------------------------------------------------------------------
        **:** (, [])

        **:**

                -  - : .  .
                -  - : .        ,   ,
                    . 1 -       (9 ),
                  2 -     (13 ). ,   1.

        **:** : .       .

        **:**   ,      1, 
             .     SQL  :
        ``[ NOT ] IN ( expression [ ,...n ] )``. ,   ,    ,  
            .

 / GetStrFromDate
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .   .

        **:** : .    .

        **:**        : "".

 / GetAddPeriod
---------------------------------------------------------------------
        **:** (, , [])

        **:**

                -  - : .    ;
                -  - : .   -  ,   -  ;
                -  - : , .    . ,     
                      .

        **:** : .    .

        **:** /    .        
          ,        .

 / GetDateTimeIDDOC
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .     1 (GetPosition()/()  Document/).

        **:** : .      .

        **:**          (    ).

        **:**        SQL  .

 / ProcessMetaSQL
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .  SQL   .

        **:** : .         SQL.

        **:**     (c. ` `_)  SQL    SQL .

 / SetTextParam
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : .   .
                -  - : .   .

        **:**   .      .

 / ValueToSuperLongDBString 
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .   ,     .

        **:** : .    23 .

        **:**     1,        ,
              .

 / AttachMD
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .    1cv7.md

        **:**      .
                 
          .

#####################################################################
SQLLock
#####################################################################
    ,  ,  .

       ` / GetNewID`_   .
          ,  ,   .
       - ,  ` / GetNewCode`_  ` / GetNewNumber`_
 ,       .        .
    ` / GetNewID`_        
 ,          _1sjourn
 ,        .    
      .  ` / GetNewCode`_  ` / GetNewNumber`_
 .

         .

   .         
"LockTimeoutExpired".     5 .

       - ,       ,
        `GetNewCode`  `GetNewNumber`
    .

   ::

         (, = "")
                 ;
                 ()=1 
                        =.();
                
                        =.();
                ;
                 =0 
                        =("");
                        .(.());
                ;
        

         (,)
                 .()=0 
                        =("");
                        .(.());
                ;
        

         (,,,)
                 .(1,,,)=0 
                        =("");
                        .(.());
                ;
        

         ()
                =(".");
                =("ODBCRecordset");
                =("SQLLock");
                .("","");
                .(10);
                
                =0;
                 =0 
                        
                                (,"begin tran");
                                (,"insert $. values(?ID, '     0   ', ?, ?, 2, 0, 0, '')");
                                (, 14, 9, 0);
                                (, 14, 6, 0);
                                (, 14, 100, 0);
                                 =1  10 
                                        .("ID",.());
                                        .("",.());
                                        .("","  SQL  "+);
                                        ();
                                ;
                                (,"if @@trancount > 0 commit tran");
                                =1;
                        
                                .("if @@trancount > 0 rollback tran");
                                 ()="LockTimeoutExpired" 
                                         ("   .
                                                | ?","+")="" 
                                                =2;
                                        ;
                                
                                        ;
                                ;
                        ;
                ;
        


=====================================================================
..      <chminfo split="0" splitchild="1">
                <insert nodes="//common/propsmethods/*"/>
        </chminfo>

 / SetObjectType
---------------------------------------------------------------------
        **:** (, )

        **:**

                -  - : .  ,  : "", "";
                -  - : .  .

        **:**      ,  ,  .

 / SetParent
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .  .

        **:**       .

 / SetOwner
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .  -.

        **:**       .

 / SetDateNum
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .     .

        **:**      .

 / SetPrefix
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .  .

        **:**          .
               .

 / GetNewID
---------------------------------------------------------------------
        **:** ()

        **:** : .   ( 9 ).

        **:**     .

 / GetNewCode
---------------------------------------------------------------------
        **:** ()

        **:** : , .   .

        **:**     .       ,
           , .

 / GetNewNumber
---------------------------------------------------------------------
        **:** ()

        **:** : , .   ,   .

        **:**     .        
          .

 / SetTimeout
---------------------------------------------------------------------
        **:** ()

        **:**

                -  - : .   .

        **:**     .


#####################################################################
 .      
#####################################################################
.. _` `:
..      <chminfo><alinks>_1cpp_SQLQuery_Metanames</alinks></chminfo>

  
=====================================================================

 1,     :

        - `` -  ;
        - `` -  ;
        - `` -  ;
        - `` -   ; 
        - `` -  ;
        - `` -   ;
        - `` -   ;
        - `` -   ;
        - `` -   ;
        - `` -   ,    ;
        - `` -    ;
        - `` -     ;
        - `` -   ;
        - `` -   ;
        - `` -   ;
        - `` -   ;
        - `` -   ;
        - `` -     ;
        - `` -  ;

 :

        - `` -     ( ); 
        - `ZZZZ` -     ( );
        - `Alias` -    SQL ;
        - `` -  .

         "$".

           ":".

    SQL       "?".

     , ..    ,  .
       [  ] ( ).

**!**      :  ,
    ,   ,      
   .

   1   .
=====================================================================
       1,      .   
    () .

  ::

        [<> $<1>]

```` - ,          .
``1`` - ,   1,    ,      1_.

  

+---------------------------------------------------+---------------------------------------------------------------+
|                                    |  SQL                               |
+===================================================+===============================================================+
|                                             |                                                          |
+---------------------------------------------------+---------------------------------------------------------------+
|                                               |                                                          |
+---------------------------------------------------+---------------------------------------------------------------+
|                                              |                                                          |
+---------------------------------------------------+---------------------------------------------------------------+
|{|Reference}                             |char(13)                                                       |
+---------------------------------------------------+---------------------------------------------------------------+
|{|Reference}.<>                |char(9)                                                        |
+---------------------------------------------------+---------------------------------------------------------------+
|{|Document}                                |- Char(13);                                                    |
|                                                   |- Char(9) -  ,  ,          |
|                                                   |             |
|                                                   |       {_|_kind} (    |
|                                                   |   ),          |
|                                                   |   .   SQL: int, DBF: char(4).        |
+---------------------------------------------------+---------------------------------------------------------------+
|{|Document}.<>                     |char(9)                                                        |
+---------------------------------------------------+---------------------------------------------------------------+
|{|Enum}                                |char(13)                                                       |
+---------------------------------------------------+---------------------------------------------------------------+
|{|Enum}.<>              |char(9)                                                        |
+---------------------------------------------------+---------------------------------------------------------------+
|{|Undefine}                          |char(23)                                                       |
+---------------------------------------------------+---------------------------------------------------------------+
|{|CalculationKind}                       |- int -     SQL ;           |
|                                                   |- char(4) -     DBF ;       |
|                                                   |- char(13) -   ,      |
|                                                   |   .                                                |
+---------------------------------------------------+---------------------------------------------------------------+
|{|Calendar}                               |char(13)                                                       |
+---------------------------------------------------+---------------------------------------------------------------+
|{|Subconto}                                |char(13) -    (       |
|                                                   |).    ,       |
|                                                   |             |
|                                                   |     {_|_kind} (     |
|                                                   |),         |
|                                                   |.   SQL: int, DBF: char(4).         |
|                                                   |   (, , )  .|
+---------------------------------------------------+---------------------------------------------------------------+
|{|Class}.<>                             | SQL .    .       |
|                                                   |       1,       |
|                                                   |     _SQLCreate().                       |
+---------------------------------------------------+---------------------------------------------------------------+

  DBF  .
=====================================================================
  DBF  ,     ::

        DRIVER = {Microsoft Visual FoxPro Driver};
        Deleted = Yes; Null = Yes; Collate = RUSSIAN; Exclusive = No; SourceType = DBF;
        SourceDB = <>

     --  /\* \*/,  DBF           .
         .

 
=====================================================================
..      <chminfo split="0" splitchild="1">
        </chminfo>

  
---------------------------------------------------------------------
        -  ::

                ${|Reference}.<> = scXXXX

        -   ::

                ${|Document}.<> = dhXXXX

        -   ::

                ${|DocumentStrings}.<> = dtXXXX

        -   ::

                ${|Register}.<> = raXXXX

        -   (/) ::

                ${|RegisterTotals}.<> = rgXXXX

        -   ::

                ${|CalcJournal}.<> = cjXXXX

  
---------------------------------------------------------------------
        -    ::

                ${|Reference}.<>.<> = sp

        -     ::

                ${|Document}.<>.<> = sp

        -     ::

                ${|DocumentStrings}.<>.<> = sp

        -     ::

                ${|Register}.<>.< |  | > = sp

        -     (/) ::

                ${|RegisterTotals}.<>.< | > = sp

        -     ::

                $<Alias>.< |  |  |  | > = <Alias>.sp

        -    ::

                ${|CommonProperty}.<> = sp

        -      ::

                ${|RegisterFlag}.<> = rf
        -   ::

                ${|Sequence}.<> = ds

        -     ::

                ${|CalcJournal}.<>.<> = spXXXX

        -      ::

                ${|ColumnCalcJournal}.<>.<> = ffXXXX

        -    ::

                ${|Entry}.<> = spXXXX

  
---------------------------------------------------------------------
        -  ::

                ${|Constant}.<> = XXXX
        -    char(4)::

                ${36|ReferenceKind36}.<> = 'ZZZZ'

        -   ,    : SQL -   int; DBF -   char(4)::

                ${|DocumentKind}.<> = {XXXX | 'ZZZZ'}
                ${36|DocumentKind36}.<> = 'ZZZZ'

        -    char(4)::

                ${36|EnumKind36}.<> = 'ZZZZ'

        -   ::

                ${|PropertyHistory}.<>.<> = 

        -   ::

                ${|DocsJournal}.<> = 

        -   ::

                ${|SelectionColumn}.<> = 

        -  ::

                ${|Calendar}.<> = 

        -  ::

                ${|Holidays} = 

        -   ::

                ${|CalcJournalKind}.<> = XXXX

        -   ,    : SQL -   int; DBF -   char(4)::

                ${|Algorithm}.<> = {XXXX | 'ZZZZ'}

        -   ::

                ${|EmptyID} = '     0   '
                ${13|EmptyID13} = '   0     0   '

  
---------------------------------------------------------------------
..      <chminfo split="0" splitchild="1">
                <insert nodes="//common/propsmethods/*"/>
        </chminfo>

     SQL  .

**!**            ,
      ,      
  (order by).


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        **  **

        **:**

        ::

                $.<>([<>][,
                        <>][,
                        <>][,
                        <>][,<>]
                ) [as <>]

        **:**

                - **** - : . ,         1.
                      (   ),   
                   .        ,    .
                         ,     
                   .         : 
                  *()*  1,    **; 
                  *()*  2.     ,      ;
                       .
                - **** - :   join.   SQL      ,
                           .   
                   ,      1.   .
                - **** - :   where.   SQL      .
                      ,      1,    ,
                         .   .
                - **** - :    .   ,   
                   .    .
                - **** - :    .   ,   .
                     .


        **:**

                - **<>** -  ,   ;
                - **<>** -      ,   .

        **:**    .     .

        ** :**

                +     ,    ;
                +          -    ;
                +          -    ;
                +           ,       -
                        (  group by  );
                +       ,      -  ,  
                               ( );
                +            ,    , 
                           ( ).

        **:**

                |  :
                |     : 
                |     : , , , 
                |     : , , , 

        :     ,    ,  ,   
        - ,    ,   .

           ::

                select
                        . [ $.],
                        . [ $],
                        .
                from $.(:,
                        inner join $. as  (nolock) on .id = 
                        inner join $. as  (nolock) on .id = ,
                        $. = : and $. = :,
                        (, ), 
                ) as 


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        **  **

        **:**

        ::

                $.<>([<>][, <>][,<>][,
                        <>][,
                        <>][,
                        <>][,<>]
                ) [as <>]

        **:**

                - **** - : . ,         1.
                      .
                - **** - : . ,         1.
                      (,  ),     .  ,   
                   ,   ,     
                  (. *()*).    .
                - **** - :    .      .
                      :

                        *  | Period -    ( );
                        *  | Document -   ;
                        *  | Day -   ;
                        *  | Week -   ;
                        *  | Month -   ;
                        *  | Quarter -   ;
                        *  | Year -   .

                    .
                - **** - :   join.   SQL      ,
                           .    
                    ,      1.   .
                - **** - :   where.   SQL      .
                         ,      1,   
                  ,        .   .
                - **** - :    .   ,
                      .    .
                - **** - :    .   ,   .
                     .

        **:**

                - **<>** -     ;     ;
                - **<>** -      ,   ;  
                    ;     ;
                - **<>** -      ,   ;  
                    ;     ;
                - **<>** -      ,   ;  
                    ;     ;
                - **** -  datetime;   ,     ;  
                    ,    , , , , ;
                - **** -  char(23);    date_time_iddoc (8+6+9);     ,
                     ;
                - **** -  int;   ;     ,  
                   .

        **:**    .

        ** :**

                +     ;
                +     ,          -
                    ;
                +           -   
                  ;
                +         -  ;
                +          -  .


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        **    **

        **:**

        ::

                $.<>([<>][, <>][, <>][,<>][,
                        <>][,
                        <>][,
                        <>][,<>]
                ) [as <>]

        **:**

                - **** - : . ,         1.
                      .
                - **** - : . ,         1.
                      (,  ),     .     
                      ,     
                  (. *()*).    .
                - **** - :    .    
                   .     :

                        *  | Period -    ( );
                        *  | Document -   ;
                        *  | Day -   ;
                        *  | Week -   ;
                        *  | Month -   ;
                        *  | Quarter -   ;
                        *  | Year -   .

                    .
                - **** - :    .  ,    
                   .     :

                        *  (Actions) -        ,    
                             ,       ;
                        *  (ActionsAndPeriodBoundaries) -       
                             ;          / 
                             .
                - **** - :   join.   SQL      ,
                           .    
                  ,      1.   .
                - **** - :   where.   SQL      .
                      ,      1,    ,
                         .   .
                - **** - :    .   ,   
                     .    .
                - **** - :    .   ,  
                  .    .

        **:**

                - **<>** -     ;     ;
                - **<>** -      ,   ;
                      ;
                - **<>** -      ,   ;  
                    ;
                - **<>** -      ,   ;  
                    ;
                - **<>** -      ,   ;
                      ;
                - **** -  datetime;   ,     ;  
                    ,    , , , , ;
                -  -  char(23);    date_time_iddoc (8+6+9);     ,
                     ;
                -  -  int;   ;     ,  
                   .

        **:**      .     .

        ** :**
                +           ,    
                   ;
                +    (/),   ,    
                  , .     ;

  
---------------------------------------------------------------------
..      <chminfo split="0" splitchild="1">
                <insert nodes="//common/propsmethods/*"/>
        </chminfo>

     SQL  .


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        **    **

        **:**

        ::

                $.{<> | }.{< | >}(
                        <>, <>[, <>[, <>]]
                )

        **:**

                -  - :    MS T-SQL;    ,  0
                   ;
                -  - :    MS T-SQL; ,      ;
                -  - :    MS T-SQL; ,      ;
                -  - :    MS T-SQL;  ,    
                    .

        **:**       .


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        **  **

        **:**

        ::

                $.<>(<>[,<>])

        <> -  :

                -  | Day;
                -  | Week;
                -  | Month;
                -  | Quarter;
                -  | Year.


        **:**

                -  - :    MS T-SQL;     ;
                -  - :    ;     :

                        + ```` - char(8);
                        + ```` - datetime.

                    .

        **:**     datetime,    <>.

 
=====================================================================
..      <chminfo split="0">
        </chminfo>

 
---------------------------------------------------------------------
     ( MS SQL).        
(..       ),           
 .

::

        :<> [<>]

<>
         1,    ,
      ,       1.
 : .

  
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
..      <chminfo split="1">
        </chminfo>

      "~"  "*"   .
  "~"      .      
,     0.    "" (char(23))     1,
    ,   "*",     
 1.   20.

     1:

        **:**

                - 0: char() -   ;
                - 1: char(23) -     ,        date_time_iddoc.


        **:**

                - 0: char(8) -   ;
                - 1: char(9) -    +  "Z" (       );
                - 2: datetime.

        **  (, , , ):**

                - 0: char(9) -    (  6+3);
                - 1: char(13) -      (  4+6+3);
                - 2: char(15) -        (2+4+6+3) (       1
                   ,      ).

        **:**  0  1,       , 2-  :

                - 2:    . SQL: int -   ; DBF: char(4) - 36-   .

        **:**  0  1,       , 2-  :

                - 2:    . SQL: int -   ; DBF: char(4) - 36-   .

        **, , **

                - 3:    . SQL: int -   ; DBF: char(4) - 36-   .

        ****

                - 4:      date_time_iddoc.

**.**

           ::

                :   = 1
                : * = 'N                     1'

           ::

                : = '20030613'
                : ~ = '20030613Z'
                : ~~ = {d '2003-06-13'}

           .::

                :   = '    H6   '
                : ~ = '  1W    H6   '
                : * = 'B1  1W    H6           '

SQL 
---------------------------------------------------------------------
SQL     * *.      "?"
( ). . : ` / Prepare`_, ` / AddParam`_, ` / SetParam`_.
