Repetir campos conforme pedido
Tenho um formulário de cadastro e coloquei uma edit chamada, quantidade. Por exemplo, se ele dizer 4 na edit de quantidade, terá que repetir aquele cadastro 4 vezes com todas informações iguais apenas mudando o código que é autoincremento (através do generator).
Bom, uso firebird, palheta interbase, usando querys.
Obrigado
Bom, uso firebird, palheta interbase, usando querys.
Obrigado
Iniciante12345
Curtidas 0
Respostas
Beppe
01/10/2005
Uma solução:
Assumindo que Cadastro possui uma trigger after insert que sempre seta o campo Codigo = gen_id(Gerador, 1);
for I := 1 to Quantidade - 1 do begin INSERT INTO Cadastro SELECT * FROM Cadastro WHERE Codigo = gen_id(Gerador, 0) end;
Assumindo que Cadastro possui uma trigger after insert que sempre seta o campo Codigo = gen_id(Gerador, 1);
GOSTEI 0
Iniciante12345
01/10/2005
Não consegui usar o código, porque de certo o Delphi não aceita em uma unit o código:
INSERT INTO Cadastro
SELECT * FROM Cadastro WHERE Codigo = gen_id(Gerador, 0)
Onde tenho que usar esse código que me passaram? Há outra forma de fazer o que quero? Por favor, me ajudem com os passos certos.
Agradeço.
INSERT INTO Cadastro
SELECT * FROM Cadastro WHERE Codigo = gen_id(Gerador, 0)
Onde tenho que usar esse código que me passaram? Há outra forma de fazer o que quero? Por favor, me ajudem com os passos certos.
Agradeço.
GOSTEI 0
Bruno Belchior
01/10/2005
mas esse código q o amigo passou vai ter de ser inserido em uma Query e não diretamente no código...
GOSTEI 0
Iniciante12345
01/10/2005
Uhm. Sim. Aí, eu tenho que colocar ele numa Query? E como eu posso criar essa trigger? Quais os passos? Eu preciso dar um comando no código fonte unit pra chamar o código da Query (SQL né)?
Obrigado. Grato.
Obrigado. Grato.
GOSTEI 0
Beppe
01/10/2005
Execute isto no banco:
Insira isto no seu programa:
Depois de escrever isto, pensei ser mais interessante usar uma tabela de ´lançamento´ para facilitar o processo. Mas tente isto e repasse seus resultados.
set term ^ ; create generator GEN_Cadastro ^ create trigger TRG_CadastroAfterInsert for Cadastro as begin new.Codigo = gen_id(GEN_Cadastro, 1); end;
Insira isto no seu programa:
Query.SQL.Text := ´select gen_id(GEN_Cadastro, 0) from RDB$DATABASE´; Query.Open; ID := Query.Fields[0].AsInteger; Query.Close; Query.SQL.Text := ´INSERT INTO Cadastro SELECT * FROM Cadastro WHERE Codigo = ´ + IntToStr(ID); for I := 1 to Quantidade - 1 do Query.ExecSQL;
Depois de escrever isto, pensei ser mais interessante usar uma tabela de ´lançamento´ para facilitar o processo. Mas tente isto e repasse seus resultados.
GOSTEI 0