Como melhorar o Mestre-Detalhe? Postem suas experiências

Haroldo, Grande Haroldo, muito bem falado por todos os lados inclusive na demostração do SC, dirigido por Carlos da NM…
Uma pergunta o Sr. Fez um Master/Detail todo do zero com código proprio ou usou algum framework-Modelo,
Si usou algum frame… poderia indicar cual?
si não usou nenhum frame, de todas formas parabéns…y obrigado por compartilhar…

Não usei framework não.

Uso uma controle.

Campos manuais.
No detalhe uso um campo do tipo checkbox (na verdade ele eh uma DIV html) e escrevo com jquery uma consulta dos itens (usando uma TABLE Html) onde cada linha eh um link que executa um vento ajax que ao clicar preenche campos virtuais do item.

A Ação de salvamento do item eh manual também.

ah Ok… muito obrigado por compartilhar…
Y outra coisinha e ágil a carga do detalhe com essa Master/Detail que o Sr. Tem??

sim muito superior ao metodo padrào do SC.

Principalmente que o detalhe possui 400,500 registros.

Pessoal,

Muito legal a contribuição de todos que participaram deste post, mas o problema principal, que é utilizar o próprio scriptcase para fazer o mestre detalhe ainda existe.

O que a Netmake deveria fazer é lançar a nova versão com um Mestre Detalhe melhor elaborado, pois a utilização da ferramenta é justamente facilitar o desenvolvimento e não termos que ficar usando de programação própria para resolver um problema que a ferramenta deveria disponibilizar de forma adequada e não pobre como é até agora e pelo visto vai continuar sendo assim.

Sei que existem momentos que precisamos entrar com uma programação própria e ainda bem que existe eles criaram a opção da blank e controle que permitem isto, mas um formulário Mestre/Detalhe deveria ser feito pelo próprio Scriptcase, pelo menos os mais simples e normais.

No caso que o Haroldo comentou, um detalhe com mais de 400 registros, estes sim devem ser desenvolvidos de forma manual, pois não conheço nenhuma ferramente RAD que possa fazer isto de forma prática e funcional.

Foi muito boa esta discussão e espero, sinceramente, que a Netmake melhore o Mestre/Detalhe que o Scriptcase disponibiliza para os seus usuários.

Acho que não existe nenhuma aplicação um pouquinho mais elaborada que possa ser feita sem utilizar o Mestre / Detalhe.

[]'s

Quando criamos as classes, funções depois fica fácil usar sempre, independente da quantidade de registros.

Bom galera eu resolvi fazer um teste aqui em uma tabelinha de nosso sistema com um grid editável sem filtro algum, essa tabela esta hoje com 700 mb de tamanho e pelo tamanho do retorno desse select eu não achei nem um pouco demorada a resposta:

http://dev.sglsistemas.com.br/scriptcase7/app/BiGeweb/form_mov_itens/form_mov_itens.php.

Bom tirem suas conclusões, vou deixar um tempo no ar pra vocês testarem, pois muitas vezes podemos otimizar a estrutura do servidor de banco de dados para que ele tenha uma melhor performance, que na minha humilde opinião é isso que impacta diretamente no desempenho das aplicações.

Levem em consideração que o servidor esta um pouco longe com latência em média de 150 ms.

Grande Saulo,

Qual banco de dados deste teste?

Mysql, abaixo um mestre detalhes eu fiz um update na tabela de itens então o primeiro registro tem muitas linhas de itens pra testar o desempenho.

http://dev.sglsistemas.com.br/scriptcase7/app/BiGeweb/form_mov/form_mov.php

Só complementando uma informação que acho essencial, esse banco de onde estou puxando esses dados esta estruturado em tabelas Myisam o que também dá um ganho de performance de uns 18% reais sobre o innodb.

Bom claro que todos aqui sabem da importância de usar tabelas adequadas aos tipos de dados que serão gravados nelas bem como a quantidade e recorrência de consultas a elas.

Boa noite!!

Pessoal,

Está ficando bem interessante esse tópico.

Obrigado Haroldo pelas dicas.

Alguém aqui já conseguiu ou ao menos tentou esconder o botão do lado esquerdo e fazer a linha ser gravada ao escapar do último campo da direta da linha?

Ainda me pergunto o porque do botão ficar do lado esquerdo.

Sim eu tenho isso funcionando quando se modifica o ultimo campo eu submeto a mesma sem problemas…

Vi no forum o início de uma discussão sobre os botões em grid de aplicações mestre-detalhes. Os botões ficam no início da linha o que quebra a lógica de inclusão de itens no grid.
De programador para programador: seria interessante de imediato a Netmake criar uma opção que permita o desenvolvedor optar por colocar os botões no início ou no final da linha em um grid de detalhes.
Agora, gente, mudar os botões do início para o final da linha é uma “besteirinha” simples de se fazer que fico me perguntando por que a Netmake precisará “apanhar” com desenvolvedores a “demonizar” a ferramenta aqui no forum. Tão simples de se fazer que se eu tivesse acesso ao projeto SC, eu mesmo faria em poucos minutos. Vai aí a dica para a Netmake. Apesar dos meus 30 e poucos anos de experiência com desenvolvimento, não quero gastar tempo “fazendo na unha” algo que está no âmbito da ferramenta, que por sinal é excelente. O SC me surpreendeu e minha expressão de satisfação é extremamente sincera.

Olá a todos.
Alguém já utilizou ferramentas de terceiros para criar isso?
http://www.apphp.com/php-datagrid/index.php
http://www.phpgrid.org/demo-center/

Daria certo colocando isso em uma aplicação blank? O que acham?

Uma aplicação Blank você pode colocar oque quiser, já usei datatable em algumas aplicações onde preciso mostrar GRID de várias tabelas em uma mesma tela sem usar iframe.

Olá Willian
Poderia explicar ou detalhar como fez?

Muito Obrigado

Então, esconder os botoes não fiz , pois não tive a necessidade, nem trocar de lugar mas não vejo tao complicado essa parte…
O que sim fiz foi que ao modificar o ultimo campo grave a linha, abaixo a explicação…

1- No meu caso ao abrir o formulário ele já habilita uma linha em branco para o usuário diretamente carregar…
Em FORMULÁRIO - JAVASCRIPT selecione o Objeto “FORM” Evento “onLoad” y o inserir seguinte código.

do_ajax_form_barras_add_new_line();

2- Criar um campo manual, Oculto no formulário chamado linha
No evento OnLoadRecord

{linha} = $sc_seq_vert;

3- Em Programação - Métodos Javascript , criar um método chamado guardar com um parâmetro chamado “linha”.

/*Neste código estou verificando si a linha que estou manipulando vai ser uma Inserção ou uma Atualização*/
var obj = "#sc_ins_line_"+linha;
if($(obj).is(':visible')) { //Uso do Jquery para ver si o objeto visível e o botão incluir ou atualizar
    findPos(this); 
	nm_atualiza_line('incluir', linha);
	return false;
}else{
    findPos(this); 
	nm_atualiza_line('alterar', linha);
	return false;
}

4- Em Eventos Ajax Criar um evento onChange para o ultimo campo ou o campo que ao ser modificado sera submetido a linha

sc_ajax_javascript('guardar', array({linha}));

P.S: O que estou procurando a muito y tentando mais ainda sem sucesso , e que o focus esteja sempre na nova linha, si por ai alguém tiver essa Luz , faça ela Brilhar para mim por favor .rss

Se o modal abrisse fora do Iframe e no centro da tela seria muito bom, ficaria mais amigável e disfaçaria o mestre detalhes. Não sei… talvez até dê para fazer isso na mão, mas isso deveria ser nativo do sc.

Caso utilizemos o modal temos que adaptar ele dentro do iframe e ainda aturar a barra de rolagem…

Saulo tudo bem?
Vi seu exemplo de master/detail.
Como vc controla o processo de incluir o cabeçalho do pedido e ele voltar alterando e liberar a área de itens do pedido?
Estou querando a cabeça com isso.
Estou trabalhando com a opção de manter o form aberto editando o registro que acabei de inserir. Esta opção está no menu navegação, certo?
Mas o cara sempre volta incluindo um novo. Não interessa a combinação de opções que eu faça. Diga-se de passagem, acho que já testei todas as opções.
Apesar das dificuldades do master/detail aqui apresentadas, este jeito o cliente ainda engole.
Mas não estou conseguindo fazer funcionar. Tem alguma coisa a mais para ser configurado?
Esta aplicação em estou trabalhando ainda esta no sc 5.2

Grato por qualquer ajuda
Abração à todos

Bem não sei se foi assim mas eu acho que ele usou gatilhos no banco. Eu faço assim. No mestre crio um gatilho que ao inserir já manda pro detalhe ficar em modo de inclusão. Fica show!

MEstre detalhe pra esse tipos de situações eu uso sempre o Formulário multiplos registros.