OK, thanks, at least I know that the function works fine then in sqlite3.dll. Problem must be on my side then.
This is the code in the Std_Call dll: SQLITE3_STDCALL_API const char * __stdcall sqlite3_stdcall_db_filename(sqlite3 *pDb, const char *zDbName) { return sqlite3_db_filename(pDb, zDbName); } And this is the Declare in VBA: Public Declare Function sqlite3_stdcall_db_filename Lib "SQLite3_StdCall" Alias "_sqlite3_stdcall_db_filename at 8" (ByVal hDBHandle As Long, ByVal lPtrAttachedDBName As Long) As Long Anything wrong with either of these? RBS On Thu, Oct 8, 2015 at 9:40 AM, Dan Kennedy <danielk1977 at gmail.com> wrote: > On 10/08/2015 03:51 AM, Bart Smissaert wrote: > >> As I understand it this should produce a filepointer to the filepath of >> the >> attached database, given the database handle of file the other database >> was >> attached to and the database name of the attached database. I checked all >> the return values and also did a select involving tables in both >> databases and all goes fine, so I can be sure that the other database is >> attached OK. >> All I get from sqlite3_db_filename is zero, so no valid file pointer. No >> error messages though. >> >> I am accessing sqlite3.dll (Windows 7) via a std_call dll as I am working >> in VBA here. >> >> Any suggestions what could be the problem? >> >> I am running 3.8.11.1 >> >> > The program below works here. > > I'm seeing full paths for databases "main" and "aux", and a zero-length > nul-terminated string for "next" (the in-memory database). > > Dan > > ----------------------------------------------------- > > > > #include <sqlite3.h> > #include <stdio.h> > #include <stdlib.h> > > int main(int argc, char **argv){ > int rc; > sqlite3 *db; > > rc = sqlite3_open("test.db", &db); > if( rc!=SQLITE_OK ){ > fprintf(stderr, "sqlite3_open: %s\n", sqlite3_errmsg(db)); > exit(1); > } > > rc = sqlite3_exec(db, "ATTACH 'other.db' AS 'aux'", 0, 0, 0); > if( rc!=SQLITE_OK ){ > fprintf(stderr, "sqlite3_exec: %s\n", sqlite3_errmsg(db)); > exit(1); > } > > rc = sqlite3_exec(db, "ATTACH ':memory:' AS 'next'", 0, 0, 0); > if( rc!=SQLITE_OK ){ > fprintf(stderr, "sqlite3_exec: %s\n", sqlite3_errmsg(db)); > exit(1); > } > > printf("main db is: %s\n", sqlite3_db_filename(db, "main")); > printf("aux db is: %s\n", sqlite3_db_filename(db, "aux")); > printf("next db is: %s\n", sqlite3_db_filename(db, "next")); > > return 0; > } > > _______________________________________________ > sqlite-users mailing list > sqlite-users at mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >