PDA

View Full Version : QODBC on Wine LINUX not connect



patrik08
1st May 2007, 20:49
I have build moore as 10 application on window and all running on Wine LINUX http://www.winehq.com/ on installer and so... whitout crasch or soo..

Now i try to convert access db on a console apps and cant not connect Why?

http://www.dependencywalker.com/ depend.exe not find moore dll wo i can insert...



/* convert stupid access to sqlite3 */
void RegDB::SetDbFile( const QString dbfile )
{
#if defined Q_WS_MAC
std::cout << "### Error MAC not having QODBC Microsoft Access Driver. Use WINE or similar." << std::endl;
return;
#endif
#if defined Q_WS_X11
std::cout << "### Error Linux not having QODBC Microsoft Access Driver. Use WINE or similar." << std::endl;
return;
#endif
#if defined Q_WS_WIN
std::cout << "### Wait... Load QODBC Microsoft Access." << std::endl;
#endif

QStringList drivers = QSqlDatabase::drivers();
if (!drivers.contains("QODBC")) {
std::cout << "### Load QODBC Microsoft Access Driver Fail!." << std::endl;
return;
}

const QString command = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1").arg(dbfile);
QFileInfo fi(dbfile);
FileName = fi.fileName();
newsqlite3DB = QString("%1.sqlite3").arg(fi.baseName()); /* temp database sqlite3 binary */
newsqlite3_DUMPDB = QString("%1.sql").arg(fi.baseName()); /* dump file sql text to gz */
db0 = QSqlDatabase::addDatabase("QODBC");
db0.setDatabaseName(command);


if (db0.open()) {
std::cout << "### Microsoft Access Driver =" << db0.open() << std::endl;
} else {
std::cout << "Error file Microsoft Access Driver DBAccessOpen=" << db0.open() << std::endl;
return;
}
std::cout << "### Wait.. Convert Microsoft Access to SQLITE3...." << std::endl;
}

marcel
1st May 2007, 21:06
If you have the time, maybe you can try Process Explorer from http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx

It also lists program dependencies dynamically, but this one is known to really work. Probably you will have to run your program in debug( step by step) and look in PE to see what it loads/unloads.

Regards

patrik08
2nd May 2007, 10:50
If you have the time, maybe you can try Process Explorer from http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx

It also lists program dependencies dynamically, but this one is known to really work. Probably you will have to run your program in debug( step by step) and look in PE to see what it loads/unloads.

Regards

I try to compile static ( i have two qt4 version dir D:qt && d:qts and qts ist static) but no way this odbc access is a hard nut or Microsoft have bad access db!


the console app on wine:


$ wine aconvert.exe -mdb lastreg.mdb
### Wait... Load QODBC Microsoft Access.
QODBCDriver::open: Unable to allocate environment Error:
QODBCDriver::open: Unable to allocate environment Error:
Error file Microsoft Access Driver DBAccessOpen=0



Other graphical odbc run

wine odbc_wizard.exe

&& display odbc driver + mysql + sqlite


The binary console app is inside
http://ppk.ciz.ch/qt_c++/odbc/odbc_wiz_installer2.2.6.exe


I suppose only graphical qt apps can run on linux wine....:confused:

i try now the other ProcessExplorer on win to see if other dll is load....

patrik08
2nd May 2007, 14:42
the are no way to run QODBC on linux wine exe.. or a apps to grab microsoft access && convert to sqlite.. (on linux or wine) and -static only sqlite can build... & run.

the is a Black Day wo Microsoft as Born Access DB format...:mad:

Only http://sourceforge.net/projects/mdbtools/ can read this black file on linux! and return a
CSV like text format...

but if you put to mdbtools a new access from 2003 nothing convert...

Only window os can convert Microsofti access db file!