4D v14.3Chamar Tabelas e Métodos 4D |
||||||||||
|
4D v14.3
Chamar Tabelas e Métodos 4D
|
Alcance 4D | Objeto Wakanda |
tabela | classe de dados |
seleção atual | coleção de entidades |
registro atual | entidade |
Nota: os métodos 4D também podem ser chamados do lado do cliente pelas fontes de dados (ver mais à frente), neste caso todos os métodos estão disponíveis, e a fonte de dados aplica automaticamente a coleção atual ou a entidade atual dependendo do contexto.
Por exemplo, se realizar uma pesquisa com o método query (ver seção anterior), Wakanda devolve uma coleção de entidades. Pode executar qualquer método de projeto 4D cujo alcance declarado seja "seleção atual".
Os métodos 4D podem ser chamados por código JavaScript de três formas:
var vTot = ds.Emp.raiseSalary(param)) //raiseSalary é uma propriedade de datastore class //o catálogo está fusionado ao modelo ativo var vTot2 = my4DStore.Company.first().capital(param)) //capital é uma propriedade de entidade já que first() devolve uma entidade //utilização do modelo dedicado my4DStore
sources.employee.raiseSalary(param, {onSuccess: function(event) { ... //código a executar quando o método terminou} }))
ds.Employee.raiseSalary(param, // a sintaxe se parece a uma chamada SSJS {onSuccess: function(event) // mas é o código do lado do cliente pelo que deve gerenciar o método de retro chamada da chamada assíncrona { ... //código a executar quando o método 4D termina} }))
A escolha do lugar (servidor ou cliente) e do API depende das necessidades da aplicação e se descreve na documentação de Wakanda.
Da mesma forma que com os métodos estandarte, você pode passar parâmetros durante a chamada, que se recebem na ordem nos parâmetros $1,$2, etc. Da mesma forma, o método pode devolver um resultado na variável $0.
Exemplo: Você quer lhe dar um aumento de 5% aos empregados cujo salário é menor que 1500.
C_REAL($1)
READ WRITE([Empregados])
FIRST RECORD([Empregados])
While(Not(End selection([Empregados])))
[Employees]salary:=[Empregados]salary*$1
SAVE RECORD([Empregados])
NEXT RECORD([Empregados])
End while
UNLOAD RECORD([Empregados])
var emp = ds.Employees.query("salary < :1",1500); // emp contém a coleção de empregados cujo salário é <1500 emp.IncreaseSalary(1.05); /executa o método IncreaseSalary na coleção //Também poderia escrever: //"ds.Employees.query("salary < :1",1500).IncreaseSalary(1.05);
Também pode devolver uma seleção 4D diretamente como uma coleção Wakanda utilizando o comando . Por exemplo:
Ao chamar a um método 4D por meio do link de Wakanda:
Tenha em conta que depois de executar um método via 4D Mobile, o contexto 4D se restabelece:
Deve ter a certeza de que o alcance do método 4D corresponde ao tipo de objeto Wakanda que está chamando, caso contrário o erro "TypeError: 'undefined' is not a function" é devolvido por Wakanda.
Por exemplo, dado o método 4D "getcursel" que contém o seguinte código:
$0:=Records in selection([Table_1])
Dado o método run do lado Wakanda
var tt = ds.Table_1.query("Field_2 = 'a*'").getcursel();
O método query() devolve uma coleção. Se o alcance do método getcursel foi definido como "Registro atual", Wakanda devolve o seguinte erro:
TypeError: 'undefined' is not a function (evaluating 'ds.Table_1.query("Field_2 = 'a*'").getcursel()')".
Produto: 4D
Tema: Chamar Tabelas e Métodos 4D
4D Mobile ( 4D v14 R3)
4D Mobile ( 4D v14.3)
4D Mobile ( 4D v14 R4)
Inherited from : Chamar Tabelas e Métodos 4D ( 4D v14 R2)