O conjunto de registros: Como os conjuntos de registros selecionar registros (ODBC)

Este tópico se aplica às classes MFC ODBC.

Este tópico explica:

  • Sua função e suas opções na seleção de registros.

  • Como um conjunto de registros constrói sua declaração de SQL e seleciona os registros.

  • O que você pode fazer para personalizar a seleção.

Conjuntos de registros selecionar registros de uma fonte de dados por meio de um driver ODBC através do envio de instruções de SQL para o driver. O SQL enviado depende de como você pode criar e abre sua classe de conjunto de registros.

As opções de seleção de registros

A tabela a seguir mostra as opções de seleção de registros.

Como e quando você pode afetar um conjunto de registros.

Quando você

Você pode

Declara sua classe de conjunto de registros com o Add Class Assistente

Especifica qual tabela para selecionar.

Especifique quais colunas incluir.

Consulte a adição de um consumidor ODBC do MFC.

Conclua sua implementação de classe do conjunto de registros

Substituir a funções de membro como OnSetOptions (Avançado) para definir opções específicas do aplicativo ou para alterar os padrões. Especifique os membros de dados do parâmetro se desejar que um conjunto de registros com parâmetros.

Construir um objeto recordset (antes de chamar Abrir)

Especificar um critério de pesquisa (possivelmente composto) para uso em um onde cláusula que filtra os registros. Consulte Recordset: Filtragem de registros (ODBC).

Especificar uma ordem de classificação para uso em um ORDER BY cláusula que classifica os registros. Consulte Recordset: Classificar registros (ODBC).

Especifique os valores de parâmetro para quaisquer parâmetros que você adicionou à classe. Consulte Recordset: Parametrização de um conjunto de registros (ODBC).

Executar a consulta do conjunto de registros chamando Abrir

Especifica uma seqüência SQL personalizada para substituir a seqüência SQL padrão configurada pelo assistente. Consulte CRecordset::Open na referência da biblioteca de classe e SQL: Personalizando a instrução de SQL do Recordset (ODBC).

Chame Requery para repetir a consulta de conjunto de registros com os valores mais recentes na fonte de dados

Especifique os novos parâmetros, filtrar ou classificar. Consulte Recordset: Repetindo a consulta de um conjunto de registros (ODBC).

Como um conjunto de registros constrói sua declaração de SQL

Quando você chamar um objeto de conjunto de registros Abrir a função de membro, Abrir constrói uma instrução SQL usando alguns ou todos os componentes a seguintes:

  • O lpszSQL parâmetro passado para Abrir. Se não Nulo, este parâmetro especifica uma seqüência SQL personalizada ou parte de um. O framework analisa a seqüência de caracteres. Se a seqüência for um SQL Selecionar instrução ou ODBC chamada instrução, a estrutura usa a seqüência de caracteres como declaração de SQL do conjunto de registros. Se a seqüência de caracteres não começa com "SELECT" ou "{chamada", a estrutura usa o que é fornecido para construir um SQL FROM cláusula.

  • A seqüência de caracteres retornada por GetDefaultSQL. Por padrão, esse é o nome da tabela que você especificou para o conjunto de registros no assistente, mas você pode alterar a função retorna. As chamadas do framework GetDefaultSQL — se a seqüência de caracteres não começa com "SELECT" ou "{chamada", ele é considerado um nome de tabela é usado para construir uma seqüência de caracteres SQL.

  • Os campo dados membros do conjunto de registros, que são vinculados a colunas específicas da tabela. O framework vincula colunas de registros para os endereços desses membros, usando-os como buffers. A estrutura determina a correlação de membros de dados do campo para as colunas da tabela da RFX ou chamadas de função de RFX de massa no conjunto de registros DoFieldExchange ou DoBulkFieldExchange a função de membro.

  • O filtro do conjunto de registros, se houver um, contidas no m_strFilter membro de dados. A estrutura usa essa cadeia de caracteres para construir um SQL onde cláusula.

  • O classificação pedir para o conjunto de registros, se houver, contido na m_strSort membro de dados. A estrutura usa essa cadeia de caracteres para construir um SQL ORDER BY cláusula.

    Dica

    Para usar o SQL GROUP BY cláusula (e possivelmente o HAVING cláusula), as cláusulas de acrescentar ao final da sua cadeia de caracteres de filtro.

  • Os valores de qualquer membros de dados do parâmetro você pode especificar para a classe. Definir valores de parâmetro, antes de chamar Abrir ou Requery. O framework vincula os valores de parâmetro para "?" espaços reservados na seqüência de caracteres SQL. Em tempo de compilação, você pode especificar a seqüência de caracteres com espaços reservados. Em tempo de execução, o framework preenche os detalhes com base nos valores de parâmetro que você passar.

