Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andrey_ixo

[Resolvido] Gravar mais de um registro no Banco de Dados

Recommended Posts

boa noite pessoal

é o seguinte, tenho duas tabelas a tabela ITENS e PARCELAS

quero que para cada parcela crie um registro, por exemplo 10 parcelas, vai criar 10 registros com campos de id, valor da parcela, na tabela PARCELAS etc

Atenciosamente,

Andrey

Compartilhar este post


Link para o post
Compartilhar em outros sites

ITENS -> IDITEM(PK), PARCELAR (0,1), NUMEPARCELAS, VALOSERVICO, DATAPARCELA

PARCELAS -> IDPARCELA(PK), CODIITEM(FK), VENCIMENTO

gostaria q o usuario digitasse o numero de parcelas e armazenasse no NUMEPARCELAS e criasse um registro para cada parcela na tabela PARCELAS, o ususario dikgitasse tambem o DATAPARCELA referente ao 1º paragamento e em cada registro somasse 30 dias

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como incluir informações em uma tabela...

 

Recomendo que você use somente TQuery e nunca TTable...

 

with query1 do begin
  Close;
  SQL.Clear;
  SQL.Add('insert into ":acme:itens" ');
  SQL.Add('(iditem, parcelar, numeparcelas, valorservico, dataparcela)');
  SQL.Add('values');
  SQL.Add('(0, 1, 4, 4.00, "10/31/2008");');
  SaveToFile('para_testar_no_dbex_a.sql');
  ExecSQL;

  SQL.Clear;
  SQL.Add('insert into ":acme:parcelas" ');
  SQL.Add('(idparcela, coditem, vencimento)');
  SQL.Add('values');
  SQL.Add('(0, 1, 1, "2008/11/30"),');
  SQL.Add('(0, 2, 1, "2008/12/31"),');
  SQL.Add('(0, 3, 1, "2009/01/31"),');
  SQL.Add('(0, 4, 1, "2009/03/01");');
  SaveToFile('para_testar_no_dbex_b.sql');
  ExecSQL;
end; {with query1}

query1 = TQuery1, ligado a um TDatabase, por sua vez conectado via ODBC a um

banco de dados (catalog) qualquer no MySQL...

 

Procure aprender sobre TSQL para saber como adaptar seu código SQL para outros SGBD, como

Paradox, VisualDBase, MySQL, Postgres, etc...

 

Ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu pela ajuda, mas já consegui, só que fiz por procedimento no BD (InterBase) e chamei no botão, passei pra vcs alguns campos q achava que era necessário, mas na verdade usei mais do que somente os campos q eu passei segue o código:

 

CREATE PROCEDURE GER_PARCELA (
	DATAFATURA DATE,
	IDCONTRATOITEM INTEGER,
	CODICONTRATO INTEGER,
	CODIEMPRESA INTEGER,
	CODIPRESTADOR INTEGER,
	CODIPROFISSIONAL INTEGER,
	CODIUSUARIO INTEGER)
AS
DECLARE VARIABLE NPARSERVICO INTEGER;
DECLARE VARIABLE VALOSERVICO DOUBLE PRECISION;
DECLARE VARIABLE PARCSERVICO INTEGER;
DECLARE VARIABLE TPARSERVICO INTEGER;
DECLARE VARIABLE CODIFATURASERVICO INTEGER;
DECLARE VARIABLE CODISERVICO INTEGER;
DECLARE VARIABLE VALOFATURA DOUBLE PRECISION;
DECLARE VARIABLE MAUXFATURA INTEGER;
DECLARE VARIABLE MESRFATURA VARCHAR(2);
DECLARE VARIABLE ANORFATURA INTEGER;
BEGIN
  FOR SELECT CI.VALOSERVICO, CI.CODISERVICO, CI.NPARSERVICO, CI.PARCSERVICO
  FROM CONTRATOITEM CI
  WHERE CI.idcontratoitem = :IDCONTRATOITEM
  INTO :VALOSERVICO, :CODISERVICO, :NPARSERVICO, :PARCSERVICO
  DO BEGIN
	IF (PARCSERVICO = 1) THEN BEGIN
	  /* DELETA PARCELAS EXISTENTES */
	  DELETE FROM FATURASERVICO
	  WHERE CODICONTRATO = :CODICONTRATO AND CODISERVICO = :CODISERVICO;

	  MAUXFATURA = EXTRACT(MONTH FROM :DATAFATURA);
	  ANORFATURA = EXTRACT(YEAR FROM :DATAFATURA);

	  CODIFATURASERVICO = NULL;
	  TPARSERVICO = 1;

	  WHILE (TPARSERVICO <= NPARSERVICO) DO BEGIN
		CODIFATURASERVICO = GEN_ID(gen_faturaservico_id,1);

		MAUXFATURA = MAUXFATURA + 1;
		IF (MAUXFATURA = 13) THEN BEGIN
		  MAUXFATURA = 1;
		  ANORFATURA = ANORFATURA + 1;
		END

		IF (MAUXFATURA < 10) THEN BEGIN
		  MESRFATURA = '0'||MAUXFATURA;
		END
		ELSE BEGIN
		  MESRFATURA = CAST(MAUXFATURA AS VARCHAR(2));
		END

		DATAFATURA = DATAFATURA + 30;
		VALOFATURA = VALOSERVICO / NPARSERVICO;

		INSERT INTO FATURASERVICO (idfaturaservico, codicontrato, codiempresa,
		  codiprestador, codiprofissional, codiservico, datafatura, mesrfatura,
		  anorfatura, valofatura, codiusuario) VALUES
		  (:CODIFATURASERVICO, :CODICONTRATO, :CODIEMPRESA, :CODIPRESTADOR,
		  :CODIPROFISSIONAL, :CODISERVICO, :DATAFATURA, :MESRFATURA,
		  :ANORFATURA, :VALOFATURA, :CODIUSUARIO);

		TPARSERVICO = TPARSERVICO + 1;
	  END
	END
  END
END

 

valeu pela ajuda!

desculpa algum encomodo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.