设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1749|回复: 2
打印 上一主题 下一主题

[其它] [求助]如何在客户端自动创建ODBC数据源?

[复制链接]
跳转到指定楼层
1#
发表于 2006-6-17 16:54:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上次人,我转发了篇文章,是关于access在局域网中的应用

效果很不错,可以不学adp或是sql就可以得到sql引擎的稳定功能

但新增用户使用时,每次都需要在其机器上手动建立ODBC数据源

不知是否有更快速的方法?

我猜想这个只是一个配置文件类似的,

可能只需要将此文件一同打包进安装程序就可以

但不知从何下手。

高人,帮我看看。非常感谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2006-6-17 17:58:00 | 只看该作者
下面这个不知如何用到access里面

//uf_create_anywhere_odbc(as_conn_name,as_database_name,as_database_filename,as_app_path,as_window_path)
/*
as_conn_name //连接名
as_database_filename//数据据名
as_app_path//应用程序名
as_window_path//windows目录名
lzq2003年5月3日编写动态创建anywhere ODBC连接
*/



string ls_reg_key



environment lenv_env
if ( GetEnvironment(lenv_env) <> 1 ) then
lenv_env.ostype=windowsnt!
end if
choose case lenv_env.ostype
case windows!
ls_reg_key="HKEY_USERS\.DEFAULT\Software\ODBC\ODBC.INI\" +as_conn_name


RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", as_conn_name, RegString!, "Sybase SQL Anywhere 5.0")
RegistrySet(ls_reg_key, "Driver", RegString!, as_app_path+"\wod50t.dll")
RegistrySet(ls_reg_key, "UID", RegString!, "")
RegistrySet(ls_reg_key, "WD", RegString!, "")
RegistrySet(ls_reg_key, "Start", RegString!, as_app_path+"\dbeng50.exe -d -Q -c512 ")
RegistrySet(ls_reg_key, "DatabaseFile", RegString!, as_app_path+"\" + as_database_filename)
RegistrySet(ls_reg_key, "DatabaseName", RegString!, as_database_name)
RegistrySet(ls_reg_key, "AutoStop", RegString!,"yes")
RegistrySet(ls_reg_key, "Description", RegString!,as_conn_name)
RegistrySet(ls_reg_key, "Agent", RegString!,"engine")
RegistrySet(ls_reg_key, "EngineName", RegString!,"dbeng50")


case windowsnt!
RegistryDelete("HKEY_USERS\.DEFAULT\Software\ODBC\ODBC.INI\" +as_conn_name, "")
case else
MessageBox( "提示信息", &
"应用程序只能运行在windows操作系统上!" )
RETURN

end choose


ls_reg_key="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\" +as_conn_name


RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", as_conn_name, RegString!, "Sybase SQL Anywhere 5.0")
RegistrySet(ls_reg_key, "Driver", RegString!, as_app_path+"\wod50t.dll")
RegistrySet(ls_reg_key, "UID", RegString!, "")
RegistrySet(ls_reg_key, "WD", RegString!, "")
RegistrySet(ls_reg_key, "Start", RegString!, as_app_path+"\dbeng50.exe -d -Q -c512 ")
RegistrySet(ls_reg_key, "DatabaseFile", RegString!, as_app_path+"\" + as_database_filename)
RegistrySet(ls_reg_key, "DatabaseName", RegString!, as_database_name)
RegistrySet(ls_reg_key, "AutoStop", RegString!,"yes")
RegistrySet(ls_reg_key, "Description", RegString!,as_conn_name)
RegistrySet(ls_reg_key, "Agent", RegString!,"engine")
/egistrySet(ls_reg_key, "EngineName", RegString!,"dbeng50")


setProfileString (as_window_path+"\ODBC.INI", "ODBC 32 bit Data Sources", as_conn_name,"Sybase SQL Anywhere 5.0 (32 位)")
setProfileString (as_window_path+"\ODBC.INI",as_conn_name, "Driver32",as_app_path+"\wod50t.dll")
3#
 楼主| 发表于 2006-6-17 18:00:00 | 只看该作者
DECLARE INTEGER SQLConfigDataSource IN ODBCCP32.DLL;
        INTEGER hwndParent, INTEGER fRequest, string lpszDriver, string lpszAttributes

local strdriver
local strattributes

strdriver="Microsoft Access Driver (*.mdb)"
strattributes="DSN=laker; Description=LAKER ACCESS; DBQ=d:\laker\newproject\db1.mdb; FIL=Microsoft Access; DEFAULTDIR=d:\laker"
            
bol=SQLConfigDataSource(0,1,strdriver,strattributes)

IF bol <= 0
   = MESSAGEBOX('Cannot make connection', 16, 'SQL Connect Error')
ELSE
   = MESSAGEBOX('Connection made', 48, 'SQL Connect Message')
ENDIF


這是用 api 方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-21 23:36 , Processed in 0.109242 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表