Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未找到Delphi数据库microsoft odbc管理器数据源名称,且不是默认驱动程序_Delphi_Ms Access - Fatal编程技术网

未找到Delphi数据库microsoft odbc管理器数据源名称,且不是默认驱动程序

未找到Delphi数据库microsoft odbc管理器数据源名称,且不是默认驱动程序,delphi,ms-access,Delphi,Ms Access,在完成本教程之后,我在下面的delphi代码中遇到此错误:。我见过其他解决方案,但我不确定它们的真正含义或我应该实际做什么。我想知道是否有人能看到是否有明显的问题或解释我应该检查什么。我在ADOConnection1:=TADOConnection.create(nil)行上遇到错误 [Microsoft][ODBC MANAGER]未找到数据源名称,未指定默认驱动程序 假设您的Project1db.accdb已经存在于E:\Project中,设置 您的ADO连接如下所示: 在IDE中,单击您的

在完成本教程之后,我在下面的delphi代码中遇到此错误:。我见过其他解决方案,但我不确定它们的真正含义或我应该实际做什么。我想知道是否有人能看到是否有明显的问题或解释我应该检查什么。我在ADOConnection1:=TADOConnection.create(nil)行上遇到错误

[Microsoft][ODBC MANAGER]未找到数据源名称,未指定默认驱动程序


假设您的
Project1db.accdb
已经存在于
E:\Project
中,设置 您的ADO连接如下所示:

在IDE中,单击您的
AdoConnection
,并将其
LoginPrompt
属性设置为
False

单击
ConnectionString
属性中的
[…]
按钮

在ConnectionString弹出窗口中,单击
使用连接字符串
单选按钮,然后 单击其下方的
Build
按钮

提供程序
选项卡上,将提供程序类型设置为

Microsoft.ACE.OLEDB.12.0

在连接选项卡上,将数据源设置为

e:\Project\Project1db.accdb

然后单击
测试连接
按钮。你应该得到一个确认的弹出窗口 连接成功

如果Project1DB.accdb文件不存在,您可以使用@Victoria的
来创建它,例如使用此链接来创建它,或者使用MS Access来创建它。但是您仍然需要类似于现有代码的东西来打开数据库

正如我在评论中所说,您不应该调用
ADOConnection1:=TAdoConnection.Create(Nil)
,因此删除该行和
ADOConnection1.Free
。我希望您现在能够理解,您可以使用对象检查器来配置AdoConnection等


顺便说一句,如果我昨天对你的一个问题的评论把你弄糊涂了,让你尝试使用ODBC,我很抱歉(如果你是机器的管理员,这很好,但是如果你不是,这可能会更棘手)。要使用现有的ODBC数据源,您需要将AdoConnection的提供程序类型设置为类似于Microsoft OLE DB Provider for ODBC Drivers
,而不是任何特定于Access的提供程序-ODBC是处理各种不同类型数据库(包括Access)的通用方法。顺便说一句,您可以使用ODBC dsn创建Access数据库,作为根据文章@Victoria linked使用ADOX对象创建数据库的替代方法。

我们读者看不到您的屏幕:您的代码的哪一行导致了错误?顺便说一句,你的代码中有一个基本错误:当你的应用程序启动时,你在表单上放置的Button1和ADOConnection1等组件会自动创建,当它关闭时会释放。因此,您不需要(也不应该包括)您的
ADOConnection1:=TADOConnection.Create(nil)
您的
数据源
参数只指向不存在的数据源。数据源是您可以在中配置的。我不是我所在计算机的管理员,因为它是学校计算机。你会建议怎么做呢?我应该使用OLE吗?试试。@Victoria:实际上,在我的Win10设置中,Jet提供程序似乎不想打开Access2016.accdb文件。几分钟后,我将发布一组关于如何为她的示例数据库配置AdoConnection的说明。
 unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs,ADODB,Stdctrls, DB;

type
  TForm1 = class(TForm)
     ADOConnection1: TADOConnection;
     Button1: TButton;
     procedure Button1Click(Sender: TObject);
  private
  public
     procedure createdb;
     procedure closedb;
   end;

 var
   Form1: TForm1;

 implementation

{$R *.dfm}
Procedure TForm1.createdb;
var
nameDB:string;
connectionstring:string;
begin
connectionstring:='Provider=Microsoft.ACE.OLEDB.12.0;Data 
Source=E:\Project;';
namedb:='Project1db.accdb';
ADOConnection1:=TADOConnection.Create(nil);
ADOConnection1.LoginPrompt:=false;
ADOConnection1.Connected:=true;
ADOConnection1.Execute('CREATE DATABASE IF NOT EXISTS 
Project1db.accdb',cmdtext);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
createdb;
closedb;
end;

 Procedure TForm1.closedb;
 begin
   ADOConnection1.Free;
 end;
 end.