|
|
|
adFldRowID и Access
|
|||
|---|---|---|---|
|
#18+
Как в Access создать поле, чтобы в DELPHI по команде OpenSchema(siColumns, ... в колонке флагов полей (COLUMN_FLAGS) возвращаемого набора данных получать значение adFldRowID? Зачем это нужно? Чтобы для каждой таблицы БД находить автоинкрементное или ключевое поле. Для простых полей получаю значение COLUMN_FLAGS=106, для ключевых - 90. Однако, adFldRowID = 100 в шестнадцатеричной и не равно... А ключевое поле находить очень нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 22:05 |
|
||
|
adFldRowID и Access
|
|||
|---|---|---|---|
|
#18+
У OpenShem'ы есть аргумент для получения ключей и индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 00:23 |
|
||
|
adFldRowID и Access
|
|||
|---|---|---|---|
|
#18+
Есть, siPrimaryKeys и т.п., но мне нужно определять такие поля, в которые нельзя ничего записать, т.е. типа счетчик, автоинкрементные и т.п. Один из способов - анализ флажков столбца (COLUMN_FLAGS), возвращаемых по параметру siColumns. В ADO описаны такие значения: adFldUnspecified = $FFFFFFFF; adFldMayDefer = $00000002; adFldUpdatable = $00000004; adFldUnknownUpdatable = $00000008; adFldFixed = $00000010; adFldIsNullable = $00000020; adFldMayBeNull = $00000040; adFldLong = $00000080; adFldRowID = $00000100; adFldRowVersion = $00000200; adFldCacheDeferred = $00001000; adFldNegativeScale = $00004000; adFldKeyColumn = $00008000; Так вот, для обычных полей я получаю значения флажков 106, а для автоинкрементных 90 (в ACCESS). В десятичном исчислении 106 и 90. Но объяснить 106 и 90 с помощью указанных выше значений ADO, в том числе выделить adFldRowID, не удается. Что можно еще сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 08:07 |
|
||
|
adFldRowID и Access
|
|||
|---|---|---|---|
|
#18+
Но объяснить 106 и 90 с помощью указанных выше значений ADO, в том числе выделить adFldRowID, не удается. Тяжело работать с "хексами"? Переведи все значения в двоичную систему, сразу станет понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 09:13 |
|
||
|
adFldRowID и Access
|
|||
|---|---|---|---|
|
#18+
Нисколько не тяжело. Дело вот в чем. В ACCESS создаю новую таблицу, одно из ее полей делаю автоинкрементным и первичным ключем, остальные обычными и даже неиндексированными. Затем в DELPHI делаю вызов OpenSchema(siColumns... и получаю флаги полей из указанных выше значений, причем флаги для индексированных полей и обычных ничем не отличаются. А где же флаг adFldRowID для ключевого поля ? Почему его не могу получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 20:04 |
|
||
|
adFldRowID и Access
|
|||
|---|---|---|---|
|
#18+
nm В справке черным по белому написано, и не важно что на английском языке! Note In Visual Basic, columns that have a four-byte unsigned integer (DBTYPE UI4) in the Recordset returned from the OpenSchema method on the Connection object cannot be compared to other variables Код: plaintext 1. 2. 3. Теперь надеюсь понятно? P.S. Отсюда можно сделать вывод, что либо ты не умеешь работать в DELPHI, либо DELPHI в этом вопросе недалеко ушел от VB. :) Кстати, дельный совет тебе дал Senin Viktor! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 22:41 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1746&tid=1679258]: |
0ms |
get settings: |
5ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 321ms |

| 0 / 0 |
