Paulo,
As classes de conexão do FormDin não tem esta opção, mas é simples de altera-la para suportar o access caso o driver PDO_ODBC funcione bem.
Meu conselho é testar primeiro a conexão com PDO_ODBC sem utilizar a classe do FormDin mesmo.
Ativei o driver PDO_ODBC no meu php.ini ( extension=php_pdo_odbc.dll ), veja no phpinfo() se o driver foi realmente carregado depois de reinicar o apache, criei um banco de dados chamado db1.mdb e consegui fazer um select na tabela UF sem problemas.
Veja como ficou meu código:
try {
//http://www.connectionstrings.com/microsoft-access-accdb-odbc-driver/
$arquivoAccess = realpath( __DIR__).'\access\bd1.mdb';
$dbh = new PDO('odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq='.$arquivoAccess.';Uid=;Pwd=');
/*** echo a message saying we have connected ***/
echo 'Connected to database<br />';
/*** The SQL SELECT statement ***/
$sql = "SELECT * FROM uf";
/*** fetch into an PDOStatement object ***/
$stmt = $dbh->query($sql);
/*** echo number of columns ***/
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
/*** loop over the object directly ***/
echo '<pre>';
foreach($result as $key=>$val)
{
echo $key.' - '.print_r($val,true).'<br />';
}
echo '</pre>';
/*** close the database connection ***/
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
Abraço.
fiz assim e conectou, pode melhorar? Mudei la no tpdoconection e usei o dao/vo
case 'ACCESS':
if ( !defined( 'DATABASE' ) )
{
$configErrors[] = 'Falta informar o DATABASE';
}
$driver = 'odbc:Driver={Microsoft Access Driver (*.mdb)}';
self::$dns = $driver.';Dbq='.DATABASE.';Uid=Admin;Pwd=senha';
break;
coloquei na conexao
define('BANCO','ACCESS');
define('DATABASE','c:\diretorio\arquivo.mdb');
define('HOST', ' ')
Ta funcionando so acho que poderia ver alguma coisa em relacao a senha, pra colocar tambem no define
define('SENHA', 'xxxxx')
nao to descobrindo onde colocar
Dei bobeira com a senha era tao facil que eu nao vi rsrsrsrs
ve se é assim:
case 'ACCESS':
if ( !defined( 'DATABASE' ) )
{
$configErrors[] = 'Falta informar o DATABASE';
}
// Dica de Reinaldo A. Barrêto Junior para utilizar o sql server no linux
$driver = 'odbc:Driver={Microsoft Access Driver (*.mdb)}';
//'odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq='.$arquivoAccess.';Uid=Admin;Pwd=pedo39'
self::$dns = $driver.';Dbq='.DATABASE.';Uid=Admin;Pwd='.SENHA;
break;
Conexao:
define('BANCO','ACCESS');
define('DATABASE','c:\arquivo.mdb');
define('HOST', ' ');
define('SENHA','senha');
77 comentários
As classes de conexão do FormDin não tem esta opção, mas é simples de altera-la para suportar o access caso o driver PDO_ODBC funcione bem.
Meu conselho é testar primeiro a conexão com PDO_ODBC sem utilizar a classe do FormDin mesmo. Ativei o driver PDO_ODBC no meu php.ini ( extension=php_pdo_odbc.dll ), veja no phpinfo() se o driver foi realmente carregado depois de reinicar o apache, criei um banco de dados chamado db1.mdb e consegui fazer um select na tabela UF sem problemas. Veja como ficou meu código: try { //http://www.connectionstrings.com/microsoft-access-accdb-odbc-driver/
$arquivoAccess = realpath( __DIR__).'\access\bd1.mdb';
$dbh = new PDO('odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq='.$arquivoAccess.';Uid=;Pwd='); /*** echo a message saying we have connected ***/
echo 'Connected to database<br />'; /*** The SQL SELECT statement ***/
$sql = "SELECT * FROM uf"; /*** fetch into an PDOStatement object ***/
$stmt = $dbh->query($sql); /*** echo number of columns ***/
$result = $stmt->fetchAll(PDO::FETCH_ASSOC); /*** loop over the object directly ***/
echo '<pre>';
foreach($result as $key=>$val)
{
echo $key.' - '.print_r($val,true).'<br />';
}
echo '</pre>'; /*** close the database connection ***/
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
} Abraço.
if ( !defined( 'DATABASE' ) )
{
$configErrors[] = 'Falta informar o DATABASE';
}
$driver = 'odbc:Driver={Microsoft Access Driver (*.mdb)}';
self::$dns = $driver.';Dbq='.DATABASE.';Uid=Admin;Pwd=senha';
break;
coloquei na conexao define('BANCO','ACCESS');
define('DATABASE','c:\diretorio\arquivo.mdb');
define('HOST', ' ')
if ( !defined( 'DATABASE' ) )
{
$configErrors[] = 'Falta informar o DATABASE';
} // Dica de Reinaldo A. Barrêto Junior para utilizar o sql server no linux
$driver = 'odbc:Driver={Microsoft Access Driver (*.mdb)}';
//'odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq='.$arquivoAccess.';Uid=Admin;Pwd=pedo39'
self::$dns = $driver.';Dbq='.DATABASE.';Uid=Admin;Pwd='.SENHA;
break; Conexao: define('BANCO','ACCESS');
define('DATABASE','c:\arquivo.mdb');
define('HOST', ' ');
define('SENHA','senha');