Partilhar via


Comentários sobre HelloData

O aplicativo HelloData percorre as operações básicas de um aplicativo ADO típico: obtenção, análise, edição e atualização de dados. Ao iniciar o aplicativo, clique no primeiro botão Obter Dados. Isso executará a sub-rotina GetData.

ObterDados

GetData coloca uma cadeia de conexão válida em uma variável no nível do módulo, m_sConnStr. Para obter mais informações sobre cadeias de conexão, consulte Criando a cadeia de conexão.

Atribua um manipulador de erros usando uma instrução do Do Visual Basic OnError. Para obter mais informações sobre o tratamento de erros no ADO, consulte Tratamento de Erros. Um novo objeto Connection é criado e a propriedade CursorLocation é definida como adUseClient porque o exemplo HelloData cria um conjunto de registros desconectado. Isso significa que, assim que os dados forem obtidos da fonte de dados, a conexão física com a fonte de dados será interrompida, mas você ainda poderá trabalhar com os dados armazenados em cache localmente em seu recordset objeto.

Depois que a conexão for aberta, atribua uma cadeia de caracteres SQL a uma variável (sSQL). Em seguida, crie uma instância de um novo objeto Recordset, m_oRecordset1. Na próxima linha de código, abra o Conjunto de Registros sobre a Conexãoexistente, passando sSQL como a fonte do Conjunto de Registros . Você ajuda o ADO a determinar que a cadeia de caracteres SQL, que você passou como fonte para o Recordset , é uma definição textual de um comando, especificando adCmdText como o argumento final para o método Open do Recordset . Esta linha também define o LockType e o CursorType associados ao Recordset .

A próxima linha de código define como igual a propriedade MarshalOptions a adMarshalModifiedOnly. MarshalOptions indica quais registros devem ser empacotados para a camada intermediária (ou servidor web). Para obter mais informações sobre marshaling, consulte a documentação COM. Quando você usa adMarshalModifiedOnly com um cursor do lado do cliente (CursorLocation = adUseClient), somente os registros modificados no cliente são gravados novamente na camada intermediária. Ao definir MarshalOptions para adMarshalModifiedOnly, o desempenho pode ser melhorado porque menos linhas são processadas.

Em seguida, desconecte o Recordset definindo sua propriedade ActiveConnection igual a Nothing. Para obter mais informações, consulte a seção "Desconectando e Reconectando o Conjunto de Registros" em Atualizando e Persistindo Dados.

Feche a conexão com a fonte de dados e destrua o objeto Connection existente. Isso libera os recursos que ele consumiu.

A etapa final é definir o Recordset como a Fonte de Dados para o controle Microsoft DataGrid no formulário, para que os dados do Recordset possam ser facilmente exibidos no formulário.

Clique no segundo botão, Examinar Dados. Isso executa a sub-rotina ExamineData.

ExaminarDados

ExamineData usa vários métodos e propriedades do objeto Recordset para exibir informações sobre os dados no Recordset. Ele informa o número de registros usando a propriedade RecordCount . Ele percorre o Recordset e imprime o valor da propriedade AbsolutePosition na caixa de texto exibida no formulário. Além disso, no loop, o valor da propriedade Bookmark para o terceiro registro é colocado em uma variável variante, vBookmark, para uso posterior.

A rotina navega diretamente de volta para o terceiro registro usando a variável de marcador armazenada anteriormente. A rotina chama a sub-rotina WalkFields, que percorre a coleção Campos do Recordset e exibe detalhes sobre cada Campo na coleção.

Por fim, ExamineData usa a propriedade filtro de do conjunto de registros para exibir somente os registros com um CategoryId igual a 2. O resultado da aplicação desse filtro é imediatamente visível na grade de exibição no formulário.

Para obter mais informações sobre a funcionalidade mostrada na sub-rotina ExamineData, consulte Examinando Dados.

Em seguida, clique no terceiro botão Editar Dados. Isso executará a sub-rotina EditData.

Editar Dados

Quando o código entra na sub-rotina EditData, o Recordset ainda está filtrado em CategoryId igual a 2, de modo que somente os itens que atendem aos critérios de filtro fiquem visíveis. Primeiro, ele percorre o conjunto de registros e aumenta o preço de cada item visível no conjunto de registros em 10%. O valor do campo Price é alterado definindo a propriedade Value para esse campo igual a um valor novo e válido.

Lembre-se de que o Recordset está desconectado da fonte de dados. As alterações feitas no EditData são feitas apenas na cópia localmente armazenada em cache dos dados. Para obter mais informações, consulte Edição de Dados.

As alterações não serão feitas na fonte de dados até você clicar no quarto botão, Atualizar Dados. Isso executará a sub-rotina UpdateData.

AtualizarDados

UpdateData primeiro remove o filtro que foi aplicado ao conjunto de registros . O código remove e redefine m_oRecordset1 como DataSource do Microsoft Bound DataGrid no formulário para que o conjunto de registros não filtrado apareça na grade.

Em seguida, o código verifica se você pode se mover para trás no conjunto de registros usando o método Supports com o argumento adMovePrevious.

A rotina passa para o primeiro registro usando o método MoveFirst e exibe os valores originais e atuais do campo usando as propriedades OriginalValue e Value do objeto field. Essas propriedades, juntamente com a propriedade UnderlyingValue (não usada aqui), são discutidas em Atualização e Persistência de Dados.

Em seguida, um novo objeto Connection é criado e usado para restabelecer uma conexão com a fonte de dados. Reconecte o Recordset à fonte de dados definindo o novo Conexão como ActiveConnection para o conjunto de registros. Para enviar as atualizações para o servidor, o código chama UpdateBatch no Recordset.

Se a atualização em lote for bem-sucedida, uma variável de sinalizador no nível do módulo, m_flgPriceUpdated, será definida como True. Isso lembrará você mais tarde de limpar todas as alterações que foram feitas no banco de dados.

Por fim, o código volta para o primeiro registro no Recordset e exibe os valores originais e atuais. Os valores são os mesmos após a chamada para UpdateBatch .

Para obter informações detalhadas sobre como atualizar dados, incluindo o que fazer quando os dados no servidor forem alterados enquanto o do Conjunto de Registros estiver desconectado, consulte Atualizando e persistindode dados.

Descarregar_Formulário

A sub-rotina Form_Unload é importante por vários motivos. Primeiro, como este é um aplicativo de exemplo, Form_Unload limpa as alterações feitas no banco de dados antes da saída do aplicativo. Em segundo lugar, o código mostra como um comando pode ser executado diretamente a partir de um objeto Connection usando o método Execute. Por fim, ele mostra um exemplo de execução de uma consulta que não retorna linha (uma consulta UPDATE) na fonte de dados.