Compartilhar via


CeSeekDatabaseEx (EDB)

Windows Mobile SupportedWindows Embedded CE Supported

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

  • 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.

  • 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

  • Ele não está definido para um válido valor tipo buscar.
  • Ele é definido como CEDB_SEEK_VALUENEXTEQUAL e for especificado sem um chamar anterior para esta função usando CEDB_SEEK_VALUEFIRSTEQUAL. Esses buscar tipos devem ser correspondência e usados juntos.
  • Se a propriedade inclui CEDB_SEEK_PREFIX, dwSeekType Também deve ser especificado com um do seguinte:
    • CEDB_SEEK_VALUEFIRSTEQUAL
    • CEDB_SEEK_VALUESMALLER
    • CEDB_SEEK_VALUEGREATER
    • CEDB_SEEK_VALUESMALLEROREQUAL
    • CEDB_SEEK_VALUEGREATEROREQUAL
  • O banco de dados foi aberto sem uma ordem especificada classificar, e dwSeekType é um valor Other Than o seguinte:
    • CEDB_SEEK_CEOID
    • CEDB_SEEK_BEGINNING
    • CEDB_SEEK_CURRENT
    • CEDB_SEEK_END
    Todos os outros tipos buscar exigem o uso de uma ordem classificar.

dwValue

  • É NULL e o tipo especificado buscar requer um valor para esse parâmetro.
  • Se dwValue Especifica uma matriz de CEPROPVAL estruturas, a seguinte condições são verificadas:
    • A ordem da propriedade identificações na matriz deve coincidir com a ordem das propriedades na atual ordem classificar do banco de dados.
    • O CEVT_xxx tipo armazenado em uma propriedade identificação deve ser um válido tipo de dados CEDB e deve corresponder à tipo de dados do correspondente propriedade na atual ordem classificar.

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)

Concepts

EDB Schema Support
Comparing EDB with Other Databases