Escolar Documentos
Profissional Documentos
Cultura Documentos
php
Mestre / Detalhe
Neste exemplo será desenvolvido uma aplicação Mestre/Detalhe completa, onde obteremos um formulário de edição dos pedidos de uma compra e também dos itens daquele pedido.
Para construir esta aplicação serão criados dois formulários. O primeiro baseado na tabela orders, que será nossa aplicação Mestre, e o segundo formulário será baseado na tabela orders_details
que fará o papel de aplicação Detalhe.
1. Crie uma nova aplicação do tipo formulário simples baseado na tabela orders.
1 de 6 31/07/2017 12:43
Mestre / Detalhe http://www.scriptcase.com.br/exemplos/tutoriais/form/form38.php
10. Edite as propriedades dos blocos criados de acordo com a imagem exibida abaixo:
11. No menu de aplicação acesse o item Editar Campos e organize os campos de acordo com a tabela abaixo:
Bloco Field
OrderID
CustomerID
EmplyeeID
General Info
OrderDate
RequiredDate
PriceOrder
ShippedDate
ShipAdress
Freight
Ship Info
ShipCity
ShipState
ShipCountry
Order Details
1. Crie uma novo formulário do tipo Grid Editável view baseada na tabela order_details.
2. Gere o código fonte do formulário detalhe. Para isto clique no botão Gerar Código Fonte na barra de ferramentas do ScriptCase.
2 de 6 31/07/2017 12:43
Mestre / Detalhe http://www.scriptcase.com.br/exemplos/tutoriais/form/form38.php
5. Na próxima etapa do wizard faça a ligação relacionando os campos OrderID dos dois formulários. Para finalizar clique no botão Salvar.
Pronto, o formulário Mestre/Detalhe já está criado, mas agora vamos customizar os campos e criar regras de validação para a aplicação.
3 de 6 31/07/2017 12:43
Mestre / Detalhe http://www.scriptcase.com.br/exemplos/tutoriais/form/form38.php
8. Ainda na pasta Campo do menu de aplicação clique sobre o item Novo Campo.
10. Na propriedade Tipo selecione Moeda e nas propriedades Nome e Label informe Total. Em seguida clique no botão Criar.
O primeiro método será utilizado para calcular o valor total da soma de todos os itens de cada pedido.
O segundo método será utilizado para verificar se o item a ser inserido no pedido ainda existe em estoque.
sc_lookup(dataset,"SELECT unitsinstock
FROM products
WHERE productid = {productid}");
O terceiro método será utilizado para atualizar no formulário de Pedido, o valor total da soma de todos os itens de um determinado pedido.
if(!empty({dataset[0][0]}))
{
$total = {dataset[0][0]};
sc_exec_sql("UPDATE orders SET priceorder = $total WHERE orderid = {orderid}");
sc_format_num($total, '.', ',', 2, 'S', '1', '');
sc_master_value('priceorder',$total);
} else {
4 de 6 31/07/2017 12:43
Mestre / Detalhe http://www.scriptcase.com.br/exemplos/tutoriais/form/form38.php
$total = 0;
sc_format_num($total, '.', ',', 2, 'S', '1', '');
sc_master_value('priceorder',$total);
1. No menu de aplicação acesse a pasta Eventos Ajax e clique no item Novo Evento Ajax.
2. Selecione o campo Discount e selecione o evento onChange. Clique no botão Criar Evento para finalizar.
if(!empty({dataset}[0][0])){
{unitprice} = {dataset}[0][0];
sc_set_focus('quantity');
}
else{
{unitprice} = 0;
sc_set_focus('unitprice');
}
if(!empty({dataset}[0][0])){
{unitprice} = {dataset}[0][0];
sc_set_focus('quantity');
}
else{
5 de 6 31/07/2017 12:43
Mestre / Detalhe http://www.scriptcase.com.br/exemplos/tutoriais/form/form38.php
{unitprice} = 0;
sc_set_focus('unitprice');
}
1. Acesse a pasta Eventos no menu de aplicação (veja a imagem abaixo). Assim como foi feito para os eventos dos campos, nós iremos fazer as chamadas dos métodos nos eventos do formulário.
Na tabela abaixo está a relação dos metodos que devem ser chamados em cada evento.
Evento Código
onBeforeInsert check_stock();
onAfterInsert update_master();
onBeforeUpdate check_stock();
onAfterUpdate update_master();
onAfterDelete update_master();
onLoadRecord check_stock();
2. Gere o código fonte do formulário detalhe. Para isto clique no botão Gerar Código Fonte na barra de ferramentas do ScriptCase.
3. Acesse novamente a aplicação Mestre e execute-a através do botão na barra de ferramentas do ScriptCase.
6 de 6 31/07/2017 12:43