
рд╣реЗрд▓реЛ рд░реАрдбрд░реНрд╕ рд╣рдмрд░рд╣рд╛рдм!
рдпрд╣реАрдВ рд╕реЗ рд╢реБрд░реВ рд╣реБрдИ рдкреЛрд╕реНрдЯ рдХрд╛ рдЕрдВрддред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдВрдд рд╣реИред рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдПрдВ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдИрдбреАрдмреА рдбреЗрдЯрд╛рдмреЗрд╕ рд▓рд┐рдпрд╛ рдерд╛, рдЗрд╕реЗ рдИрдПрд╕рдИ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрд▓рд╛, рдЙрдкрд▓рдмреНрдз рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдФрд░ рдЗрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ рд╕реНрддрдВрднреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЙрд▓рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдХреЙрд▓рдо рдФрд░ рд╡реЙрдЗрд▓рд╛ рдХреЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ, рдЖрдзрд╛рд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдЧрд▓реЗ рдХреЙрд▓рдо рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдерд╛, рд╕рд╛рде рд╣реА SCOLumnInfo рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рднреА рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рд╡реЗ рд╣реИрдВ:
typedef рд╕рдВрд░рдЪрдирд╛ tagColumnInfo
{
DWORD dwId ;
std :: wstring sName ;
DWORD dwType ;
DWORD dwMaxSize ;
} SColumnInfo ;
рдмреВрд▓ CJetDBReaderCore :: TableEnd ( std :: wstring sTableName )
{
std :: map < std :: wstring , JET_TABLEID > :: const_iterator iter = m_tablesред find ( sTableName ) ;
рдЕрдЧрд░ ( iter ! = m_tablesред рд╕рдорд╛рдкреНрддрд┐ ( ) )
{
рдЕрдЧрд░ ( _JetMove ( m_sesid, iter - > рджреВрд╕рд░рд╛, JET_MoveNext, 0 )
{
рд╕рдЪ рд▓реМрдЯрдирд╛ ;
}
рдФрд░ рдЭреВрдареЗ рд╡рд╛рдкрд╕ ;
}
рд╕рдЪ рд▓реМрдЯрдирд╛ ;
}
рддрджрдиреБрд╕рд╛рд░, рдЬрдм рдЕрдЧрд▓реЗ рддрддреНрд╡ рддрдХ рд▓реЗ рдЬрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛
рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ ред
рд╣рдордиреЗ рд╕реНрддрдВрднреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХреА рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛, рдпрд╣ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред
рд╕реНрддрдВрднреЛрдВ рдореЗрдВ рд╕реЗрд▓ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
JET_ERR CJetDBReaderCore :: EnumColumnsValues тАЛтАЛрдФрд░
SDBTableInfo рдФрд░ sTableInfo,
std :: рд╕реВрдЪреА < SColumnInfo > & sColumnsInfo )
{
typedef std :: basic_string < рдмрд╛рдЗрдЯ > CByteArray ;
JET_ERR jRes = OpenTable ( sTableInfoред STableName ) ;
рдЕрдЧрд░ ( jRes == JET_errSuccess )
{
JET_COLUMNLIST sColumnInfo ;
jRes = GetTableColumnInfo ( sTableInfoред sTableName , & sColumnInfo, FALSE ) ;
рдЕрдЧрд░ ( jRes ! = JET_errSuccess ) рд╡рд╛рдкрд╕реА jRes ;
рдЕрдЧрд░ ( MoveToFirst ( sTableInfoред sTableName ) )
{
std :: рд╡реЗрдХреНрдЯрд░ < CByteArray > рдзрд╛рд░рдХреЛрдВ ( sColumnsInfoред size ( ) ) ;
std :: рд╡реЗрдХреНрдЯрд░ < CByteArray > :: iterator HolderIt = рдзрд╛рд░рдХреЛрдВред рд╢реБрд░реВ ( ) ;
std :: рд╡реЗрдХреНрдЯрд░ < JET_RETRIEVECOLUMN > рдкрдВрдХреНрддрд┐ ( sTableInfoред sCumnumnInfo ред рдЖрдХрд╛рд░ ( ) ) ;
std :: рд╡реЗрдХреНрдЯрд░ < JET_RETRIEVECOLUMN > :: рдкреБрдирд░рд╛рд╡реГрддрд┐ рдЗрдЯ = рдкрдВрдХреНрддрд┐ред рд╢реБрд░реВ ( ) ;
std :: рд╕реВрдЪреА < SColumnInfo > :: const_iterator ColumnInfoIt
= sColumnsInfoред рд╢реБрд░реВ ( ) ;
for ( int nColNum = 0 ; ColumnInfoIt ! = sColumnsInfoред рдЕрдВрдд ) ( )
++ ColumnInfoIt, ++ It, ++ HolderIt, ++ nColNum )
{
DWORD dwMaxSize = ColumnInfoIt - > dwMaxSize ? ColumnInfoIt - > dwMaxSize :
MAX_BUFFER_SIZE ;
рдпрд╣ - > рдХреЙрд▓рдорд┐рдб = ColumnInfoIt - > dwId ;
рдпрд╣ - > cbData = dwMaxSize ;
рдзрд╛рд░рдХ - > рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ ( dwMaxSize, ' \ 0 ' ) ;
рдпрд╣ - > pvData = const_cast < byte * > ( рдзрд╛рд░рдХ - > рдбреЗрдЯрд╛ ( ) ) ;
рдпрд╣ - > itagSequence = 1 ;
}
рдХрд░рдирд╛
{
GetColumns (
sTableInfoред STableName , рдФрд░ рд░реЛ [ 0 ] ,
static_cast < INT > ( рдкрдВрдХреНрддрд┐ рдЖрдХрд╛рд░ ред ( ) ) ;
ColumnInfoIt = sColumnsInfoред рд╢реБрд░реВ ( ) ;
int iSubItem = 0 ;
рдХреЗ рд▓рд┐рдП ( рдпрд╣ = рдкрдВрдХреНрддрд┐ рд╢реБрд░реВ ред ) ; рдпрд╣ = ! рдкрдВрдХреНрддрд┐ рдЕрдВрдд ( ) ; ++ рдпрд╣ ;
++ ColumnInfoIt, ++ iSubItem )
{
рдЕрдЧрд░ ( * рдпрд╣ ) ред cbActual )
{
std :: wstring s ;
std :: string tmp ;
wchar_t рдмрдл [ 16 ] ;
рд╕реНрд╡рд┐рдЪ ( ColumnInfoIt - > dwType )
{
рдорд╛рдорд▓рд╛ JET_coltypBit :
s = * reinterpret_cast < byte * > ( ( * Itред pvData ) ? рдПрд▓ "рдЯреНрд░реВ" : рдПрд▓ "рдЧрд▓рдд" ;
рддреЛрдбрд╝рдирд╛ ;
рдорд╛рдорд▓рд╛ JET_coltypText :
tmpред рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ ( reinterpret_cast < char * > ( ( * It ) ред pvData ) , ( * Itред cbActual ) ;
рд░реЛрдВред рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ ( tmpред рд╢реБрд░реВ ) ( ) , tmpред рдЕрдВрдд ( ) ;
рддреЛрдбрд╝рдирд╛ ;
рдорд╛рдорд▓рд╛ JET_coltypLongText :
рд░реЛрдВред рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ ( рдкреБрдирд░реНрд╡реНрдпрд╛рдЦреНрдпрд╛_рдХрд╛рд╕реНрдЯ рдХрд░реЗрдВ < wchar_t * > ( ( * рдпрд╣ ) ред pvData ) ред
( * рдпрд╣ ) ред cbActual / sizeof ( wchar_t ) ) ;
рддреЛрдбрд╝рдирд╛ ;
рдорд╛рдорд▓рд╛ JET_coltypUnsignedByte :
s = _ltow ( * static_cast < byte * > ( ( * It ) ред pvData ) , рдмрдлрд╝ , 10 ) ;
рддреЛрдбрд╝рдирд╛ ;
рдорд╛рдорд▓рд╛ JET_coltypShort :
s = _ltow ( * static_cast < short * > ( ( * It ) ред pvData ) , рдмрдлрд╝ , 10 ) ;
рддреЛрдбрд╝рдирд╛ ;
рдорд╛рдорд▓рд╛ JET_coltypLong :
s = _ltow ( * static_cast < long * > ( ( * It ) ред pvData ) , рдмрдлрд╝ , 10 ) ;
рддреЛрдбрд╝рдирд╛ ;
рдорд╛рдорд▓рд╛ JET_coltypGUID :
wchar_t wszGuid [ 64 ] ;
:: StringFromGUID2 ( * reinterpret_cast < const GUID * > ( * * ) ред Pvataata ) ,ред
wszGuid, sizeof ( wszGuid ) ) ;
USES_CONVERSION;
s = wszGuid ;
рддреЛрдбрд╝рдирд╛ ;
}
sTableInfoред sColumnInfo [ iSubItem ] ред sColumnValues ред push_back ( s ) ;
}
рдФрд░ sTableInfoред sColumnInfo [ iSubItem ] ред sColumnValues ред push_back ( L "<рдЦрд╛рд▓реА>" ) ;
}
}
рдЬрдмрдХрд┐ ( TableEnd ( sTableInfoред sTableName ) ) ;
}
jRes = CloseTable ( sTableInfoред sTableName ) ;
}
рд╡рд╛рдкрд╕реА jRes ;
}
рд╣рдо рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдШрдЯрд╛рдПрдВрдЧреЗред рдФрд░ рдЪрд▓реЛ рдХрд░реНрд╕рд░ рдХреЛ рдЙрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рдЦрдХрд░ рдкрд╣рд▓реЗ рддрддреНрд╡ рдкрд░ рдЬрд╛рдПрдВ (MoveToFirst рдлрд╝рдВрдХреНрд╢рди, рдкрд┐рдЫрд▓реА
рдкреЛрд╕реНрдЯ рджреЗрдЦреЗрдВ)ред
рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╣реИ рдЬреИрд╕реЗ рд╣рдордиреЗ MSysObjects рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд╛рдо рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдП рдереЗ, рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде: рддрдм рд╣рдореЗрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рдбреЗрдЯрд╛ рдордирдорд╛рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╡рд┐рд╢реЗрд╖ рд╣реЛрд▓реНрдбрд░реНрд╕ рдмрд╛рдЗрдЯ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд╣рд╛рдВ рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рд╣реЗрдЬреЗрдВрдЧреЗ, рдФрд░ рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдХреНрдЯрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛, рдЬрдм рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╛рдиреА:
- рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ:
typedef std :: basic_string < рдмрд╛рдЗрдЯ > CByteArray
- рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдзрд╛рд░рдХ рдмрдирд╛рдПрдБ, рд╡реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:
std :: рд╡реЗрдХреНрдЯрд░ < CByteArray > рдзрд╛рд░рдХреЛрдВ ( sColumnsInfoред size ( ) ) ;
- рдФрд░ рдлрд┐рд░ рдЪрдХреНрд░ рдореЗрдВ рд╣рдо рдореЗрдореЛрд░реА рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рдбреЗрдЯрд╛ рдФрд░ рд╣рдорд╛рд░реЗ рдзрд╛рд░рдХ рд╡рд╛рдкрд╕ рд▓реМрдЯ рдЖрдПрдВрдЧреЗ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рднреА рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдХреЙрд▓рдореЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдорд┐рд▓рд╛ рд╣реИ):
рдзрд╛рд░рдХ - > рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ ( dwMaxSize, ' \ 0 ' ) ;
рдпрд╣ - > pvData = const_cast < byte * > ( рдзрд╛рд░рдХ - > рдбреЗрдЯрд╛ ( ) ) ;
- рдФрд░ рдЕрдм рд▓реВрдк рдореЗрдВ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╡реЗрдХреНрдЯрд░ JET_RETRIEVECOLUMN рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рдкрд╕ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдзрд╛рд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
GetColumns ( sTableInfoред STableName , & Row [ 0 ] , static_cast << >> ( Rowред Size ( ) ) ) ;
рдирддреАрдЬрддрди, рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдШрдЯрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрдм рд╕реЗ рдбреЗрдЯрд╛ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ, рдЗрд╕реЗ рдХреБрдЫ рдФрд░ рдкрдардиреАрдп рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рдореЗрдВ):
- JET_coltypBit
- JET_coltypText
- JET_coltypLongText
- JET_coltypUnsignedByte
- JET_coltypShort
- JET_coltypLong
- JET_coltypGUID
рдИрдПрд╕рдИ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдореЗрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдПрдХ рджрд░реНрд╢рдХ рдХреЛ рд▓рд┐рдЦрд╛! рдпрджрд┐ рдЖрдк рдЗрди рдЕрдВрддрд╣реАрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХреНрд╕рдЪреЗрдВрдЬ 2010 рдореЗрдВ рдХрд╛рдлреА рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
рд╣рдордиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛрд╖ рд╣реИ: рджреГрд╢реНрдпрддрд╛ред рд╣рдордиреЗ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рднрд░ рджрд┐рдпрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реБрдЖред рдпрд╛рдиреА рдЖрдкрдХреЛ рдПрдХ GUI рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЗрди рд╕рднреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рд▓рд┐рдЦрдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд░рд▓ рдЧреНрд░рд┐рдб рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрдЧрд╛; рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд▓рд╛рдн рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рд╣реИ рдФрд░ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдмреЛрд▓рдирд╛, рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рджреВрдВрдЧрд╛ред
рдЗрд╕рдиреЗ рд╣рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рджрд┐рдпрд╛? рдПрдХ рддрд░рдл, рдереЛрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬрд╛рдирдХрд╛рд░реА рдмрд╛рдЗрдирд░реА рдлреЙрд░реНрдо
JET_coltypBinary рдореЗрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрд╣реАрдВ рднреА рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рдПрдХреНрд╕рдЪреЗрдВрдЬ
рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдУрд░, рд╣рдо рдмреЗрд╣рддрд░ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?", рдФрд░ рдпрд╣ рдЕрдореВрд▓реНрдп рдЬрд╛рдирдХрд╛рд░реА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ "рдкреНрд░рд╛рд░рдВрдн" рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░реА рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рди рдХрд░рдирд╛ рд╣реИред
рдпрд╣ рдХрд╣рд╛рдВ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИ? рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдФрд░ рдПрдкреАрдЖрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕, рдСрдбрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рд░рд┐рдХрд╡рд░реАред
рдЕрдВрдд рдореЗрдВ, рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рджреЛ рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдгред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛:

рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА:

рдкрдврд╝рдиреЗ рдФрд░ рдЕрдкрдирд╛ рд╕рдордп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
PS рдпрд╣ рдХреЛрдб рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ
рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рдХрдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ, рдпрд╛ рдЫрдВрдЯрдиреА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЧреИрдЧ рд╣реИрдВред рдХреГрдкрдпрд╛ рдЙрди рдкрд░ рдзреНрдпрд╛рди рди рджреЗрдВ, рдпрд╣ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреЗрдЬ рдкрд░ рд╕рднреА рдЬрдЧрд╣ "рдЦрд╛рдПрдВ" рдирд╣реАрдВред рдЖрдкрдХреА рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдкреАрдкреАрдПрд╕ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐, рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд▓реЛрдЧреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреА рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдФрд░ рдЗрд╕ рдкрдж рдкрд░ рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ
- MSDN рдкрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдЗрдВрдЬрди
- рд░реВрд╕реА рдореЗрдВ рдПрдХ рд▓реЗрдЦ (рдИрдПрд╕рдИ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ RuNet рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд▓реЗрдЦ)
- рдИрдПрд╕рдИ рдлрд╝реАрдЪрд░ рдЙрджрд╛рд╣рд░рдг