PHP - recuperar registros con adodb por fechas de una tabla dbf

 
Vista:

recuperar registros con adodb por fechas de una tabla dbf

Publicado por martin (55 intervenciones) el 02/08/2012 15:32:58
Hola:

Estoy trabajando con adodb, php y una tabla dbf llamada SGMOVIMIENTOS, en esta tabla tengo varias columnas entre ellas una llamada CODIGO y otra llamada FECHA.

Necesito recuperar los registros por medio de la fecha y en la tabla SGMOVIMIENTOS la fecha se encuntra de la siguiente manera: 01.08.2012 de esta manera cada registro presenta la fecha con este formato (dd.mm.yyyy separadas por puntos ) y al intentar recuperar los registros por medio de la fecha me da un error

este es el codigo

// conexion con la tabla
$conn = new COM("ADODB.Connection");
$conn->Open("Provider=vfpoledb.1; Data Source=C:/SISTEMAS/Operaciones/Datos/sgmovimientos.DBF; Collating Sequence=GENERAL");

//aca intento recuperar los registros y me da un error
$ma_sql = "SELECT COUNT(*) FROM sgmovimientos WHERE fecha = 01.08.2012 ";

Como puedo hacer para recuperar los registros por medio de la fecha respetando el formato de la fecha 01.08.2012

Alguien me puede ayudar? Como seria el codigo final?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

recuperar registros con adodb por fechas de una tabla dbf

Publicado por xve (6935 intervenciones) el 02/08/2012 17:30:20
Hola Martin, que error te da??

Puede ser que la fecha tenga que ir entre comillas?? algo así:
$ma_sql = "SELECT COUNT(*) FROM sgmovimientos WHERE fecha = '01.08.2012' ";

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

recuperar registros con adodb por fechas de una tabla dbf

Publicado por martin (55 intervenciones) el 02/08/2012 20:12:59
Este es el error que me da ( el codigo esta en la linea 19 ):

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft OLE DB Provider for Visual FoxPro<br/><b>Description:</b> Command contains unrecognized phrase/keyword.' in C:\xampp\htdocs\ges\asistencia\asistencia.php:19 Stack trace: #0 C:\xampp\htdocs\ges\asistencia\asistencia.php(19): com->Execute('SELECT COUNT(*)...') #1 {main} thrown in C:\xampp\htdocs\ges\asistencia\asistencia.php on line 19

Ya probe poniendo la fecha entre comillas y tampoco funciona

$consulta = "SELECT COUNT(*) from sgmovimientos WHERE FECHA = 01.08.2012 ";

Por cualquier campo puedo recuperar pero menos por la fecha
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

recuperar registros con adodb por fechas de una tabla dbf

Publicado por xve (6935 intervenciones) el 02/08/2012 20:47:31
Hola Martin, si haces un select count de toda la tabla te funciona??
$consulta = "SELECT COUNT(*) from sgmovimientos"

Lo digo, para saber si es problema del condicional. Si te funciona, prueba:
$consulta = "SELECT COUNT(*) from sgmovimientos WHERE FECHA = '2012-08-01' ";

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

recuperar registros con adodb por fechas de una tabla dbf

Publicado por martin (55 intervenciones) el 02/08/2012 21:41:21
funciona sin ningungun problema, recupero 32.000 registros en 8 seg, ya probe y no funciona, me sige dando el error en la segunda linea

$consulta = "SELECT COUNT(*) from sgmovimientos WHERE FECHA = '01-08-2012' ";
$datos = $conn->Execute($consulta);
$cantidad_filas = $datos->fields[0];
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

recuperar registros con adodb por fechas de una tabla dbf

Publicado por xve (6935 intervenciones) el 03/08/2012 08:00:56
Hola Martin, porque el campo fecha de tu base de datos existe verdad?? y esta en mayúsculas... es decir el campo es FECHA, no Fecha o fecha...
El error que da, es unrecognized phrase/keyword

Es lo único que se me ocurre... me puedes informar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

recuperar registros con adodb por fechas de una tabla dbf

Publicado por martin (55 intervenciones) el 03/08/2012 14:14:15
Verdaderamente el campo existe y es FECHA ( todo en mayusculas ), pero tambien tengo otro campo llamado MOVIMIENTO y lo pongo en mayusculas y en minusculas y funciona sin ningun problema.

Estube investigando y generalmente las bases de datos tienen problemas a la hora de realizar los select cuando las fechas se guardan en la base con este formato dd/mm/yyyy, en mi dbf las fechas se guardarón asi 01.08.2012.

Pero encontre por ahi un problema similar al mio con php, ado y oracle y se soluciono con una función llamada NLS_DATE_FORMAT y se pasa este parametro en la parte de la conección con la bd, te paso la referencia:

http://programming.itags.org/php/224066/ tambien esta por ahi en español

A lo mejor para php, ado y fox pro existe una función similar, este es mi codigo:


$conn = new COM("ADODB.Connection");
$conn->Open("Provider=vfpoledb.1; Data Source=C:/SISTEMAS/Operaciones/Datos/sgmovimientos.DBF; Collating Sequence=GENERAL");

//realizo un conteo de la cantidad de registros que recupero de la base de datos
$consulta = "SELECT COUNT(*) from sgmovimientos WHERE FECHA=01.08.2012";
$datos = $conn->Execute($consulta); //aca me indica el error que me da mas abajo
$cantidad_filas = $datos->fields[0];

//recupero los registros que voy a mostrar
$mostrar = "SELECT * from sgmovimientos";
$imprimir = $conn->Execute($mostrar);

//imprimo uno a uno los registros que recupere
for($i=0; $i<=$cantidad_filas; $i++)
{
$nombre = $imprimir->fields["codigo"];

printf("guardia:%s indice:%s <br>",$nombre,$i);
$imprimir->MoveNext();
}

//cierro las diferentes conecciones que abri
$conn->Close();
$datos->Close();
$imprimir->Close();

ESTE ES EL ERROR QUE ME TIRA

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft OLE DB Provider for Visual FoxPro<br/><b>Description:</b> Command contains unrecognized phrase/keyword.' in C:\xampp\htdocs\ges\asistencia\asistencia.php:22 Stack trace: #0 C:\xampp\htdocs\ges\asistencia\asistencia.php(22): com->Execute('SELECT COUNT(*)...') #1 {main} thrown in C:\xampp\htdocs\ges\asistencia\asistencia.php on line 22
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

recuperar registros con adodb por fechas de una tabla dbf

Publicado por yessenia (2 intervenciones) el 09/10/2012 17:35:39
¿Siempre sí pudiste solucionarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar