![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
Hola,
yo creo q el problema lo tienes en delphi, y como te dice nuestro amigo, el trigger está bien. Lo q debes hacer es en la IBDataSet, buscar el evento OnNewRecord y allí poner el siguiente código: supongamos q tu IBDataset se llame IBClientes entonces el código sería: IBClientes.Cod_Cliente.Value := 0; Así no saldrá el error q tienes ahora, este error es causado porq el campo Cod_Cliente está como obligatorio, pero al ponerle como valor inicial un 0, no se ejecutará esta excepción y luego el trigger de IB le dará el código automático. Espero q te sirva. Un saludo. |
|
#2
|
||||
|
||||
|
Si tenes campos persistentes, basta también con que en tiempo de diseño pongas la propiedad Required del campo a false. Si no tenes campos persistentes, podes hacerlo en runtime después de abrir la tabla.
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#3
|
||||
|
||||
|
Cita:
Puedes usarlo dmagui.
__________________
[Crandel] |
|
#4
|
||||
|
||||
|
Como hacerlo con un procedimiento:
lo completas con todos los campo que necesitas ingresar. Suerte
__________________
[Crandel] |
|
#5
|
||||
|
||||
|
que pena la ignorancia pero bueno hice las dos cosas que me dijeron
bueno con el dataset supongamos q tu IBDataset se llame IBClientes entonces el código sería: IBClientes.Cod_Cliente.Value := 0; hice lo que me dijiste y me geneta los siguientes errores [Error] ejemplo.pas(34): Undeclared identifier: 'Cod_Cliente' [Error] ejemplo.pas(34): Missing operator or semicolon [Fatal Error] ejm.dpr(5): Could not compile used unit 'ejemplo.pas' y con el procedimiento almacenado no veo donde le este diciendo que me genere automaticamente el codigo, porque igual lo ejecute y me toca igual darle un numero en el campo del cod_cliente asi que despues me lo cambie segun el consecutivo que le toca. bueno el sp lo hice en interbase ahora cuando lo interactuo con delphi me sigue el inconveniente. Gracias por la colaboracion. |
|
#6
|
||||
|
||||
|
disculpen lo replique dos veces, fue sin intencion, no se en lo que estaba pensando
|
|
#7
|
||||
|
||||
|
Cuando te ocurre esto, podes entrar a Editar una de las respuestas para borrarla.
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#8
|
||||
|
||||
|
Cita:
Simplemente cuado intente hacer el insert se va a llamar al trigger y este le va a asignar el valor.
__________________
[Crandel] |
|
#9
|
||||
|
||||
|
Cita:
para el select select cod_cliente,cod_vendedor, nombre_client, edad, estado, direccion, telefono from cliente para el insert insert into cliente (cod_vendedor, nombre_client, edad, estado, direccion, telefono) values (:cod_vendedor, :nombre_client, :edad, :estado, :direccion, :telefono) para el modify update cliente set cod_vendedor=:cod_vendedor, nombre_client=:nombre_client, edad=:edad, estado=:estado, direccion=:direccion, telefono=:telefono where cod_cliente= ld_cod_cliente para el delete delete from cliente where cod_cliente= ld_cod_cliente Cuando lo ejecuto me sale lo que dije en el select que me mostrara, me modifica, elimina perfectamente, pero al insertar persiste el error tengo que colocarle un valor al cod_cliente asi que me lo vaya a cambiar despues por custion del trigger o si no me va a salir el dichoso mensaje ,encionado anteriormente. Realmente necesito ayuda, no se que hacer. Agradezco mucho al que me pueda ayudar. |
|
#10
|
||||
|
||||
|
Vamos a aclarar algunos conceptos
Un trigger es como una función dentro de la DB que se ejecuta automáticamente cuado ocurre un evento que vos le especificas. En cambio un procedimiento debe ser invocado para que este funcione. Vos seguis intentando insertar de la misma forma y no utilizando el procedimiento almacenado. Para usarlo la forma más fácil es utilizando un componente TIBStoredProc, que una vez lo enlazaste con el prodimiento, en tu código le debes pasar pasar los parámetros y ejecutarlo.
__________________
[Crandel] |
|
#11
|
||||
|
||||
|
Un detalle más:
el TIBStoredProc se ejecuta con el método ExecProc, fijate en la ayuda que te da un ejemplo de como pasarle los parámetros y demás. Suerte
__________________
[Crandel] |
|
#12
|
||||
|
||||
|
ayuda con los sp
que pena la ignorancia pero bueno hice las dos cosas que me dijeron
bueno con el dataset supongamos q tu IBDataset se llame IBClientes entonces el código sería: IBClientes.Cod_Cliente.Value := 0; hice lo que me dijiste y me geneta los siguientes errores [Error] ejemplo.pas(34): Undeclared identifier: 'Cod_Cliente' [Error] ejemplo.pas(34): Missing operator or semicolon [Fatal Error] ejm.dpr(5): Could not compile used unit 'ejemplo.pas' y con el procedimiento almacenado no veo donde le este diciendo que me genere automaticamente el codigo, porque igual lo ejecute y me toca igual darle un numero en el campo del cod_cliente asi que despues me lo cambie segun el consecutivo que le toca. bueno el sp lo hice en interbase ahora cuando lo interactuo con delphi me sigue el inconveniente. Gracias por la colaboracion. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|