Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

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:

https://vimeo.com/636458547/adba41272e

  • No labels