Не подскажете ли, каким образом я могу создать специальные типя полей (например "Счетчик" "Код репликации") в предложении CREATE TABLE. Причем предполагается отправлять эти предложения посредством ODBC SQLExecDirect.
Но вот заполнять мне их приходится на уровне клиента, т.е. программно. Но в Access есть способ задать автозаполнение для такого поля, но вот я знаю как это сделать только визуально. А базу данных я создаю никак не визуально...
Голь на выдумку хитра, однако...
Re[3]: Создание хитрых полей Access через Direct-SQL
TL>CREATE TABLE tablename (FieldName guid);
TL>Но вот заполнять мне их приходится на уровне клиента, т.е. программно. Но в Access есть способ задать автозаполнение для такого поля, но вот я знаю как это сделать только визуально. А базу данных я создаю никак не визуально...
Я конечно не абсолютный дока в подобном случае, но попробуй при создании новой записи значение для этого поля получать из CoCreateGuid() — лечит!
Re[4]: Создание хитрых полей Access через Direct-SQL
Здравствуйте GW, вы писали:
GW>Я конечно не абсолютный дока в подобном случае, но попробуй при создании новой записи значение для этого поля получать из CoCreateGuid() — лечит!
Не обижайтесь, пожалуйста, но насчет первого Вы, пожалуй, правы...
Разумеется я знаю, коим образом можно раздобыть новых GUID (или UUID, если быть точным) средствами API системы... Разве это проблема? Только вот не это проблема то...
Голь на выдумку хитра, однако...
Re[5]: Создание хитрых полей Access через Direct-SQL
Здравствуйте The Lex, вы писали:
TL>Не обижайтесь, пожалуйста, но насчет первого Вы, пожалуй, правы...
Я же говорил, что всего не знаю, но ...
TL>Разумеется я знаю, коим образом можно раздобыть новых GUID (или UUID, если быть точным) средствами API системы... Разве это проблема? Только вот не это проблема то...
А про это вы случайно не читали:
MSDN сказал:
Creating "AutoNumber" GUID Fields Programmatically
Microsoft Access also provides an "AutoNumber" type GUID field. You can use this type of field for the primary key of a table and let Access automatically generate each new GUID. The GUIDs are randomly generated by the Microsoft Jet database engine each time a record is inserted into the table using an complex algorithm that will avoid duplicates over all databases in the world until the year 3400 AD.
You cannot create an "AutoNumber" type GUID field using SQL DDL, you must use DAO code. The following code demonstrates how to create an "AutoNumber" type GUID field using CDaoTableDef::CreateField method:
Sample Code
// Open database and create tabeldef.
CDaoDatabase db;
db.Open(_T("c:\\db1.mdb"));
CDaoTableDef td(&db);
td.Create(_T("MyGUIDTable"));
// Create and fill out a CDaoFieldInfo structure.
CDaoFieldInfo fi;
fi.m_strName = _T("ID");
fi.m_nType = dbGUID;
fi.m_lSize = 16;
fi.m_nOrdinalPosition = 0;
fi.m_bAllowZeroLength = FALSE;
fi.m_bRequired = FALSE;
fi.m_lAttributes = dbSystemField;
fi.m_strValidationRule = _T("");
fi.m_strValidationText = _T("");
fi.m_strDefaultValue = _T("GenGUID()"); // This generates the GUID.
// Create field using CDaoFieldInfo constructor and append table.
td.CreateField(fi);
td.Append();
Re[6]: Создание хитрых полей Access через Direct-SQL