error en el campo _at

edited mayo 2008 in Bugs y Problemas
estoy trabajando con la version "kumbia-0.4.7a-stable.tar.gz"
y me presenta el siguiente error al intentar actualizar un registro
KumbiaDBException: Incorrect datetime value: '' for column 'fecha_at' at row 1 al ejecutar 'UPDATE empleados SET nombre = 'PEDRO PEREZ ',identificacion = '61111117 ',foto = 'upload/61111117.JPG',ubicaciones_id = '4',cargos_id = '81',centros_id = '91',huella = '',informar = '1',horarios_id = '3',comentario = '',estados_id = '1',fecha_in = '2008-04-10 18:23:23',fecha_at = '' WHERE id = '21040' '
Error Code: 1292
En el archivo D:\wamp\www\asistencia\forms\db\adapters\mysql.php en la línea: 135

#0 D:\wamp\www\asistencia\forms\db\active_record.php(1443): db->query('UPDATE empleado...')
#1 D:\wamp\www\asistencia\forms\db\active_record.php(1526): ActiveRecord->save()
#2 D:\wamp\www\asistencia\forms\controller\standard_form_controller.php(415): ActiveRecord->update()
#3 [internal function]: StandardForm->update()
#4 D:\wamp\www\asistencia\kumbia.php(201): call_user_func_array(Array, Array)
#5 D:\wamp\www\asistencia\public\index.php(76): Kumbia::main()
#6 {main}

Session Dump

null

en la tabla tengo ambos campos
fecha_in y fecha_at para realizar auditorias

pero presenta un error al intentar actualizar fecha_at, el campo en la tabla esta configurado para permitir nulos.

y utilizo un StandardForm con las siguientes configuraciones:
$this->ignore('fecha_in');
$this->ignore('fecha_at');

segun el manual de kumbia:
Los campos terminados en _at indican que son fechas y posee la funcionalidad extra que
obtienen el valor de fecha actual en una inserción

y el error sucede cuando se intenta "actualizar" el registro.

tengo php 5.2.5 y Mysql 5.0.45

supongo que es un bug.

para poder trabajar debi darle solucion editando el archivo:
forms\db\active_record.php en la linea 1373

y agregar la condicion para que omita este campo a la hora de actualizar. quedando asi
if(!in_array($np, $this->_at)){
    if(substr($this->$np, 0, 1) == "%"){
        $set.= "$np = ".str_replace("%", "", $this->$np).",";
    } elseif(!$this->is_a_numeric_type($np)){
        /**
         * Se debe especificar el formato de fecha en Oracle
         */
        if($this->data_type[$np] == 'date' && $config->database->type == 'oracle'){
            $set.= "$np = TO_DATE('".addslashes($this->$np)."', 'YYYY-MM-DD'),";
        } else {
            $set.= "$np = '".addslashes($this->$np)."',";
        }
    } else {
        if($this->$np !== ''&&$this->$np !== null){
            $set.= "$np = '".addslashes($this->$np)."'";
        } else {
            $set.= "$np = NULL";
        }
        $set.= ',';
    }
}


Saludos.

Comentarios

  • edited 8:15
    Correcto el error te sale porque los campos definidos como fecha_at son fecha que poseen la funcionalidad que obtienen el valor de la fecha actual en la insercion mas no en la actulizacion pues los que obtienen el valor de la fecha actual al momento de la actualizacion son los campos definidos como campo_in. Y aunque el campo fecha_at este declarado para permitir valores nulos el valor que esta obteniendo no es un null sino una cadena vacia por tal motivo te aparece la exception: --Incorrect datetime value: '' for column 'fecha_at'--. si ves mas adelante lo que esta reciviendo es : --fecha_at = ''--
  • edited 8:15
    Veo que usas la version 4... yo tengo el mismo problema pero en Kumbia 5, pero han cambiado el active_record.php a active_record_base.php y ahi no funciona el codigo q colocaste... no se como hacer tu modificacion en el 5, alguien puede ayudarme o indicarme??

    De antemano muchas gracias
  • edited 8:15
    Descarga la V0.5 que se encuentra actualmente en el svn, hubo varios cambios en activerecord, probablemente el problema ya ha sido resuelto.
  • edited 8:15
    Cambie a la ultima version 5 q esta en el svn, el problema de la fecha_at, desaparecio.... pero me salen muchos errores de este tipo
    Notice: Undefined index: Default in C:\xampp\htdocs\kumbia5\library\kumbia\db\active_record_base\active_record_base.php on line 752
    Notice: Undefined index: Default in C:\xampp\htdocs\kumbia5\library\kumbia\db\active_record_base\active_record_base.php on line 755

    Como hago para arreglarlo??

    Gracias x su respuesta
  • edited 8:15
    ya efectue la corrección en el svn.

    saludos
  • edited 8:15
    Emilio muchas gracias x tu colaboracion... con lo anterior se arreglo...

    Siento ser el "pain in the ass" <!-- s:? --><img src="{SMILIES_PATH}/icon_confused.gif" alt=":?" title="Confused" /><!-- s:? --> ... pero resulta q al colocar:
    $this->show_not_nulls();
    Me salen estos errores
    Notice: Undefined index: valueType in C:\xampp\htdocs\kumbia5\library\kumbia\generator\standard.build.php on line 246

    Notice: Undefined index: notNull in C:\xampp\htdocs\kumbia5\library\kumbia\generator\standard.build.php on line 246

    Gracias... x ayudarme.. de saber cual es el error lo haria yo mismo... o si es posible explicarme... con eso podria tambien a arreglar mis propios errores y colaborar con Kumbia mas adelante...

    Gracias de antemano
  • edited 8:15
    El error se manifiesta al utilizar standarform?
  • edited 8:15
    Si emilio
  • edited 8:15
    Ok, estaremos trabajando en eso, aun hay partes del framework que se estan migrando para que funcionen bajo error_reporting E_STRICT y asimismo standardform se esta ajustando para el soporte a multiples conexiones a bd.
  • edited 8:15
    Ok estare atento a los cambios
Sign In or Register to comment.