FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Me da un error al dejar en blanco un campo en interbase
Hola todos,
disculpen una pregunta acerca de las inserciones en interbase 6.0, no lo habia notado, tengo un campo llamado Tel_cel, es decir que anteriorme se tomaba el mismo telefono de casa para capturalo en Tel_cel (telefono celular). Mi consulta es la siguiente select Id_user, nom, tel, tel_cel) from usuarios (Por decir estos campos...) pero ahora hay algunas personas que si tienen telefono celular y otras no, en mi tabla de usuarios los campo tel, y tel_cel son varchar(18) y son null que puedo dejar en blanco al hacer las inserciones. Resulta que al agregar un registo nuevo y dejo el campo tel_cel en blanco me da un error que dice que el valor de tel_cel debe ser llenado... entonces se queda trabada y me saca del programa por lo tanto lo que habia capturado no se graba, tengo los componetes Ibx y para actualizar los datos uso los componentes IbDataset, Ibtransacction, Ibsql ya programada en la propiedad insertsql del ibdataset algo como esto : Insert Into usuarios (Id_user, nom, tel, tel_cel) value (:Id_user, :nom, :tel, :tel_cel) En el Ibsql en la propiedad SQL algo como esto: Select max(id ) Next From usuarios Y por ultimo en el evento Onnewrecord escribo algo asi: with IBSQL1 do begin ExecQuery; ibdatasetId.Value := fieldByName('Next').AsInteger + 1; Close; end; Y en donde se coloca las lineas de confirmar los cambios CommitRetaining, RollbackRetaining lo que se denomina transsacciones Les agradeceria si me puedieran darme alguna solucion. |
#2
|
||||
|
||||
Mira yo pienso que tienes el campo validado para que no quede en nulo si es asi cuando crees las tablas quitale la validacion
Cita:
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#3
|
|||
|
|||
ok voy a revisar...
ok, eduarcol pero esto es referente a que cada campo tenga lo denominado Not null.
Por que para este campo solo lo defino como Tel_celular varchar(15) y listo Y cada vez que dejo en blanco este campo al ingresar un registro me arroja un error y me pide que sea evaluado. espero que me des otra idea gracias |
#4
|
||||
|
||||
Otra idea que se me ocurre es que el componente TField tenga la opcion de requiredfield como true
Solo si cargas los TField en el TDataSet
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#5
|
||||
|
||||
Para determinar si el problema está en el cliente o en el servidor, podes intentar insertar un registro con este campo a null desde isql. Si alli rebota, hay algo en el servidor que espera que tenga un valor.
Si allí pasa bien, entonces el problema está en tu programa de delphi. En cualquiera de los dos casos es extremadamente útil conocer el mensaje exacto de error (incluyendo códigos y clases de excepciones) que están involucrados. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#6
|
|||
|
|||
voy a verificar este mensaje de error . . .
Ok, saludos a todos.
Gracias eduarcol por esta idea voy a intentarlo con esta propiedad del Ibdatset. Y como dice jachguate voy apuntar el mensaje que me arroja al hacer inserciones de datos, Confirmare que sucede desde el lado del servidor interbase. Y comentare acerca de lo sucedido. Saludos y gracias |
#7
|
|||
|
|||
Hola, a todos, disculpen ustedes con respecto a este problemita que me arroja un error desde el programa es el siguiente:
error Project sistem.exe raised exception class EDatabaseerror with message 'Field Tel_cel' must have a value; process stoped use or Run to continue. Esto sucede cuando inserto registros y dejo alguno vacio, de acuerdo a lo que mencionaba jachguate que si venia del lado del servidor, pues comento, que hice unas inserciones directamente como esta Insert Into usuarios (Id_user, nom, tel, tel_cel) value (5, 'Juan Carl','58-854-85' ,'') como ve deje el ultimo campo vacio y me lo acepto y se agrego a la tabla, entonces es del lado del cliente, como mencionaba eduarcol en cada uno de los componente TField por parte del Ibdataset seleccione los campos y le asigne requiredfield como false y pude agregar registros con datos vacios como es el caso del campo tel_cel. Sin encambio cuando se desee tener campos que se deban llenar forzamente como lo es nombre_user por decirlo se puede hacer desde el evento del campo Onvalidate sin importar como esta definido el tipo de campo desde la Tabla, si es caracter if campo is null then un showmensaje('falta dato a evaluar'), para números y fechas seria el mismo codigo a seguir ? Saludos y gracias |
#8
|
||||
|
||||
Hola.
La verdad tu explicación está bastante enredada.. y creo que estas confundiendo algunas cosas. En primer lugar, una cadena vacia es distinto de NULL. De manera que si has puesto restricciones Not Null a algunos campos, estos SI te aceptarán cadenas vacias, pero no valores NULL. probá la sentencia: . El mensaje de error que mencionas Cita:
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#9
|
|||
|
|||
hola,
ok, gracias jachguate pero el mensaje que me arroja es de la aplicación, como lo mencione, y los campos de la tabla los defini como null, pero encontre la solucion con la propiedad Requiered a false del TField en el TDataSet. les agradesco mucho. Muchas gracias. |
|
|
|