PDA

Ver la Versión Completa : Auto.incrementar


yevabas
20-01-2012, 21:48:56
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

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 (http://www.clubdelphi.com/foros/guiaestilo.php#preguntas) de la guía de estilo.

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

Hola yevabas.

Por favor recuerda que una pregunta por hilo: Punto 8 (http://www.clubdelphi.com/foros/guiaestilo.php#preguntas) 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.