Acesso ao servidor, utilizando o 'dmConexao3c'

A variável dmConexao3c representa o objeto que faz a comunicação do VsScripter com o servidor de aplicação ele é disponibilizado de forma muito comum entre os eventos de script.

O objeto pode ser utilizado para buscar dados do banco de dados, assim, como gravar informações, criar estrutura de manutenções entre outros.

Todas as chamadas utilizadas por esse objeto são auditados conforme as configurações definidas de auditoria para as demais telas da aplicação. Vale lembrar aqui a importância de ter configurado corretamente a auditoria e a configuração de cada usuário, a fim de ter controle sobre qualquer transação realizada via VsScripter.

Alguns dos métodos do “dmConexao3c” que podem ser utilizados:

  • QueryPegaCampo

Busca determinando valor de um campo no banco de dados. Seu retorno é variant, sendo assim esse valor pode ser uma data, valor numérico ou texto que deve ser tratado em seu retorno.

  • QueryPegaData

Busca no banco de dados um conjunto de dados conforme consulta SQL e parâmetros passados e retorna

  • GetDspEdicao

Obtém no Servidor um TDataSetProvider com nome formado por dsp+NOMETABELA para ser utilizado na edição de TODOS os campos de UM registro da tabela, tendo como parâmetros a chave primária da tabela.

  • GetDspEdicaoParcialComChaves

Obtém no Servidor um TDataSetProvider com nome formado por dspParcial+NOMETABELA
para ser utilizado na edição de ALGUNS CAMPOS de UM registro da tabela,
tendo como parâmetros a chave primária da tabela.

Segue uma lista de exemplos de utilização de chamadas que podem ser realizadas com o dmConexao3c.

Buscar um valor específico em uma tabela e iniciar manutenção de registros no banco de dados e salvar as informações:

uses // units necessárias para manipulação de dados oriundos de banco de dados e // suas tabelas DB, DbClient; var // declarando um objeto chamado cds, do tipo Client Data Set, o qual será utilizado // para manipulação dos dados oriundos de uma tabela cds : TClientDataSet; begin // criação do objeto cds cds := TClientDataSet.Create(nil); // iniciando o ciclo de busca e alteração de dados try // preparando o objeto cds para receber um TDataSetProvider com nome formado por // dsp+NOMETABELA e abertura automática dmConexao3c.GetDspEdicao(cds, 'U_REGPESSOAS', true); // abre o cds cds.Open; // coloca o cds em modo de inserção de dados cds.Append; // busca um valor válido e ordenado que será o índice da tabela, armazenado em // U_REGPESSOAS_ID cds.FieldByName('U_REGPESSOAS_ID').value := dmConexao3c.QueryPegaCampo('SEL_PADRAO_COM_WHERE', 'MAX(U_REGPESSOAS_ID)', ['?', '1:s', 'U_REGPESSOAS', '?', '2:s', '0=0'], [ftString, ftString], [20, 100])+1; // atribui ao campo NOME o valor do campo NOME do formulário FRhPessoa cds.FieldByName('NOME').value := FRhPessoa.ValorNaTela('NOME'); // atribui ao campo IDADE o valor 10 cds.FieldByName('IDADE').value := 10; // Indica ao cds que os dados podem ser gravados cds.post; // indica ao servidor de aplicações para aplicar as alterações feitas dmConexao3c.CDSApplyUpdates([cds]); // finalizando o ciclo de busca e alteração de dados finally // destruindo o objeto cds, para evitar que sejam mantidos dados "perdidos" na memória cds.Free; end; end;

 

Buscar um conjunto de valores e associar a propriedade “Data” do TClientDataSet:

 

uses // units necessárias para manipulação de dados oriundos de banco de dados e // suas tabelas DB, DbClient; const // declaração da constante com o nome do arquivo TXT onde os dados // serão gravados nomeArquivo = '.\exportaDados.txt'; var // declarando um objeto chamado cds, do tipo Client Data Set, o qual será // utilizado para manipulação dos dados oriundos de uma tabela cds: TClientDataSet; // declaração do objeto dados, do tipo TStringList, onde os dados a serem // exportados serão armazenados no formato do arquivo de dados TXT dados: TStringList; // declaração da variável a, do tipo inteira para manipulação de // estrutura de repetição a: integer; begin // criando o objeto dados do tipo TStringList dados := TStringList.Create(); // iniciando o ciclo de exportação dos dados try // criando o client data set cds que receberá todo o conteúdo // da tabela cds := TClientDataSet.Create(nil); // carregando os dados da tabela a ser importada para o cds. // o primeiro parâmetro é o nome da pesquisa personalizada // o segundo parâmetro diz quais campos serão carregados. Neste caso, todos. // o terceiro parâmetro diz qual é o nome da tabela a ser pesquisada e // a comparação a ser feita pela cláusula WHERE. Neste caso, se 0 = 0 // que retorna verdadeiro. Uma "forma" de trazer todos os dados da tabela // o quarto parâmetro descreve o tipo de dados de cada campo // carregado na pesquisa. Já o quinto parâmetro especifica o // tamanho desses campos individualmente. cds.Data := dmConexao3c.QueryPegaData('SEL_PESQUISAFILTRO', '*', ['?', '1:s', 'U_IMPORTATXT', '?', '2:s', '0=0'], [ftString, ftString, ftString, ftString, ftString], [45, 100, 11, 14, 11]); // iniciando estrutura de repetição que fará a exportação de todos os dados // da tabela U_IMPORTATXT for a:=0 to cds.RecordCount - 1 do begin // montando a estrutura do arquivo de destino dos dados num // objeto TStringList. Cada registro será um item na lista. // o caracter separador é o ";" dados.Add(cds.FieldByName('NOME').value + ';' + cds.FieldByName('EMAIL').value + ';' + cds.FieldByName('CELULAR').value + ';' + cds.FieldByName('DOCUMENTO1').value + ';' + cds.FieldByName('DOCUMENTO2').value + ';'); // carregando o próximo registro cds.Next; end; // finalizando o ciclo de exportação dos dados Finally // salvando dados no arquivo TXT, se a lista 'dados' não estiver vazia if dados.count > 0 then dados.SaveToFile(nomeArquivo) else showMessage('Lista não possui dados a serem exportados.'); cds.Free; end;

 

Para facilitar ainda mais o entendimento, foi produzido um vídeo sobre este conteúdo. Para acessá-lo, utilize o link abaixo:

Treinamento VsScripter - 9 - Pesquisa em Banco de Dados