cMyFile =allt(thisform.text1.value)
myMDBdata=allt(thisform.text2.value)+'myMDBdata'
IF !EMPTY(cMyFile) or len(cMyFile)>5
IF JUSTEXT(cMyFile)#"MDB" &&获得文件扩展名
=MESSAGEBOX("您选择的不是Access数据库文件!",0+48,"错误")
deac wind b1
RETURN
ENDIF
** 用 SQLStringConnect 来联接到 MDB 文件
nConnHandle = ;
SQLSTRINGCONNECT('DRIVER=MICROSOFT ACCESS DRIVER (*.MDB);DBQ=' + cMyFile)
IF nConnHandle > 0
nResult = SQLTABLES(nConnHandle, 'TABLE') &&要知道哪些表包含在 MDB 文件中
IF nResult > 0
if direc('&myMDBdata')
else
mkdir &myMDBdata
endi
set path to &myMDBdata &&用于指定查找文件的目录。用逗号或分号隔开不同的目录。
seT DEFAULT TO &myMDBdata &&指定默认的驱动器、目录或文件夹。
CREATE DATABASE mynew &&创建一个名为 "MYNEW" 的新的 .DBC 文件
SELECT SQLResult &&选择 SQLResult 并遍历游标
SCAN
** 生成一个 SQL SELECT 语句来传递到 SQLEXEC()
cSQLCommand = ;
"SELECT * FROM [" + ALLTRIM(SQLResult.table_name) + "]"
nGetData = SQLEXEC(nConnHandle,cSQLCommand,'newdata')
IF nGetData > 0 &&SQLEXEC() 执行成功
**将含有空格的长文件名替换成下画线连接
cNewName = STRTRAN(ALLTRIM(SQLResult.table_name), " ", "_")
SELECT newdata
COPY TO (cNewName) DATABASE MyNew &&将临时表保存到数据库中
ENDIF
ENDSCAN
ENDIF
=SQLDISCONNECT(nConnHandle) &&完成获取数据,断开连接
* MODIFY DATABASE MyNew &&打开数据库设计器
close data all
=MESSAGEBOX(' 数据转换成功!!', 48, 'Ok')
deac wind b1
ELSE
=MESSAGEBOX('ODBC 连接失败', 48, 'ODBC') &&SQLStringConnect 失败
ENDIF
else
=MESSAGEBOX("您选择的不是Access数据库文件!",0+48,"错误")
retu
ENDIF