Conjunto de registros: como conjuntos de registros selecionam registros (ODBC)
Este tópico se aplica às classes ODBC do MFC.
Este tópico explica:
Sua função e suas opções em selecionar registros.
Como um conjunto de registros constrói a instrução SQL e selecionar registros.
O que você pode fazer para personalizar a seleção.
Os conjuntos de registros selecione registros de uma fonte de dados por meio do driver ODBC enviar instruções SQL para o driver. SQL enviado depende de como você cria e abre sua classe do conjunto de registros.
As opções em selecionar registros
A tabela a seguir mostra as opções em selecionar registros.
Como e quando você pode afetar um conjunto de registros
Quando você |
Você pode |
---|---|
Declarar a sua classe do conjunto de registros com o assistente de Adicionar Classe |
Especifique a tabela da qual selecionar. Especifique quais colunas a serem incluídas. Consulte Adicionando um consumidor de MFC ODBC. |
Concluir sua implementação da classe do conjunto de registros |
Substituir funções de membro como OnSetOptions (avançado) para definir opções específicas de aplicativo ou para alterar as opções. Especificar membros de dados do parâmetro se você desejar um conjunto de registros com parâmetros. |
Construir um objeto do conjunto de registros (antes de chamar Abrir) |
Especificar um critério de pesquisa (possivelmente composto) para uso em uma cláusula de WHERE que filtra os registros. Consulte Conjunto de registros: Filtrando registros (ODBC). Especificar uma ordem de classificação para uso em uma cláusula ORDER BY que classifica os registros. Consulte Conjunto de registros: Classificando registros (ODBC). Especificar valores de parâmetro para todos os parâmetros que você adicionou a classe. Consulte Conjunto de registros: A parametrização de um conjunto de registros (ODBC). |
Execute a consulta do conjunto de registros chamando Abrir |
Especificar uma cadeia de caracteres personalizado do SQL para substituir a cadeia de caracteres padrão do SQL configurada pelo assistente. Consulte CRecordset::Open na Referência de biblioteca de classe e em SQL: Personalizando a instrução SQL do conjunto de registros (ODBC). |
Chame Requery que você consulte novamente o conjunto de registros com os valores mais recentes na fonte de dados |
Especificar novos parâmetros, filtrá-los, ou classificar. Consulte Conjunto de registros: Consultar um conjunto de registros (ODBC). |
Como um conjunto de registros constrói a instrução SQL
Quando você chama a função de membro de Abrir de um objeto do conjunto de registros, Abrir constrói uma instrução SQL usando alguns ou todos os ingredientes a seguir:
O parâmetro de lpszSQL passado a Abrir. Se não nulo, esse parâmetro especifica uma cadeia de caracteres SQL ou uma parte personalizado de um. A estrutura analisa a cadeia de caracteres. Se a cadeia de caracteres é uma instrução SQL SELECIONAR ou uma instrução ODBC CALL , a estrutura usa a cadeia de caracteres como a instrução SQL do conjunto de registros. Se a cadeia de caracteres não começa com “SELECT” ou “o” {CALL, a estrutura usa o que é fornecido para construir uma cláusula do SQL FROM .
A cadeia de caracteres retornada por GetDefaultSQL. Por padrão, esse é o nome da tabela especificada para o conjunto de registros no assistente, mas você pode alterar o que a função retorna. A estrutura chama GetDefaultSQL — se a cadeia de caracteres não começa com “SELECT” ou “{CALL”, seja um nome de tabela, que é usado para construir uma cadeia de caracteres SQL.
Os membros de dados do campo do conjunto de registros, que devem ser associados às colunas específicas da tabela. Associa colunas da estrutura registram aos endereços desses membros, usando como os buffers. A estrutura determina a correlação de membros de dados do campo as colunas de RFX ou chamadas de função em massa de RFX na função de membro de DoFieldExchange ou de DoBulkFieldExchange conjunto de registros.
filtro para o conjunto de registros, se houver, contido no membro de dados de m_strFilter . A estrutura usa essa cadeia de caracteres para construir uma cláusula do SQL WHERE .
A ordem de tipo para o conjunto de registros, se houver, contido no membro de dados de m_strSort . A estrutura usa essa cadeia de caracteres para construir uma cláusula ORDER BY do SQL.
Dica
Para usar a cláusula do SQL AGRUPAR POR (e possivelmente a cláusula de HAVING ), acrescente as cláusulas ao final da cadeia de caracteres do filtro.
Os valores de qualquer membros de dados do parâmetro que você especifique da classe. Você valores de parâmetro definidos imediatamente antes de chamar Abrir ou Requery. A estrutura associa os valores de parâmetro a “?” os espaços reservados na cadeia de caracteres SQL. Em tempo de compilação, você especifica a cadeia de caracteres com os espaços reservados. Em tempo de execução, a estrutura preenche os detalhes com base nos valores de parâmetro que você passa.
Abrir constrói uma instrução SQL SELECIONAR desses ingredientes. Consulte Personalizando a seleção para obter detalhes sobre como a estrutura usa os ingredientes.
Depois de criado, Abrir envia a instrução SQL ao gerenciador de driver ODBC (e a biblioteca de cursores ODBC se estiver na memória), que a envia para o driver ODBC para o DBMS específico. O driver se comunica com o DBMS para fazer a seleção na fonte de dados e busca-se o primeiro registro. A estrutura carrega o registro nos membros de dados do campo do conjunto de registros.
Você pode usar uma combinação dessas técnicas abrir tabelas e construir uma consulta baseada em junção de várias tabelas. Com personalizações adicionais, você pode chamar consultas predefinidas (procedimentos armazenados), selecionar colunas de tabela não conhecidas em tempo de design e associar elas os campos ou ao conjunto de registros pode executar a maioria das outras tarefas de acesso a dados. As tarefas que você não pode realizar personalizando conjuntos de registros ainda podem ser realizadas por funções de ODBC API de chamada ou instruções SQL executar diretamente com CDatabase::ExecuteSQL.
Personalizando a seleção
Além de fornecer um filtro, uma ordem de classificação, ou parâmetros, você pode executar as seguintes ações personalizar a seleção do conjunto de registros:
Transmitir uma cadeia de caracteres personalizado do SQL em lpszSQL quando você chama Abrir para o conjunto de registros. Qualquer coisa que você passa o lpsqSQL tem precedência sobre o que a função de membro de GetDefaultSQL retorna.
Para obter mais informações, consulte SQL: Personalizando a instrução SQL do conjunto de registros (ODBC), que descrevem os tipos de instruções SQL (ou de instruções parciais) é possível passar a Abrir e o que a estrutura faz com eles.
Dica
Se a cadeia de caracteres personalizado que você passa não começa com “SELECT” ou “o” {CALL, MFC o assume contém um nome de tabela.Isso também se aplica ao item com marcadores a seguir.
Altere a cadeia de caracteres que as gravações do assistente na função de membro de GetDefaultSQL do conjunto de registros. Edite o código de função para alterar o que retorna. Por padrão, o assistente grava uma função de GetDefaultSQL que retorna um único nome da tabela.
Você pode ter o retorno de GetDefaultSQL dos itens que você pode transmitir o parâmetro de lpszSQL a Abrir. Se você não envia uma cadeia de caracteres personalizado do SQL em lpszSQL, a estrutura usa a cadeia de caracteres que GetDefaultSQL retorna. Pelo menos, GetDefaultSQL deve retornar um único nome da tabela. Mas você pode solicitar retornar vários nomes de tabela, uma instrução completa de SELECIONAR , uma instrução ODBC CALL , e assim por diante. Para obter uma lista de que você possa transmitir a lpszSQL — ou para ter GetDefaultSQL retornar — consulte SQL: Personalizando a instrução SQL do conjunto de registros (ODBC).
Se você estiver executando uma junção de duas ou mais tabelas, a regravação GetDefaultSQL para personalizar a lista de tabela usado na cláusula do SQL FROM . Para obter mais informações, consulte Conjunto de registros: Ao executar uma junção (ODBC).
Manualmente membros de dados adicionais do campo de associação, talvez você obtiver com base nas informações sobre o esquema da fonte de dados em tempo de execução. Você adiciona membros de dados do campo para a classe do conjunto de registros, o RFX ou as chamadas de função em massa de RFX para eles à função de membro de DoFieldExchange ou de DoBulkFieldExchange , e às inicializações de membros de dados no construtor da classe. Para obter mais informações, consulte Conjunto de registros: Colunas de dados dinamicamente associação (ODBC).
Funções de membro do conjunto de registros de substituição, como OnSetOptions, para definir opções específicas do aplicativo ou substituir opções.
Se você quiser basear o conjunto de registros em uma instrução SQL complexas, você precisa usar qualquer combinação dessas técnicas de personalização. Por exemplo, talvez você queira usar cláusulas do SQL e as palavras-chave suporte direto por conjuntos de registros ou talvez você está adicionando várias tabelas.
Consulte também
Conceitos
Conjunto de registros: como conjuntos de registros atualizam registros (ODBC)