CeSeekDatabaseEx (EDB)
9/8/2008
Seekd esta função para um registro especificado em um aberto banco de dados.
Essa função não trabalho com bancos de dados CEDB. Para obter mais informações sobre CEDB, consulte CEDB Reference.
Syntax
CEOID CeSeekDatabaseEx(
HANDLE hDatabase,
DWORD dwSeekType,
DWORD dwValue,
WORD wNumVals,
LPDWORD lpdwIndex
);
Parameters
- hDatabase
[no] Identificador para um aberto banco de dados. O identificador deve ser obtida com a função CeOpenDatabaseInSession (EDB).
dwSeekType
[no] Tipo de operação buscar para executar. A seguinte tabela mostra os valores possíveis.Buscar tipo Descrição CEDB_SEEK_BEGINNING
Procura a partir do início do banco de dados até localizar o registro na posição especificada. O dwValue parâmetro especifica o número de registros a buscar a partir do início.
CEDB_SEEK_CEOID
Procura até encontrar um objeto que tenha o identificador especificado objeto (OID). O dwValue parâmetro especifica a OID. Esse tipo de operação buscar é muito eficiente.
CEDB_SEEK_CURRENT
Procura com versões anteriores ou ENC a partir de atual posição do ponteiro de Busca para o número especificado de registros. O dwValue parâmetro especifica o número de registros do atual posição. A função procura ENC se dwValue é um valor positivo ou negativo se ele for com versões anteriores. A função é como eficiente para trás buscam como encaminhamentos.
Para inserir valores negativos, CAST dwValue Para um long assinado. Isso altera o intervalo eficaz em índices de registro de 32 bits para BITS 31.
CEDB_SEEK_END
Procura com versões anteriores para o número especificado de registros do final do banco de dados. O dwValue parâmetro especifica o número de registros a buscar a partir do final.
CEDB_SEEK_PREFIX
Permite que um prefixo a ser usado ao buscar dados, apenas com seqüência de caracteres e objeto binário grande (blob) dados tipos. Esse tipo pode ser usado somente com um tipo CEVT_LPWSTR e também deve ser especificado com uma operação OR lógico com um dos seguinte a buscar tipos:
- CEDB_SEEK_VALUEFIRSTEQUAL
- CEDB_SEEK_VALUESMALLER
- CEDB_SEEK_VALUEGREATER
- CEDB_SEEK_VALUESMALLEROREQUAL
- CEDB_SEEK_VALUEGREATEROREQUAL
Prefixo compatível ignora maiúsculas e minúsculas e usa a seguinte sinalizadores:
- NORM_IGNORECASE
- NORM_IGNORENONSPACE
- NORM_IGNOREKANATYPE
- NORM_IGNOREWIDTH
CEDB_SEEK_VALUEFIRSTEQUAL
Começa na iniciar da classificar e procura ENC até localizar o primeiro valor que é igual ao valor especificado. Sempre procura ENC, regardless of ordem classificar. Se a operação de pesquisa falhar, o ponteiro buscar for deixado no final de banco de dados e a função retorna zero. O dwValue parâmetro é um ponteiro para uma matriz de CEPROPVAL Estruturas e wNumVals é o número de CEPROPVAL Estruturas de matriz.
CEDB_SEEK_VALUEGREATER
Procura ENC no final da classificar até localizar o primeiro valor que não é igual ao valor especificado. Sempre procura ENC, regardless of ordem classificar. Em ordem crescente, isso localiza o menor valor maior do que o valor especificado. Em ordem decrescente, isso localiza o maior valor menor do que o valor especificado. Se nenhuma do seguinte registros possui um valor que atenda aos critérios pesquisa, o ponteiro buscar for deixado no final de banco de dados e a função retorna zero. O dwValue parâmetro é um ponteiro para uma matriz de CEPROPVAL estruturas, e wNumVals é o número de CEPROPVAL Estruturas de matriz.
CEDB_SEEK_VALUEGREATEROREQUAL
Semelhante a CEDB_SEEK_VALUEGREATER, mas esse tipo também correspondências valores iguais ao valor especificado.
CEDB_SEEK_VALUENEXTEQUAL
Iniciando a partir de atual posição buscar, procura exatamente uma posição ENC no ordem de classificação e verifica se este próximo registro é igual valor para o valor especificado. Se assim, ele retorna o identificador deste objeto próximo registro. Caso contrário, ele retorna zero e deixa o ponteiro de busca ao final de banco de dados. Esta operação pode ser usada em conjunto com a operação CEDB_SEEK_VALUEFIRSTEQUAL para enumerar todos os registros com um valor igual. O dwValue e o wNumVals Os parâmetros são ignorados.
CEDB_SEEK_VALUESMALLER
Procura com versões anteriores em direção a iniciar da classificar até localizar o primeiro valor que não é igual ao valor especificado. Sempre procura com versões anteriores, regardless of ordem classificar. Ordem crescente, isso localiza o maior valor menor do que o valor especificado. Em ordem decrescente, isso localiza o menor valor maior do que o valor especificado.
Se nenhum dos registros anteriores tiver um valor que atenda aos critérios pesquisa, o ponteiro buscar for deixado no final de banco de dados e a função retorna zero. O dwValue parâmetro é um ponteiro para uma matriz de estruturas CEPROPVAL, e wNumVals é o número de CEPROPVAL Estruturas de matriz.
CEDB_SEEK_VALUESMALLEROREQUAL
Semelhante a CEDB_SEEK_VALUESMALLER, mas esse tipo também correspondências valores iguais ao valor especificado.
- CEDB_SEEK_VALUEFIRSTEQUAL
- dwValue
[no] Valor a ser usado para a operação de busca. O significado deste parâmetro depende de como o valor de dwSeekType.
wNumVals
[no] Número de CEPROPVAL Estruturas fornecidas no dwValue. Esse valor é ignorado, a menos que dwSeekType está definido como do seguinte:- CEDB_SEEK_VALUESMALLER
- CEDB_SEEK_VALUESMALLEROREQUAL
- CEDB_SEEK_VALUEFIRSTEQUAL
- CEDB_SEEK_VALUEGREATER
- CEDB_SEEK_VALUEGREATEROREQUAL
- lpdwIndex
[out] Ponteiro para uma variável que recebe o índice do registro que foi encontrado. Este parâmetro pode ser definido como NULL.
Return Value
O OID do registro em que termina a busca indica sucesso. Zero indica falha. Para informações de erro estendidas get, chamar GetLastError. A seguinte tabela mostra os valores possíveis.
Return valor | Descrição |
---|---|
ERROR_INVALID_HANDLE |
O hDatabase parâmetro for definido como NULL ou igual a INVALID_HANDLE_VALUE. |
ERROR_INVALID_PARAMETER |
Um ou mais ou os parâmetros são inválido. |
ERROR_KEY_DELETED |
CEDB_SEEK_CEOID é definida, e o OID especifica uma linha excluída. |
ERROR_NOT_ENOUGH_MEMORY |
Uma tentativa de alocar a memória falhou. |
ERROR_SEEK |
A operação de busca não localizar a linha especificada. |
ERROR_SHARING_VIOLATION |
Outro segmento tem o banco de dados bloqueado. |
Remarks
O ERROR_INVALID_PARAMETER é retornado nas situações mostradas a seguinte tabela.
Parâmetro | Problemas |
---|---|
dwSeekType |
|
dwValue |
|
wNumVals |
Este parâmetro é usado e é maior do que o número de propriedades na atual ordem classificar. |
lpdwIndex |
Este parâmetro não está definido para NULL, e o banco de dados foi aberto sem uma ordem classificar. Isso também ocorre se uma ordem classificar existe que faz não suporte acessar posicional. |
Essa função sempre usa a ordem classificar que foi especificado na chamar a função de CeOpenDatabaseInSession (EDB). Se o sinalizador CEDB_AUTOINCREMENT foi especificado, um buscar automática de uma posição do atual posição é feita com cada operação de leitura. Se uma pesquisa falhar, o ponteiro registro retornará para o mesmo registro como antes de operação buscar.
Uma busca é geralmente executada em um valor da propriedade classificada. Após criar e abrir o banco de dados, chamadas subseqüentes para esta função usar a ordem classificar que foi especificado na pSort parâmetro do chamar para o CeOpenDatabaseInSession função.
Se nenhuma ordem classificar, ou um sem acessar posicional, for especificado quando abrir o banco de dados, apenas o seguinte buscar opções são com suporte:
- CEDB_SEEK_CEOID
- CEDB_SEEK_BEGINNING
- CEDB_SEEK_CURRENT
- CEDB_SEEK_END
Para usar valores negativos com CEDB_SEEK_CURRENT, dwValue Pode ser CAST para um long assinado. Isso altera o intervalo eficaz em índices de registro de 32 bits para BITS 31.
Quando uma lista de CEPROPVAL Estruturas é exigido, a Propid parâmetros devem ser definidos como os valores propid a ordem de classificação especificado na CeOpenDatabaseInSession função.
Usando o CeWriteRecordProps (EDB) função em conjunto com essa função pode resultar em comportamento inesperado buscar. Para obter mais informações, consulte o tópico de referência CeWriteRecordProps.
Em geral, não é possível buscar junção opções com uma declaração ou. A exceção é CEDB_SEEK_PREFIX, que deve ser associado com uma declaração ou para outro válido tipo buscar.
Embora edb permite que você escrever um NULL valor para uma propriedade, ela não é possível buscar para NULL valores.
As diferenças entre essa função e o equivalente CEDB é a seguinte função:
- EDB apresenta os novos tipos buscar mostrados a seguinte tabela.
Tipo | Descrição |
---|---|
CEDB_SEEK_PREFIX |
Em Edb, um prefixo pode ser usado ao executar buscas em seqüência de caracteres ou tipos dados blob. |
CEDB_SEEK_VALUEGREATEROREQUAL |
Em CEDB, CEDB_SEEK_VALUEGREATER procura para o primeiro valor maior ou igual ao valor passado. Para atingir esse comportamento em Edb, CEDB_SEEK_VALUEGREATEROREQUAL deve ser usado. Para o tipo de busca CEDB_SEEK_VALUEGREATER, edb procura para o primeiro valor maior do que o valor passado. |
CEDB_SEEK_VALUESMALLEROREQUAL |
Em CEDB, CEDB_SEEK_VALUESMALLER procura para o primeiro valor menor ou igual ao valor passado. Para atingir esse comportamento em Edb, CEDB_SEEK_VALUESMALLEROREQUAL deve ser usado. Para o tipo de busca CEDB_SEEK_VALUESMALLER, edb procura para o primeiro valor menor do que o valor passado. |
- EDB suporta retornando um posição do índice se o tipo de busca é CEDB_SEEK_CEOID, mas somente se a ordem classificar permite acessar posicional.
- Em Edb, procura são com suporte se o banco de dados é aberto sem uma ordem classificar. Isso não é possível em CEDB porque CEDB seleciona uma ordem classificar usar como padrão quando o banco de dados é aberto.
- EDB retorna códigos de erro diferentes para GetLastError Quando ocorre uma falha. Esses códigos de erro são mais descritivos daquelas para CEDB. De exemplo, quando não existem mais linhas a ser localizado, edb retorna ERROR_NO_MORE_ITEMS, enquanto CEDB retorna o genérico erro do ERROR_SEEK.
- Ao trabalhar com CEDB, passando um não-NULL valor para lpdwIndex Faz com que o chamar seja mais lento e deve ser evitado. Em Edb, NULL e não-NULL os valores são igualmente eficientes.
- Em CEDB, você deve transmitir um valor para dwValue Ao usar CEDB_SEEK_VALUENEXTEQUAL. EDB não requer um valor, e se um for fornecido, edb ignora-lo.
Requirements
Header | windbase.h |
Library | coredll.lib |
Windows Embedded CE | Windows CE 5.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
EDB Functions
CeOpenDatabaseInSession (EDB)
CeWriteRecordProps (EDB)