Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Auto.incrementar (https://www.clubdelphi.com/foros/showthread.php?t=77394)

yevabas 20-01-2012 21:48:56

Auto.incrementar
 
Buenas Tardes

He revisado varios hilos de este tema pero sigo con los mismos problemas, pues no tengo experiencia en el manejo de bases con delphi y esas cosas, por esta razón me quedan muchas dudas al respecto.

Tengo una tabla con los siguientes campos, ID, CANTIDAD, P1,P2,P3,P4,P5, P_TOTAL(ESTE DEBE SER LA SUMA DE TODAS LAS P),
PUNTOS, VAL_PUNTO, TOTAL(SALE DE MULTIPLICAR PUNTOS Y VAL_PUNTOS), ningun campo puede estar vacio.

El campo ID es auto incrementado por un triguer

Código SQL [-]
SET SQL DIALECT 3;

CREATE GENERATOR GEN_COMPRAS_ID;

SET TERM ^ ;



CREATE TRIGGER COMPRAS_BI FOR COMPRAS
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.consec is null) then
    new.consec = gen_id(gen_compras_id,1);
end
^


SET TERM ; ^

si ingreso los datos manuales a la base todo funciona bien se auto incrementa sin problema.

Cree un formulario con delphi 7 y hago la conexión con la base con los componentes IB, tengo un DBNavigator para crear los registros y recorrer la tabla , para llenar los datos utilizo un Tdbedit, cada uno de estos apunta al campo que le corresponde, el tdbedit del ID esta de solo lectura, lleno los demás campos y al grabar me genera un error en el que me dice que el campo ID debe tener algún valor, este es mi primera duda que debo hacer para que no aparezca este error y se graben los datos en la tabla y el campo ID se auto incremente normalmente, otro cosa es que cuando le de nuevo registro en el DBNavigator me muestre el nuevo numero de registro (ID).

lo segundo es como haría para calcula la suma de todos los campos P y me los muestre antes de grabar o refrescar, se puede con un dbedit o me toca cambiar el componente, lo mismo seria para TOTAL, si no utilizo un dbedit despues como grabo los datos en la base cuando le de guardar, ademas tengo un dbgrid donde también puedo ver todos los datos de la tabla.


gracias por la ayuda

ecfisa 20-01-2012 22:08:39

Hola yevabas.

Por favor recuerda que una pregunta por hilo: Punto 8 de la guía de estilo.

Cita:

al grabar me genera un error en el que me dice que el campo ID debe tener algún valor
Si estas utilizando un TIBDataSet o un TIBQuery, desde el Object Inspector hacé lo siguiente:

Generator Field ->
  • Generator: GEN_COMPRAS_ID
  • Field: ID
  • Increment By: 1
  • OnPost
Saludos.

Cañones 20-01-2012 22:25:13

Lo que te recomienda ecfisa es lo que yo hago. Esos trigger después te complican cuando querés modificar algo en la tabla.
No recuerdo si al campo, en este caso ID, tenés que declararlo como required = False.

Si vas a seguir trigger, al campo ID tenes que ponerlo en required = false

yevabas 01-02-2012 00:37:57

Ok muchas gracias voy a intentarlo y les cuento, y disculpas por las dos preguntas en un solo hilo.....

yevabas 13-02-2012 17:44:04

Gracias ecfisa lo resolví exactamente como lo dices, perdón por la demora en contestar pero me toco salir de viaje...

Cita:

Empezado por ecfisa (Mensaje 423454)
Hola yevabas.

Por favor recuerda que una pregunta por hilo: Punto 8 de la guía de estilo.


Si estas utilizando un TIBDataSet o un TIBQuery, desde el Object Inspector hacé lo siguiente:

Generator Field ->
  • Generator: GEN_COMPRAS_ID
  • Field: ID
  • Increment By: 1
  • OnPost
Saludos.



La franja horaria es GMT +2. Ahora son las 21:12:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi