Preenchimento automático de campos concatenados

(DanielLN) #1

Oi Pessoal, por favor preciso de uma ajuda…

Preciso que um campo seja gerado automaticamente a partir de outros campos.
Tenho por exemplo 3 tabelas, cada um com seu id e uma informação. Preciso no mesmo formulário, gerar um campo que busque as informações em cada tabela pelo ID e que depois junte as informações num campo final do tipo texto. Exemplificando:

Tabela A
tabelaA_id = 1
descricao = ABC

Tabela B
tabelaB_id = 1
valor = 100

Tabela C
tabelaC_id = 1
data = 15052009

Preciso gerar automaticamente um campo que contenha o seguinte valor:
campofinal = ABC-100-15052009

Alguém tem alguma idéia sobre como fazer isso?

Obrigado Galera!

(DanielLN) #2

Caramba. Consegui pessoal.
Criei um método e chamei ele nos eventos do formulário.
Fiz um select pelo ID buscando a informação texto/data, atribuí o resultado para uma variável.
Depois juntei as variáveis e atribuí o valor o campo final. (Não existe uma função de concatenação no SC???).

[i]sc_lookup(resultado_A,
“SELECT descricao
FROM Tabela_A
WHERE (tabelaA_id = {campo})”);
$var_res_A = {resultado_A[0][0]};

sc_lookup(resultado_B,
“SELECT valor
FROM Tabela_B
WHERE (tabelaB_id = {campo})”);
$var_res_B = {resultado_B[0][0]};

sc_lookup(resultado_C,
“SELECT data
FROM Tabela_C
WHERE (tabelaC_id = {campo})”);
$var_res_C = {resultado_C[0][0]};

$var_final = $var_res_A . “-” . $var_res_B . “-” . $var_res_C;

{campofinal} = $var_final;[/i]

Tentei fazer isso nos eventos Ajax do campo, mas o negócio não funciona. Tive que deixar o campofinal readonly e mexer nos atributos do formulário (se for inserção o campo fica off, e por aí vai).

Se alguém tiver outra sugestão mais “econômica” tô aceitando.

Abraço.

(system) #3

Não seria muita diferença mas melhoraria o modo com que vc busca as informações.

Ao inves de:
sc_lookup(resultado_A,
“SELECT descricao
FROM Tabela_A
WHERE (tabelaA_id = {campo})”);
$var_res_A = {resultado_A[0][0]};

sc_lookup(resultado_B,
“SELECT valor
FROM Tabela_B
WHERE (tabelaB_id = {campo})”);
$var_res_B = {resultado_B[0][0]};

sc_lookup(resultado_C,
“SELECT data
FROM Tabela_C
WHERE (tabelaC_id = {campo})”);
$var_res_C = {resultado_C[0][0]};

Vc faria:
sc_lookup(resultado,
“SELECT A.descricao, B.valor, C.data
FROM Tabela_A A LEFT JOIN Tabela_B B ON tabelaB_id = tabelaA_id
LEFT JOIN Tabela_C C ON tabelaC_id = tabelaA_id
WHERE (tabelaA_id = {campo})”);
$var_res_A = {resultado_A[0][0]};
$var_res_B = {resultado_B[0][1]};
$var_res_C = {resultado_C[0][2]};

Eu nao testei aqui, mas é mais ou menos isso…

(GooMag) #4

Qual o banco de dados utilizado???

(DanielLN) #5

Desculpe a demora.
Uso o MySQL 5 com SQLyog
Abraço.