Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

...

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

  • 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 :

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

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

Code Block
languagedelphi
uses
  // units necessárias para manipulação de dados oriundos de banco de dados e
  // suas tabelas
  DB, DbClient;

var
  cds// declarando : TClientDataSet;    
begin
  cds := TClientDataSet.Create(nil);
  try              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',              
                                '?',  'MAX(U_REGPESSOAS_ID)',
'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
    ['?', '1:s', 'U_REGPESSOAS',              
                                   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:

Code Block
languagepas
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