Abrir constrói uma SQL Selecionar a instrução desses ingredientes. Consulte Personalizando a seleção para obter detalhes sobre como a estrutura usa os ingredientes.

Depois de construir a instrução Abrir envia a SQL para o ODBC Driver Manager (e a biblioteca de cursores ODBC), se ele estiver na memória que envia para o driver ODBC para o DBMS específico. O driver se comunica com o DBMS para executar a seleção na fonte de dados e acessa o primeiro registro. O framework carrega o registro para os membros de dados de campo do conjunto de registros.

Você pode usar uma combinação dessas técnicas para abrir tabelas e construir uma consulta baseada em um associação de várias tabelas. Personalização adicional, você pode chamar consultas predefinidas (procedimentos armazenados), selecione colunas não conhecidas no tempo de design de tabela e ligar -los para os campos de conjunto de registros ou você podem executar a maioria das tarefas de acesso a dados. Você não pode realizar Personalizando conjuntos de registros de tarefas podem ser realizadas por chamar funções da API do ODBC ou diretamente, executando instruções de SQL com CDatabase::.

Personalizando a seleção

Além de fornecer um filtro, uma ordem de classificação ou parâmetros, você pode tomar as ações a seguir para personalizar a seleção do recordset:

  • Passe uma seqüência personalizada de SQL em lpszSQL ao chamar Abrir do conjunto de registros. Qualquer coisa que você passar em lpsqSQL tem precedência sobre o que o GetDefaultSQL retorna a função de membro.

    Para obter mais informações, consulte SQL: Personalizando a instrução de SQL (ODBC do Recordset), que descreve os tipos de declarações de SQL (ou instruções parciais), você pode passar para Abrir e o que faz a estrutura com eles.

    ObservaçãoObservação

    Se personalizado string você pass não começa com "SELECT" ou "{chamada", o MFC assume que ele contém um nome de tabela. Isso também se aplica para o próximo item com marcadores.

  • Alterar a seqüência de caracteres que o assistente grava no seu conjunto de registros GetDefaultSQL função de membro. Edite o código da função para alterar a ele retorna. Por padrão, o assistente cria um GetDefaultSQL função que retorna um nome de tabela única.

    Você pode ter GetDefaultSQL retornar qualquer um dos itens que você pode passar o lpszSQL parâmetro para Abrir. Se você não passar uma seqüência de caracteres personalizada do SQL em lpszSQL, a estrutura usa a seqüência de caracteres que GetDefaultSQL retorna. No mínimo, GetDefaultSQL deve retornar um nome de tabela única. Mas você pode ter retornar vários nomes de tabela, uma completa Selecionar instrução, ODBC chamada instrução e assim por diante. Para obter uma lista dos quais você pode passar para lpszSQL — ou tem GetDefaultSQL retornar — consulte SQL: Personalizando a instrução de SQL do Recordset (ODBC).

    Se você estiver executando uma associação de duas ou mais tabelas, reescrever GetDefaultSQL para personalizar a lista de tabela usada na SQL FROM cláusula. Para obter mais informações, consulte Recordset: Executar uma associação (ODBC).

  • Vincule manualmente os membros de dados de campo adicional, talvez com base em informações que você obter sobre o esquema de fonte de dados em tempo de execução. Adicionar membros de dados do campo para a classe do conjunto de registros, RFX ou chamadas de função de RFX de massa para que eles o DoFieldExchange ou DoBulkFieldExchange a função de membro e inicializações de membros de dados no construtor da classe. Para obter mais informações, consulte Recordset: Vinculando dinamicamente a colunas de dados (ODBC).

  • Substituir a funções de membro do conjunto de registros, como OnSetOptions, para definir opções específicas do aplicativo ou para substituir os padrões.

Se você deseja basear o conjunto de registros em uma instrução de SQL complexa, você precisará usar alguma combinação dessas técnicas de personalização. Por exemplo, talvez você queira usar as cláusulas SQL e palavras-chave não aceitas diretamente por conjuntos de registros ou talvez você estão ingressando em várias tabelas.

Consulte também

Conceitos

O conjunto de registros (ODBC)

O conjunto de registros: Como os conjuntos de registros atualizam registros (ODBC)

Noções básicas ODBC

SQL

O conjunto de registros: Bloqueio de registros (ODBC)