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)
-   -   Tabla en paradox (https://www.clubdelphi.com/foros/showthread.php?t=31650)

nenufer 13-05-2006 13:24:31

Tabla en paradox
 
Hola a tod@as!! Vereis estoy utilizando tablas paradox. Tengo un formulario con un grid y los botones Nuevo, Ok. En el grid dos de los campos es un lookupcombobox. El boton nuevo lleva el append,y el ok el post. Si le doy a nuevo y le doy en el grid pero sin escribir ni seleccionar nada en concreto cuando le doy a ok me da un error: La tabla no se encuentra en estado insert o edit. No se porque me da este error cuando deberia guardarse aunq no pusiera nada. Si a alguien se le ocurre que puede estar pasando lo agradeceria, ya que pongo puntos de ruptura y todo pasa por donde debe ir. :(
Gracias.

vtdeleon 13-05-2006 15:26:19

Saludos

Sencillo, cuando das click al boton Ok, el Dbgrid pierde el foco, entonces antes de realizar el codigo de ese boton "post", el dbgrid llama a Cancel del Table porque no has introducido ningun dato; despues de esto, es que se invoca al evento Click del boton.

nenufer 13-05-2006 18:08:01

Hola,gracias por contestar. Pero como lo soluciono para que no me pase esto? Porque hago lo mismo en otros formularios y no me pasa. No se si es que he tocado algo sin querer...

vtdeleon 13-05-2006 18:45:34

Pero para qué haces un Append seguido de un post? Quieres agregar un Registro en blanco?

Aun no entiendo.

nenufer 13-05-2006 18:52:08

No lo hago. Ademas si le doy al campo lookupcombox,x ejemplo, y lo desplego xo no selecciono nada si que me lo graba y no me da ningun problema.
Mira te muestro el codigo:

Código Delphi [-]
procedure TFrmAlquileres.BtnAlquilarClick(Sender: TObject);
begin
     DM.TblAlqNuevo.Append;
end;
 
procedure TFrmAlquileres.BtnOkClick(Sender: TObject);
begin
//Esta tabla apunta a la misma base de datos que TblAquileres
      DM.TblAlqNuevo.Post;
      DM.TblAlquileres.Refresh;
 end;

nenufer 13-05-2006 20:53:34

He solucionado el error pero no entiendo porque, si me lo puedieras explicar..
En el onnewrecord le pongo la fecha,tipo timestamp y el valor de un combo.
si la fecha la pongo en el onnewrecord no me funciona, me da el erro de que la tabla no esta en estado insert o edit, xo si lo pongo en el boton nuevo no me da el error:eek: . Porque??
Código Delphi [-]
procedure TFrmAlquileres.BtnAlquilarClick(Sender: TObject);
begin
    DM.TblAlqNuevo.Append;
    DM.TblAlqNuevoFecha_Alquiler.Value:=now;
end;

lo tengo que poner asi. Pero si es un valor por defecto,porque???
y en cambio con el valor del combo no me da error???
:eek:

mariofur 17-05-2006 09:24:29

Sencillo, te da error porque como bien te dice el estado de la tabla no es Edit.

Solución, antes de hacer el post, pon:

Mitabla.Edit;

Así ya no te dará error, pero ten en cuenta que si haces primero un insert y luego no introduces nada vas a grabar registros en blanco.

Solución:

Elimina el registro si el valor de todos los DBEdit es Nulo.

nenufer 17-05-2006 11:10:07

Cita:

Empezado por mariofur
Sencillo, te da error porque como bien te dice el estado de la tabla no es Edit.

Tambien me dice o insert. Y la tabla si que la pongo en insert y luego si le doy 1º al boton ok sin tocar el dbgrid si que graba no me da problemas aunq no introduzca nada, pero si le doy 1º al grid y no selecciono nada exactamente, es cuando me salta este error.

Cita:

pero ten en cuenta que si haces primero un insert y luego no introduces nada vas a grabar registros en blanco.
Lo del registro en blanco no es problema, porque tengo una funcion para comprobar que ciertos campos no esten vacios. Lo que pasa es que estaba probando sin esta funcion 1º, porque cuando le daba a ok en el dbgrid se me kedaba vacia la linea y era por el error que me daba. Gracias de todas formas por comentarme eso;) .

Lo solucione cambiando una linea. Y es que tengo un campo timestamp en la
tabla como clave primaria. quiero que cuando le doy a nuevo(append) inserte
la fecha, y eso lo tengo en el onnewrecord de la tabla. Si lo pongo en este evento es cuando me salta la excepcion, pero si me lo llevo al boton nuevo y lo pongo debajo del append funciona bien.
Mi pregunta era porque me da ese error cuando asigno la fecha en el onnewrecord y no cuando lo hago debajo del append?:confused:
Lo pongo como un valor por defecto.

Gracias:)


La franja horaria es GMT +2. Ahora son las 04:02:24.

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