Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применимо к: Windows | Windows Server
Функция JetSetColumn
Функция JetSetColumn изменяет одно значение столбца в измененной записи для вставки или обновления текущей записи. Он может перезаписать существующее значение, добавить новое значение в последовательность значений в многозначном столбце, удалить значение из последовательности значений в многозначном столбце или обновить все или часть длинного значения, столбец типа JET_coltypLongText или JET_coltypLongBinary.
JET_ERR JET_API JetSetColumn(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in JET_COLUMNID columnid,
__in_opt const void* pvData,
__in unsigned long cbData,
__in JET_GRBIT grbit,
__in_opt JET_SETINFO* psetinfo
);
Параметры
Sesid
Сеанс, используемый для этого вызова.
табличный
Курсор, используемый для этого вызова.
columnid
JET_COLUMNID извлекаемого столбца. Кроме того, можно указать значение columnid 0 (ноль). Если задано значение columnid 0 (ноль), все помеченные столбцы, разреженные и многозначные столбцы обрабатываются как один столбец. Это упрощает извлечение всех разреженных столбцов, присутствующих в записи.
pvData
Входной буфер, содержащий данные, используемые для значения столбца.
cbData
Размер входного буфера в байтах.
гбит
Группа битов, содержащих параметры, которые будут использоваться для этого вызова, которые включают в себя ноль или более следующих:
Ценность |
Значение |
|---|---|
JET_bitSetAppendLV |
Этот параметр используется для добавления данных в столбец типа JET_coltypLongText или JET_coltypLongBinary. Такое же поведение можно достичь, определив размер существующего длинного значения и указав ibLongValue в psetinfo. Тем не менее, проще использовать этот гбит , так как знание размера существующего значения столбца не требуется. |
JET_bitSetOverwriteLV |
Этот параметр используется для замены существующего длинного значения новыми предоставленными данными. Если этот параметр используется, это так, как если бы существующее длинное значение было задано в 0 (ноль) до установки новых данных. |
JET_bitSetRevertToDefaultValue |
Этот параметр применим только для помеченных, разреженных или многозначных столбцов. Это приводит к возврату значения столбца по умолчанию при последующих операциях извлечения столбцов. Все существующие значения столбцов удаляются. |
JET_bitSetSeparateLV |
Этот параметр используется для принудительного хранения длинного значения столбцов типа JET_coltypLongText или JET_coltypLongBinary отдельно от остальных данных записи. Обычно это происходит, когда размер длинного значения предотвращает его хранение с оставшимися данными записи. Однако этот параметр можно использовать для принудительного хранения длинного значения отдельно. Обратите внимание, что длинные значения четыре байта размером меньшего размера не могут быть разделены. В таких случаях параметр игнорируется. |
JET_bitSetSizeLV |
Этот параметр используется для интерпретации входного буфера в виде целочисленного числа байтов, чтобы задать длину длинного значения, описанного заданным столбцом , а если указано, порядковый номер в psetinfo-itagSequence>. Если указанный размер превышает существующее значение столбца, столбец будет расширен с 0.0. Если размер меньше существующего значения столбца, значение будет усечено. |
JET_bitSetUniqueMultiValues |
Этот параметр используется для принудительного применения всех значений в многозначном столбце. Этот параметр сравнивает данные исходного столбца без каких-либо преобразований с другими существующими значениями столбцов и возвращает ошибку при обнаружении повторяющегося столбца. Если этот параметр задан, JET_bitSetAppendLV JET_bitSetOverwriteLV и JET_bitSetSizeLV также нельзя предоставить. |
JET_bitSetUniqueNormalizedMultiValues |
Этот параметр используется для принудительного применения всех значений в многозначном столбце. Этот параметр сравнивает ключевое нормализованное преобразование данных столбца с другими аналогичными преобразованными существующими значениями столбцов и возвращает ошибку, если найден дубликат. Если этот параметр задан, JET_bitSetAppendLV JET_bitSetOverwriteLV и JET_bitSetSizeLV также нельзя предоставить. |
JET_bitSetZeroLength |
Этот параметр используется для задания значения нулевой длины. Как правило, значение столбца имеет значение NULL , передав cbMax 0 (ноль). Однако для некоторых типов, таких как JET_coltypText, значение столбца может быть равно 0 (ноль) вместо NULL, и этот параметр используется для различения длины NULL и 0 (ноль). Заметка Как правило, если столбец является столбцом фиксированной длины, этот бит игнорируется, а столбец имеет значение NULL. Однако если столбец является столбцом с тегом фиксированной длины, длина столбца имеет значение 0. Если для столбца фиксированной длины задана длина 0, попытка получить столбец с помощью JetRetrieveColumn или JetRetrieveColumns будет успешно выполнена, но фактическая длина, возвращаемая в параметре cbActual, равна 0. |
JET_bitSetIntrinsicLV |
Этот параметр используется для хранения всего длинного значения в записи. |
JET_bitSetCompressed |
Этот параметр используется для попытки сжатия данных при хранении данных. Windows 7: JET_bitSetCompressed появилась в Windows 7. |
JET_bitSetUncompressed |
Этот параметр не используется при хранении данных при попытке сжатия. Windows 7: JET_bitSetUnCompressed представлен в Windows 7. |
psetinfo
Указатель на необязательные входные параметры, которые можно задать для этой функции с помощью структуры JET_SETINFO .
Если psetinfo присваивается значение NULL , то функция ведет себя так, как будто было задано значение itagSequence 1 и ibLongValue 0 (ноль). Это приводит к тому, что для набора столбцов задано первое значение многозначного столбца, а также для задания длинных данных, начиная с смещения 0 (ноль).
Для этого параметра можно задать следующие параметры:
Ценность |
Значение |
|---|---|
ibLongValue |
Двоичное смещение в длинное значение столбца, в котором должен начинаться набор данных. |
itagSequence |
Порядковый номер заданного многозначного значения столбца. Если параметр itagSequence имеет значение 0 (ноль), то указанное значение должно быть добавлено в конец последовательности многозначных значений. Если указанный номер последовательности больше последнего существующего многозначного значения, то снова данное значение добавляется в конец последовательности значений. Если порядковый номер соответствует существующему значению, то это значение заменяется заданным значением. |
Возвращаемое значение
Эта функция возвращает тип данных JET_ERR с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделе Об ошибках обработчика хранилища и параметрахобработки ошибок.
Код возврата |
Описание |
|---|---|
JET_errSuccess |
Операция успешно завершена. |
JET_errBadColumnId |
Идентификатор столбца, указанный вне юридических ограничений идентификатора столбца. |
JET_errClientRequestToStopJetService |
Невозможно завершить операцию, так как все действия в экземпляре, связанном с сеансом, прекратились в результате вызова JetStopService. |
JET_errColumnNotFound |
Столбец, описанный заданным столбцом , не существует в таблице. |
JET_errColumnNotUpdatable |
Предпринята неправлая попытка обновить длинное значение во время операции удаления исходной копии копирования. |
JET_errColumnTooBig |
Данные значения столбца, заданные в входном буфере, превышают ограничение размера, естественное для столбца фиксированной длины или настроенного для текста фиксированной длины или двоичных столбцов. Эта ошибка также возвращается при передаче более 1024 байтов данных для длинного столбца и установке флага JET_bitSetIntrinsicLV. |
JET_errInstanceUnavailable |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, столкнулся с неустранимой ошибкой, требующей отмены доступа ко всем данным для защиты целостности этих данных. Windows XP: Эта ошибка будет возвращена только windows XP и более поздними выпусками. |
JET_errInvalidBufferSize |
Заданный размер данных значения столбца не соответствует естественному типу данных фиксированной длины. |
JET_errInvalidColumnType |
Была предпринята попытка обновить столбец автоматического увеличения либо во время операции вставки или обновления, либо обновить столбец версии во время операции замены. |
JET_errInvalidgrbit |
Предоставленные параметры неизвестны или недопустимые сочетания известных параметров бита. |
JET_errInvalidParameter |
Указанный объект psetinfo-cbStruct> не является допустимым размером для структуры JET_SETINFO . |
JET_errMultiValuedDuplicate |
Операция набора столбцов попыталась создать повторяющееся значение и указала либо JET_bitSetUniqueMultiValues, либо JET_bitSetUniqueNormalizedMultiValues. |
JET_errNotInitialized |
Невозможно завершить операцию, так как экземпляр, связанный с сеансом, еще не инициализирован. |
JET_errNotInTransaction |
Предпринята неправлая попытка обновить длинное значение столбца, когда вызывающий сеанс не был в транзакции. |
JET_errNullInvalid |
Предпринята неправлая попытка задать для столбца, отличного от NULL. |
JET_errColumnIllegalNull |
То же, что и JET_errNullInvalid. |
JET_errRecordTooBig |
Значение столбца не может быть задано в входном буфере, так как это привело бы к превышению размера страницы, связанного с размером страницы. Столбцы типа JET_coltypLongText или JET_coltypLongBinary могут храниться отдельно от оставшихся данных записи. Однако другие столбцы должны храниться с записью и могут привести к превышению ограничения размера записи. Даже длинные столбцы требуют 5-байтов пространства в записи в качестве компоновки, и это также может привести к JET_errRecordTooBig возвращаемым. |
JET_errRestoreInProgress |
Невозможно выполнить операцию, так как операция восстановления выполняется в экземпляре, связанном с сеансом. |
JET_errSessionSharingViolation |
Один и тот же сеанс нельзя использовать для нескольких потоков одновременно. Windows XP: Эта ошибка будет возвращена только windows XP и более поздними выпусками. |
JET_errTermInProgress |
Невозможно завершить операцию, так как экземпляр, связанный с сеансом, завершается. |
JET_errUpdateNotPrepared |
Курсор в настоящее время не входит в процесс вставки новой записи или обновления существующей записи. |
JET_errVersionStoreOutOfMemory |
Эта ошибка возникает, когда настроенный размер хранилища версий недостаточно для хранения всех невыполненных обновлений. |
JET_wrnColumnMaxTruncated |
Значение столбца в входном буфере превысило максимальную настроенную длину для столбца переменной длины и усечено. |
При успешном выполнении требуемая часть значения столбца для данного столбца устанавливается с данными, скопированными из входного буфера. Набор данных может быть усечен, если он превысил максимальную длину, указанную для столбца переменной длины.
При сбое расположение курсора остается неизменным, и данные о значении столбца не обновляются в буфере копирования.
Замечания
Установка длинных значений столбцов JET_coltypLongBinary типа JET_coltypLongText или JET_coltypLongBinary должна выполняться только в том случае, если сеанс вызова находится в транзакции. Если вызывающий сеанс не находится в транзакции, изменения длинных значений, хранящихся отдельно, могут быть зафиксированы полностью даже при последующей отмене операции обновления. Если вызывающий сеанс находится в транзакции, эффекты обновления можно полностью откатить, отменив обновление и откатив транзакцию сеанса.
Обновления индекса не выполняются в результате операций JetSetColumn . Вместо этого индексы обновляются только после завершения всех изменений столбцов и вызывается JetUpdate . Это позволяет наиболее эффективно обновлять индексы при изменении нескольких столбцов.
Запись ограничена размером на основе размера страницы базы данных. Любые длинные значения в записи размером более пяти байтов будут храниться отдельно от записи, если данные в записи превышают его предел в результате операции JetSetColumn . Ошибка, JET_errRecordTooBig будет возвращена только после того, как все данные столбца с разделителями записей хранятся отдельно от записи, а запись по-прежнему превышает ограничение размера записи.
Требования
| Требование | Ценность |
|---|---|
Клиент |
Требуется Windows Vista, Windows XP или Windows 2000 Профессиональный. |
Сервер |
Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server. |
Заголовок |
Объявлен в Esent.h. |
Библиотека |
Используйте ESENT.lib. |
Библиотека dll |
Требуется ESENT.dll. |
См. также
JET_COLUMNID
JET_ERR
JET_SESID
JET_TABLEID
JET_SETINFO
JetRetrieveColumn
JetSetColumns