Fórum Inserir valores diferentes para cada grupo. #212517
09/02/2004
0
A minha dúvida é minha complicada de ser resolvida, consiste em duas etapas.
Primeiramente vou explicar o que estou tentando fazer.
- Tenho uma tabela1 com algumas valores, nela contem o codigo do equipamento. Vou copiar estes valores para outra tabela2, adicionando o campo numero_ordemdeservico na tabela2. O problema esta em selecionar na tabela1 os equipamentos iguais, e depois na hora de copiar para a tabela2, necessito que cada GRUPO de equipamento tenho um número igual, ao mudar o GRUPO de equipamento, muda o número na tabela2. Não sei se fui claro...
Estou usando um código assim:
Só que quando seleciono apenas um registro ele da erro, isso deve pois logo depois do until eu uso um insert.
Por favor me ajudem, eu sei que é dificil....Uso o firebird....
Primeiramente vou explicar o que estou tentando fazer.
- Tenho uma tabela1 com algumas valores, nela contem o codigo do equipamento. Vou copiar estes valores para outra tabela2, adicionando o campo numero_ordemdeservico na tabela2. O problema esta em selecionar na tabela1 os equipamentos iguais, e depois na hora de copiar para a tabela2, necessito que cada GRUPO de equipamento tenho um número igual, ao mudar o GRUPO de equipamento, muda o número na tabela2. Não sei se fui claro...
Estou usando um código assim:
begin
dtm_principal.SQLDataSet_plan.Close;
dtm_principal.ClientDataSet_plan.Active:=false;
dtm_principal.SQLDataSet_plan.CommandText:=´Select * from tb_planoman where data_proxima between :dat1 and :dat2 order by cod_equipamento´;
dtm_principal.SQLDataSet_plan.ParamByName(´dat1´).AsDate:=strtodate(maskedit1.Text);
dtm_principal.SQLDataSet_plan.ParamByName(´dat2´).AsDate:=strtodate(maskedit2.Text);
dtm_principal.SQLDataSet_plan.open;
dtm_principal.ClientDataSet_plan.Active:=true;
dtm_principal.ClientDataSet_plan.Last;
edit1.Text:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_equserpos´).AsString;
dtm_principal.ClientDataSet_plan.First;
dtm_principal.SQLDataSet_ord.open;
dtm_principal.ClientDataSet_ord.Active:=true;
repeat
dtm_principal.ClientDataSet_ord.insert;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_equserpos´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_equserpos´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_equipamento´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_equipamento´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_servico´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_servico´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_posicao´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_posicao´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_setor´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_setor´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_intervencao´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_intervencao´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´modo´).AsString:=´Automático´;
dtm_principal.ClientDataSet_plan.Next;
until dtm_principal.ClientDataSet_plan.FieldByName(´cod_Equserpos´).AsString=edit1.Text;
dtm_principal.ClientDataSet_ord.insert;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_equserpos´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_equserpos´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_equipamento´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_equipamento´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_servico´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_servico´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_posicao´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_posicao´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_setor´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_setor´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´cod_intervencao´).AsString:=dtm_principal.ClientDataSet_plan.fieldbyname(´cod_intervencao´).AsString;
dtm_principal.ClientDataSet_ord.FieldByName(´modo´).AsString:=´Automático´;
dtm_principal.ClientDataSet_ord.ApplyUpdates(-1);
end;
Só que quando seleciono apenas um registro ele da erro, isso deve pois logo depois do until eu uso um insert.
Por favor me ajudem, eu sei que é dificil....Uso o firebird....
Nish
Curtir tópico
+ 0
Responder
Posts
09/02/2004
Nish
O que vocês usam para efetuar cópias de uma tabela1 para a tabela2 até atingir o final da tabela1?
Responder
Gostei + 0
09/02/2004
Fabio.hc
Eu faço assim:
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin Table1.First; while not Table1.Eof do begin Table2.Insert; for i:=0 to Table2.FieldCount -1 do Table2.Fields[i].Value:=Table1.Fields[i].Value; Table2.Post; Table1.Next; end; end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)