[Resuelto] Ayuda: php+access+campo memo

Iniciado por CeLaYa, 8 Septiembre 2015, 02:06 AM

0 Miembros y 1 Visitante están viendo este tema.

CeLaYa

Buenas tardes, recien empiezo en la programación con php y me he topado con un problema: los campos memo, mi problema es que no puedo leer el valor del campo, si leo cualquier otro campo ya sea de texto corto, fecha, número no hay problema

he buscado pero no he encontrado porque se da este comportamiento, ¿hay alguien que me pueda ayudar?

estoy usando un ODBC que se conecta a una base de datos del Access 2013. el código que tengo es el siguiente:

para conectar la BD:

Código (php) [Seleccionar]
   function conexion(){

   $conn=odbc_connect('auxAdmin','','');//DSN, usuario, password

   if (!$conn){
       exit("Falló conexion: " . $conn);
   }

   return($conn);

   }


Para leer los campos:

Código (php) [Seleccionar]
   // inicializa las variables
   $os = "";
   $cliente = "";
   $agente = "";
   $estatus = "";
   $fecha_solicitud="";
   $idOS=0;
   $fecha_atencion="";
   $fecha_cierre="";
   $t_respuesta="";
   $solicitud ="";
   
   //crea la conexión a la base de datos
   $conn=conexion();
   
   if(isset($_POST["txtOS"]))
   {
       $folioOS = $_POST["txtOS"];
       
       //valida el valor a buscar
       $pos = strpos($folioOS, "-");
       if ($pos == false){
           $folioOS ="A-0000";
           echo "<script languaje= 'javascript'> alert('El folio de la OS no es válido, verifique sus datos e intente nuevamente.'); </script>";
       }

       $parametros = explode ("-", $folioOS, 5);

       //Obtiene los datos de la OS
       $sql = "SELECT c.ccodigoc01 AS Codigo, c.crazonso01 AS Cliente, u.ClaveAdministradorGarantia AS CodAgente, u.NombreAdministradorGarantia AS Agente,
               OS.SerieOS, OS.FolioOS, e.Estatus, OS.idOS, Format(FechaRec,'dd/mm/yyyy') & ' ' & Format(HoraRec,'Short Time') AS fecha_solicitud,
               Format(cierre.FechaEvento,'dd/mm/yyyy') & ' ' & Format(cierre.HoraInicio,'Short Time') AS fecha_cierre,
               Format(atn.FechaEvento,'dd/mm/yyyy') & ' ' & Format(Atn.HoraInicio,'Short Time') AS fecha_atn,
               left(OS.SolicitudCliente,len(trim(OS.SolicitudCliente))) as Solicitud
               FROM ((((OS INNER JOIN Clientes AS c ON OS.idCliente = c.cidclien01)
               INNER JOIN Usuarios2 AS u ON OS.AgenteResp = u.ClaveAdministradorGarantia)
               INNER JOIN osEstatus AS e ON OS.EstatusOS = e.Id)
               LEFT JOIN OSBitacora AS cierre ON (OS.idOS = cierre.idOS AND cierre.Estatus = 8))
               LEFT JOIN OSBitacora AS atn ON (OS.idOS = atn.idOS AND atn.Evento = 1 AND atn.Ciclo = 1)
               WHERE OS.SerieOS = '" . $parametros[0] . "'" . " AND OS.FolioOS = " . $parametros[1] . ";";
       //echo $sql;

       $rs=odbc_exec($conn,$sql);

       if (!$rs){
           echo "Error";
           exit("Error in SQL");

       }
       else
       {
           $os = odbc_result($rs, "SerieOS");
           $os .= '-';
           $os .= sprintf("%04d", odbc_result($rs, "FolioOS"));

           $cliente = odbc_result($rs,"Codigo");
           $cliente .= ' - ';
           $cliente .= odbc_result($rs,"Cliente");

           $agente = sprintf("%03d", odbc_result($rs, "CodAgente"));
           $agente .= ' - ';
           $agente .= odbc_result($rs,"Agente");

           $estatus = odbc_result($rs, "Estatus");
           $idOS = odbc_result($rs, "idOS");
           $fecha_solicitud = odbc_result($rs, "fecha_solicitud");

           $fecha_atencion = odbc_result($rs, "fecha_atn");
           if ($fecha_atencion != " "){
               $fecha_atencion .= Calcula_Tiempo_Respuesta($conn, $fecha_solicitud, $fecha_atencion);
               
           }
           else{
               $fecha_atencion = "Este servicio aún no ha sido atendido";
           }
           
           $fecha_cierre = odbc_result($rs, "fecha_cierre");
           if ($fecha_cierre != " "){
               $fecha_cierre .= Calcula_Tiempo_Solucion($conn, $fecha_solicitud, $fecha_cierre);
               
           }
           else{
               $fecha_cierre = "Este servicio aún no ha sido cerrado";
           }
               
          [color=red][font=Verdana] $solicitud = odbc_result($rs, "Solicitud");[/font][/color]
           
       }


el problema es la linea $solicitud = odbc_result($rs, "Solicitud"); solo me regresa el valor "1"

Mod: Obligatorio el uso de etiquetas GeSHi. Temas sobre PHP van al subforo de PHP.
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

someRandomCode

Estas seguro que existe un campo "Solicitud" (case sensitive) en la DB?
O que el valor que estas levantando no es el correcto?

CeLaYa

Buenos días someRandomCode, gracias por contestar, estuve investigando y al parecer no es tanto problema de PHP parece que es de Access, al realizar una consulta con varias tablas Access trunca los campos memo, realice una consulta en access y la ejecuta bien, pero si hago un form con un control enlazado a la consulta me muestra solo basura en campos memo, al parecer es un bug ya identificado por microsoft.

Lo que finalmente hice es hacer una consulta por separado para obtener el valor del campo "solicitud" ya que cuando hago una consulta sobre una sola tabla el error no se presenta (cosa rara ), no se si sea el metodo más profesional, pero al menos funciona.
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.