Realizar consulta PHP sobre tabla vinculada access

Hola,

por diversos requerimientos, tengo un archivo Access (2007) con diversas tablas, algunas de ellas vinculadas con Oracle y tengo una conexión por ODBC que me permite, con php, atacar a dicho Access.

El problema está en que si hago una consulta sobre tablas vinculadas, esta no funciona (por el driver de conexión Access-Oracle, imagino).

¿Hay alguna forma de atacar mediante PHP las tablas vinculadas de un Access?
Gracias
Me temo que la única forma es mediante ODBC, ¿qué error ocurre cuando lo intentas?
No es mas facil tener las tablas en oracle y vincularlas en access y no al reves??? y atacar directamente en php al servidor de oracle
RC9 escribió:Me temo que la única forma es mediante ODBC, ¿qué error ocurre cuando lo intentas?


Warning: odbc_exec(): SQL error: [Microsoft][Controlador ODBC Microsoft Access] ODBC: error al conectar con 'EXPERT'., SQL state S1000 in SQLExecDirect in C:\wamp\www\prueba\src\MDW\logisticaBundle\clases\database.php line 33

concretamente hay un ODBC que me conecta el php a Access, eso funciona correcto.
Y luego la tabla vinculada de Access se conecta mediante "expert" a las tablas de Oracle...
Por eso salta la excepción, supongo. Yo tengo con ODBC de Access funcionando, pero cuando php abre el Access que debe a su vez abrir el Oracle... pues eso.

Karaculo escribió:No es mas facil tener las tablas en oracle y vincularlas en access y no al reves??? y atacar directamente en php al servidor de oracle

Sin duda. Pero mi jefe es un por saco y siempre quiere inventar lo raro y difícil.
Ya le he dicho que atacáramos directamente el Oracle, pero quiere hacerlo de esta forma...
Si no sale, desde luego acabaré atacando el Oracle.
Sigo sin entender mucho lo que quieres hacer.
Haber si me entero:
Tienes la tablas "físicas" en oracle.
Estas están vinculadas en access supongo que has probado a abrir, insertar, eliminar atributos y filas.
Desde el servidor de php con odbc te conectas a access,Esto lo has probado con tablas físicas de access y funciona pero con las vinculadas no.
Expert es el nombre o alias del servidor de la odbc???.

Despéjame las dudas.


Te cuento mi experiencia yo hacia antiguamente (como 10 años atras) aplicaciones de forma rápida (en un 1 o 2 dias) con access y sqlserver, access solo hacia de interfaz gráfica. Esta conexión la hacia normalmente por código en visual access y en algún caso con odbc, pero tu caso es distinto tu tienes un nivel mas, el php. Pero si tuvieras las tablas en oracle podrías interactuar entre php y oracle de forma simple (pero tu jefe no te deja la cuestión es porque??, es pregunta retórica)

Supongo que has creado una tabla primero en access y desde php has realizado una consulta y funciona. Luego has vinculado la tabla de oracle a access has vuelto a ejecutar la consulta y da fallo, si es así tienes 2 odbc o 1 odbc + código en visual access. Hay distintas odbc para configurar conectarte con una bbdd dependiendo del tipo de conexión que quieras oledb, si es una conexión tipo ado o dao.
Karaculo escribió:Sigo sin entender mucho lo que quieres hacer.
Haber si me entero:
Tienes la tablas "físicas" en oracle.
Estas están vinculadas en access supongo que has probado a abrir, insertar, eliminar atributos y filas.
Desde el servidor de php con odbc te conectas a access,Esto lo has probado con tablas físicas de access y funciona pero con las vinculadas no.

Exacto, lo has entendido perfectamente.

Expert es el nombre o alias del servidor de la odbc???.

Expert es el nombre del ODBC de Oracle. Cuando intento acceder a una vinculada de Access, salta la excepción que has visto.
Me da a mi que es problema de access mas que de odbc (aveces es muy puñetero) que no te la esta abriendo bien (posible problemas de permisos???? o lentitud de la respuesta del servidor con oracle que no creo).

Primero identificar donde esta el error, supongo que las tablas vinculadas desde access si se abren y puedes modificar registros.
Las físicas de access si las puedes consultar desde php.
Me da a mi que es problemas de odbc, microsoft recomienda el uso de sus odbc para acceder a oracle desde access.
Te dejo un tutorial de como configurarlo y nos comentas

http://www.tuinformaticafacil.com/oracle-11g/como-acceder-a-oracle-con-odbc
En Access las tablas se abren, modifican, etc, sin problema.

Miraré ese manual dentro de un rato, pero la verdad es que he seguido ya unos cuantos de instalación y configuración de ODBC y me suena que he hecho ese o similar...
Hay una pagina muy buena de access, busca la web de buho y en los foros hay gente que esta hinchada de hacer cosas raras con access y responden rapido.

Una cosa mas.

Prueba este codigo haber si muestra algun codigo de error.
<?php
// Se especifica la ubicación de la base de datos Access (directorio actual)
$db = getcwd() . "\\" . 'test.mdb';
// Se define la cadena de conexión
$dsn = "DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=$db";
// Se realiza la conexión con los datos especificados anteriormente
$conn = odbc_connect( $dsn, '', '' );
if (!$conn) { exit( "Error al conectar: " . $conn);
}
// Se define la consulta que va a ejecutarse
$sql = "SELECT * FROM Tabla";
// Se ejecuta la consulta y se guardan los resultados en el recordset rs
$rs = odbc_exec( $conn, $sql );
if ( !$rs ) { exit( "Error en la consulta SQL" );
}
// Se muestran los resultados
while ( odbc_fetch_row($rs) ) { $resultado=odbc_result($rs,"Campo"); echo $resultado; }
// Se cierra la conexión
odbc_close( $conn );
?>
8 respuestas