FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
no guarda los datos en la tabla
Hola,
Tengo una aplicación, hecha en delphi 6 con una BD en IB7. Una de las ventanas de mi aplicación está compuesta por un DBGrid, y tres botones, que son, nuevo, editar y borrar. Editar y nuevo, me abren una ventana, con los mismos campos que aparecen en el dbgrid. Los botones Nuevo y borrar me funcionan perfectamente. El problema viene cuando intento editar. Esto es,Inserto un nuevo registro(Botón "Nuevo"), dejando el campo de fecha vacío (tipo date, sql3),y luego edito ese campo, (Botón "Editar"), e introduzco una fecha válida, que veo como aparece en los campos correspondientes de mi DBGrid, y al pulsar aceptar, (guardar) RESULTA QUE NO ME GUARDA LAS FECHAS. Sin embargo, cuando lo que no relleno con datos, es un campo Varchar, al editarlo para añadirle ese dato, me lo guarda sin problemas. Vamos, que el código de post etc, que tiene asociado el botón editar, parece que tiene que estar bien, pues de otro modo, no me guardaría tampoco el dato que introduzco en el campo varchar. Lo más curioso del tema es que, si al insertar el registro inserto datos en el campo fecha, y luego quiero editar ese campo fecha, ENTONCES SI ME LO GUARDA!!!!! El código para el botón editar es:
¿tal vez sea algo relacionado las propiedades que tengo para ese campo en esa tabla? Aparentemente está todo bien. ¿Alguna Idea? Os agradeceré cualquier orientación que me podais dar, por que estoy algo desesperada con este tema. Muchas gracias a todos, por todo, Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :) Última edición por Giniromero fecha: 26-05-2004 a las 18:51:10. |
#2
|
|||
|
|||
Oye
Oye Gini
Que componente estas usando para meter, borrar y editar si estas usando un TIBDataSet entonces fijate si en su propiedad de EditSQL tienes el campo Fecha declarado si no pues ponlo...
__________________
saludos desde Puebla Mexico.. asanxt@hotmail.com "como siempre a sus ordenes y siempre con buena cara" 'lolita me excitas, perversa piel de melocotón' |
#3
|
|||
|
|||
Hola,
lo que tengo en Edit SQL es:
en Insert SQL tengo:
y en modfySQL tengo:
Si veis algo, os agradeceré me lo comenteis. Muchas gracias a todos, por todo virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :) |
#4
|
|||
|
|||
¿Será que aqui esta el error?
Si lo que tu quieres es modificar el dato debes de usar Edit
Estas escribiendo :
y debe de ser
__________________
saludos desde Puebla Mexico.. asanxt@hotmail.com "como siempre a sus ordenes y siempre con buena cara" 'lolita me excitas, perversa piel de melocotón' |
#5
|
|||
|
|||
Hola,
Si, bueno, disculpa mi torpeza, ese es el código que tengo para el botón NUEVO, (insert), no para el botón EDITAR, (Edit), que es el que pongo a continuación:
De todos modos, ten en cuenta, por si sirve de ayuda, que cuando edito un campo de texto, que nunca ha tenido datos, me los guarda sin problemas, lo que no me deja es guardar los cambios tras editar un campo de tipo date. Y que si edito un registro que ya tiene fechas, y las cambio, eso también me lo hace bien. Por eso no me parece tanto un problema con .edit o .insert, sino, tal vez, con el propio campo de fechas o algo relaccionado con el. Muchas gracias por la ayuda.
__________________
Sonrie al mundo, y el mundo te sonreirá :) Última edición por Giniromero fecha: 28-05-2004 a las 13:30:40. |
#6
|
|||
|
|||
Hola a todos,
Siento que tal vez he sido un poco densa explicandome. Intentaré aclararme un poco: Esta ventana se encarga de insertar, editar y borrar datos en una tabla. Los problemas los tengo al editar y modificar campos de tipo date. Comparto la misma ventana para la inserción y la edición de los datos, (ventana insertar/editar). Dicha ventana tiene unicamente tres campos: descripción, de tipo varchar, fecha Inicial de tipo date, fecha final de tipo date. y dos botones: Aceptar, (devuelve modal result OK) y Cancelar, (devuelve modal result Cancel). Voy haciendo pruebas con los datos: 1)Inserto un nuevo registro --> Se me muestra la ventana insertar/editar. Inserto datos sólo en los campos date, dejando vacio el de descripcion. acepto, y se guardan los datos. Una vez hecho esto, edito ese mismos registro. Me muestra la ventana insertar/editar. Añado datos en el campo que antes dejé vacío,(nul), esto es, descripcion. Doy a aceptar y me lo guarda. 2)Esta vez me situo en un registro antiguo, de los que nunca han tenido datos en fechaini y fechafin, siempre han estado vacios o nulos Edito dicho registro, me muestra la ventana de insercion/edicion, pidiendome datos para los tres campos. Añado datos en los campos que antes eran nul, esto es, fecha inicial y fecha final, doy a aceptar y NO ME LOS GUARDA. ==> Conclusión, no me deja modificar un campo que era null si éste es de tipo date 3)Inserto un nuevo registro --> Se me muestra la ventana insertar/editar. Inserto datos esta vez sólo en el campo descrición, dejando vacios los de fecha, y acepto. Una vez hecho esto, edito ese mismos registro. Me muestra la ventana insertar/editar. Añado datos en los campos que antes dejé vacío. esto es, fecha inicial y fecha final, doy a aceptar y NO ME LOS GUARDA. 4) Edito un registro que tiene datos en los campo fecha , me muestra la ventana insertar/editar, modifico las fechas, doy a aceptar, y me guarda las modificaciones . ==> Conclusión sólo me da problemas para modificar campos date que inicialmente estaban vacíos o es null. Este es el código SQL que tengo para ModifySQL del IBDataSet:
este el que tengo en el SelectSQL
esto es lo que tengo en insertSQL:
El código asociado al botón que me inserta un nuevo registro es:
y el que tengo asociado al botón editar es:
Espero que ahora esté más claro cual es mi problema. Gracias de ante mano a todos, Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :) |
#7
|
||||
|
||||
Cita:
Creo que el punto es que los valores NULL no pueden compararse con una igualdad. En tu sentencia UPDATE:
el valor de :OLD_FECHAINI será NULL en el caso problemático de manera que la condición realmente se ve así: FECHAINI = NULL pero esta condición siempre será falsa ya que la comparación con NULL se hace con el operador IS en lugar del operador de igualdad. En el caso de Paradox pude corregir el problema sustituyendo la condición por (FECHAINI = :OLD_FECHAINI or FECHAINI is null) Te repito que de Interbase no sé nada pero juraría que aquí está el problema: no encuentra el registro que hay que actualizar dado que la condición siempre valúa a FALSE. Espero que esto te ayude. // Saludos |
#8
|
||||
|
||||
El punto es que en el where de la sentencia del ModifySQL, debieran incluirse solamente los campos de la llave primaria, en el entendido que al ser de esta manera, los campos no serán null.
De cualqueir forma, con una serie de and's y or's podria hacerse funcionar de esta forma, pero no tiene sentido, pues la llave primaria es suficiente para identificar univocamente al registro. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#9
|
||||
|
||||
ups.. no habia visto esto...
Cita:
Me parece que la siguiente sentencia sería mas correcta (sin embargo puede dar lugar todavía a actualizaciones erroneas: Código:
and ((FechaIni = :or_fechaini) or ((fechaini is null) and (:old_fechaini is null))) Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate Última edición por jachguate fecha: 01-06-2004 a las 09:16:45. |
#10
|
|||
|
|||
Muchas gracias por la ayuda, efectivamente, parece que se ha solucionado cambiando el código del ModifySQL:
de modo que en el where sólo me muestra el campo que es primary key, pero no los otros campos que aparecían antes. No me había dado cuenta, que esos campos son por lo que quiero ordenar los registros, y que no son clave primaria, sino secundaria. Muchas gracias a todos por la ayuda. Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :) |
#11
|
||||
|
||||
Cita:
// Saludos |
|
|
|