Inserir valores diferentes para cada grupo.

Delphi

09/02/2004

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:
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

Nish

Curtidas 0

Respostas

Nish

Nish

09/02/2004

O que vocês usam para efetuar cópias de uma tabela1 para a tabela2 até atingir o final da tabela1?


GOSTEI 0
Fabio.hc

Fabio.hc

09/02/2004

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;



GOSTEI 0
POSTAR