escolher dados de tabela e gravar em outra tabela

boa noite

estou quebrando a cabeca aqui

tenho uma tabela com : ordem de servico , nome , telefone, celular, etc

preciso pegar da tabela de clientes o campo nome, telefone, celular e gravar na tabela de OS.

ja tentei de todas as maneiras e nao consegui, alguem pode me dar uma luz ?

Conrado

Bom vamos lá…
Utilizando a normalização isso não é recomendável poi uma vez que vc tem o código do cliente na tabela de ordem de serviços não é necessário duplicar as demais informações ( campo nome, telefone, celular etc…) ma isso não vem ao caso, vamos tentar resolver seu problema.

Ao selecionar o cliente e perder o foco do campo cliente, vc faz um select no banco buscando o cliente selecionado…
feito isso vc pode armazenar os valores desejados em uma variável ou campos em seu formulário.

código abaixo:

vc pode criar um evento Ajax no seu campo de cliente ( Evento onChange )

$check_sql = “SELECT nome, telefone, celular, etc…”
. " FROM clientes"
. " WHERE codigo_cliente = ‘" . {codigo_cliente} . "’";
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]})) // se encontrar algo
{
{txtnome} = {rs[0][0]};
{txttelefone} = {rs[0][1]};
{txtetc…} = {rs[0][2]};
}
else // se n]ão encontrar nada
{
sc_error_message(“Cliente não localizado - erro”);
}

boa sorte,

Dário

bom dia

obrigado pela ajuda, no caso que se diz a respeito da normalizacao, como entao proceder para aparecer os campos telefone e celular na tabela Ordem de Servico sem gravar os mesmos ?

Conrado

Na verdade não vai aparecer na tabela e sim em seu formulário utilizando as ligações (inner join, left join, etc…)

na tabela de ordem de serviço vc vai guardar apenas o código do cliente, e quando for mostrar os dados para o cliente aí sim vc faz a ligação.

Procure se informar um pouco sobre ligações entre tabelas utilizando o (INNER JOIN e os demais tb).

boa sorte

Dário

desculpe, ainda apanho um pouco, voce pode me dar um exemplo ? armazeno os dados em variaveis so pra mostrar ?

Conrado

No SC tem um recurso muito bacana que vai lhe auxiliar na contrução do Select…
O “SQL Builder”
Abra ele e seleciona as 2 tabelas (cliente e ordem de serviço)
Logo após selecione os campos que será apresentado ao usuário( numero OS, nome cliente, numero telefone, etc…)
No final ele vai lhe mostrar o Select ligando as tabelas.

aí é só copiar o select e utilizar no código que lhe enviei 1º.

qq coisa posta aí.

Dário

Você não pode duplicar os registros da 2a. tabela e adicionar o campo que falta: ordem de serviço (da primeira tabela)?
Isso não resolve?

bom dia

o que nao estou entendendo é como ele vai mostrar os campos telefone , celular da tabela cliente no formulario ordem de servico sem gravar na mesma ? Desculpe e que estou perdido.

Conrado

vamos fz o seguinte…

manda pra mim sua extrutura das tabelas ( cliente e ordem de serviço) que vou desenvolver um modelo baseado nas duas tabela aí lhe mando de volta.

assim fica mais fácil de vc entender

Dário

ok, voce pode me informar seu e-mail, para envio, desde ja agradeco a ajuda

Conrado

Opa, desculpa

darioasantos@gmail.com

É o seguinte irmão, se vc tem uma tabela ordens de serviço coloca nessa tabela um campo tipo integer e armazena o codigo do cliente que é gerado lá na sua tabela clientes.
Depois você consegue unir as duas tabelas via select com os Join´s da vida no SC.
O SQL Builder pode te ajudar, mas é bom fazer uma pesquisa sobre AnSI SQL e aprender um pouco sobre estrutura de dados, banco de dados relacionais, pra não ter que refazer seu trampo.

Resumindo a normatização diz que em hipótese alguma deve haver replicação de dados, exceto as chaves relacionais das tabelas, isso é praticamente impossível é verdade, mas consegue-se manter uma boa organização dos dados se forem criadas em todas as tabelas os malditos índices e chaves primárias e se forem feitos os relacionamento corretamente nas consultas.