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: