** RESOLVIDO ** Botão para abrir um formulário filtrando pelo ID
Autor Tópico: ** RESOLVIDO ** Botão para abrir um formulário filtrando pelo ID (Lida 3435 vezes)
« Online: Janeiro 28, 2010, 12:06:14 pm »
Tenho um formulário "A" com um botão PHP que abre um outro formulário "B". NO formulário "A", capturei o valor do ID e o armazenei numa variável (varID), de forma que, ao abrir o formulário "B", esse formulário já venha filtrado pelo valor da variável. Para isso, coloquei na CLÁUSULA WHERE do formulário "B" a expressão ID = [varID].
Acontece que, por se tratar de um formulário, é necessário que eu defina para o formulário um campo para CHAVE PRIMÁRIA. Defini que esse campo é o ID.
Quando mando executar o formulário "A" e clico no botão para abrir o formulário "B", retorna que não foram encontrados registros.
Observando o código gerado, a filtragem está assim:
WHERE ID = [varID] and ID = ''
Ou seja, não há como retornar registro mesmo, pois o campo chave do formulário "B" é inserido automaticamente na expressão e eu não tenho como atribuir valor a ele.
« Última modificação: Janeiro 29, 2010, 04:12:47 pm por Rodrigo Lins »
Re: Botão para abrir um formulário filtrando pelo ID
« Responder #1 Online: Janeiro 29, 2010, 09:09:22 am »
Não entendi muuuito bem oq vc quis dizer... mas em outros casos parecidos faço o seguinte:
No caso de formulário com detalhe... (tipo dados da NF e os itens da NF), no evento OnLoad eu carrego a variável:
[var_codigo] = {nfcodigo};
crio a ligação... ai ele vai pedir o campo de ligação (No caso os dois códigos - o código da NF que tem que ser do mesmo tipo e tamanho tanto na tabela dos DADOS da NF quanto na tabela dos ITENS da NF).
Na clausula where do formulario dos Itens, eu coloco pra exibir apenas os registros que tem o mesmo codigo da NF do cabeçalho:
nfcodigo = [var_codigo]
Como eu sempre quero que ao adicionar um item, ele seja inserido NAQUELA NF, no campo nfcodigo do formulário de Itens, eu coloco:
"valor inicial":Valor definido e
"Valor inicial":[var_codigo]
Isso para que o usuário nao tenha que ficar informando o codigo da NF da qual aquele item pertence...
No seu caso, vc vai usar o botão pra chamar, e não exibir um embaixo do outro....
Só tome cuidado... se pelo que eu entendi... o seu formulário B só tem uma chave... e essa chave vai ser a mesma que o formulário A.... o formulário B vai sempre ter apenas um registro pra cada formulário A....
Bem... qq coisa coloque aqui novamente!!
« Última modificação: Janeiro 29, 2010, 09:12:28 am por waae »
« Responder #2 Online: Janeiro 29, 2010, 10:00:23 am »
Valter fiz isso ontem com um botão de ligação.
Tenho uma app frm PEDIDO (frm simples) e uma outra ITENS DO PEDIDO (frm multiplos registros).
Na WHERE do ITENS DO PEDIDO tenho isso: COD_PEDIDO = [var_Pedido]
Quando faz a ligação o SC pede o parâmetros para var_Pedido informo o campo COD_PEDIDO da tabela PEDIDO.
Mando mostra o botão na volta do formulário, assim só aparece quando inserir o pedido. Ai clica no botão INSERIR PRODUTOS e ele chama o multiplo registro para inserir os produtos.
Agora seu banco deve ser mais ou menos assim
TAB_PEDIDO
COD_PEDIDO
TAB_ITENS_PEDIDO
COD_ITEN_PEDIDO - Chave primária
COD_PEDIDO - Chave estrangeira da TAB_PEDIDO.
A chave estrangeira deve ser utilizada para o filtro no frm multiplos registros.
« Responder #3 Online: Janeiro 29, 2010, 10:38:58 am »
Vocês têm razão. É assim que deveria funcionar, mas no meu ambiente do SC5 não estava.
O problema ocorria por causa do tratamento dado pelo SC para os campos definidos no banco de dados com acentuação ou espaços em branco.
Na lista de campos dentro do SC, os nomes dos campos com caracteres especiais (acentos e espaços) aparecem sem eles, diferentemente do que está definido no banco de dados. Mas na filtragem, se eu colocar conforme definição do banco de dados, entre aspas, funciona corretamente.