标题:未发现数据源名称并且未指定默认驱动程序
只看楼主
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
结帖率:96.15%
已结贴  问题点数:20 回复次数:13 
未发现数据源名称并且未指定默认驱动程序
花了好长时间终于断断续续开发完一个VFP程序了,在自己电脑上调试基本结束了,编译完后在其他电脑上运行却出现:[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序,我在数据库连接中设置的ODBC连接为什么不可用呢?
按网上说的没配置ODBC数据源,我在“控制面板-管理工具-ODBC数据源管理”里手动添加后可以成功运行,现在问题是程序到时候会给多人使用,一个个手动设置太麻烦了,请问可以在主文件程序中添加自动设置ODBC吗?
下面是手动设置中用到的信息:
数据源驱动程序:sql server
数据源命名:mssql
数据源描述:mssql
您想连接哪一个sql server:file\SQL2008
登录id:sa
登录密码:123456
其他设置默认。
搜索更多相关主题的帖子: 数据库连接 控制面板 管理工具 server 数据源 
2016-12-19 15:21
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:15 
你连接sql server是用视图的吧,要是用SPT方式,就可以动态连接。设置ODBC就不知道,也许吹版主知道。
2016-12-19 15:32
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
网上找的“动态添加ODBC数据源”,没测试
http://blog.
2016-12-19 15:48
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
http://biancheng.dnbcw.info/sql/59485.html
2016-12-19 15:49
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用tlliqi在2016-12-19 15:49:56的发言:

http://biancheng.dnbcw.info/sql/59485.html


*!* vfp建立ODBC数据源
*!* 作者:tianxia_xiangyu 和数据库相关
*!* 动态数据源

DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING
lnWindowHandle=0
lcODBCDriver='SQL Server'      &&DRIVER类型
lcODBCName='Server'      &&数据源名字
lcODBCDesc='Shared Data Source' &&数据源描述
lcODBCServer=lcPCName   &&SQL SERVER名字
lcODBCDatabase='Test'   &&要连接的数据库名字
**先试图修改已有的ODBC,如果不存在,返回0。
lreturn=SQLConfigDataSource(lnWindowHandle, 2, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
IF lreturn=0 &&不存在.添加新的ODBC
 lreturn=SQLConfigDataSource(lnWindowHandle, 1, lcODBCDriver, 'DSN=';
  + lcODBCName + CHR(0) ;
 + 'Description=' + lcODBCDesc + CHR(0) ;
 + 'Server=' + lcODBCServer + CHR(0) ;
 + 'Database=' + lcODBCDatabase + CHR(0))

   IF lreturn=0  &&失败

   MessageBox('添加ODBC数据源失败',16,'BUFFER')
 ENDIF
ENDIF
2016-12-19 15:54
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
得分:0 
回复 2楼 mywisdom88
谢谢,最后一篇文章我也找到了,主要不知道这些代码要放在哪里。
代码中的“lcODBCDatabase='Test'   &&要连接的数据库名字 ”也让我很迷惑,我连接的数据库不止一个,难道代码要重复几次?手动明明只要添加一次就可以了
整个程序开始全都是用远程视图连接的sql server,编译后因为部分表单打不开提示连接冲突才开始学spt,用了之后就后悔没早点学了
2016-12-19 18:32
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
lcODBCDatabase='Test'
是数据库名称,不是表名,就算是SPT方式,也是1次只能连接1个数据库,如:
local lcSql,lnHandle
lcDbs='master'
gcServer = "192.168.1.10"
gcUid = "sa"
gcPwd = "123456"
gcDbs = "master"
lcSql=[driver=sql server;server=] + gcServer + [;uid=] + gcUid + [;pwd=] + gcPwd + [;database=] + gcDbs
lnHandle=sqlstringconnect(lcSql)
if lnHandle > 0
   sqlexec(lnHandle,'select * from 你的表','sqltable')
   brow
endif
上面是用SPT连接到 数据库 master 上,读取“你的表"的数据
2016-12-19 19:39
hepingfly
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:195
专家分:657
注 册:2015-5-21
得分:5 
设置 ODBC是多余的操作,VFP 连接  SQL server 不需要这个步骤。楼上的说法就可以。为了方便查看,楼上的第9行,也可以写成如下,功能等同。
lcSql="driver=sql server; server=&gcServer; uid=&gcUid; pwd=&gcPwd; database=&gcDbs"

星际花草
2016-12-19 22:47
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
得分:0 
可能我没表达清楚,在程序中使用SPT连接sql我会了,我的表单大部分还是用远程视图连接的,所以在启动时会提示标题中的情况“未发现数据源名称并且未指定默认驱动程序”,
我在操作系统中添加sql ODBC数据源后才可用,windows系统默认的ODBC数据源只有3个。

我现在想把这个步骤自动化该怎么做?
2016-12-20 10:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用mywisdom88在2016-12-19 15:32:28的发言:

你连接sql server是用视图的吧,要是用SPT方式,就可以动态连接。设置ODBC就不知道,也许吹版主知道。

说实话,对数据库的实际应用了解不多,可以说无经验。
看我写的帖子应该找不到与 sql server 有直接关系的内容。
2016-12-20 11:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-472590-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.103756 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved