1.用ado访问access可以不用安装驱动, 设置好连接字符串即可,推荐使用此法
2.用BDE可连接access97,但是不能连接到access2000.
http://211.101.4.25/delphibbs/dispq.asp?lid=116816
http://211.101.4.25/delphibbs/dispq.asp?lid=131338
http://211.101.4.25/delphibbs/dispq.asp?lid=159598
http://211.101.4.25/delphibbs/dispq.asp?lid=287520
http://211.101.4.25/delphibbs/dispq.asp?lid=141276
http://211.101.4.25/delphibbs/dispq.asp?lid=257055
3.用ODBC连接,可以手工设置,只要在控制面板中设置ODBC的系统DSN或者用户DSN即可。
用户DSN:
These data sources are local to a computer, and can be used only by the current user.
限制于一台机器,且只能被当前用户使用。
系统DSN:
These data sources are local to a computer, rather than dedicated to a user. The system, or any user having privileges, can use a data source set up with a system DSN.
只限于一台机器,不限于某个用户。系统管理员或任何有权限的用户都可以使用。
文件DSN:
These are file-based data sources that can be shared among all users that have the same drivers installed, so they have access to the database. These data sources need not be dedicated to a user or local to a computer.
基于文件的数据源,可被所有安装了相同的驱动程序的用户共享,
进而访问数据库。文件数据源不被指定为某个用户或某台机器。
1.如果安装ODBC,
1)打开控制面版中的ODBC图标
2)单击用户DSN (user DSN)或者系统DSN(System DSN)标签,再单击按钮,
在弹出的对话框中列表框中找到SQL Server驱动程序,选中后单击完成(或close)按钮,
然后输入输入数据源的名字 Name: myname
描述(description)可不输入内容.
再输入SQL server服务器名(Server): YouServerName
注意: 本地sql server服务器可输入 . 或 (local)即可
以后的步骤是有提示的, 自己按提示进行即可,若有问题请反复摸索。
按完成->用户DSN (user DSN)或者系统DSN(System DSN)标签就多了你刚输入的
myname 这一个dsn(data source name)了。
在delphi 的BDEadministrator 或者 SQL explorer中就多了一点别名:myname
你就可以在程序使用此别名了。
2.SQL server 7 有桌面版,Sql server 2000有个人版,都可以安装在
非NT server平台,比如:win98, nt4 workstation, win2000 professional中。
如果数据库不复杂的话(无存储过程,触发器等),你也可以先用dbf, paradox或
access设计好后,当然要设别名(alias name),最后用datapump将dbf, paradox或
access的库内容倒入SQL server 中, 最后只要用odbc建的Dsn的名字用dbf等库的
别名相同,即可用了。
3.程序中当然什么都可以用,请多学习吧
其实你可以用大富翁的搜索功能
另外,你还可以源代码以ODBC方式连接access
1.可以,我手头有用增加access和SQL server的源码, 请参考:
unit CreateODBC;
interface
uses
Windows, SysUtils, Registry;
Function CreateSQLServerDsn(const FDSN,FServer,FUser:String):Integer;
Function CreateAccessDsn(const myDSN, strFileName:String):string;
Function CreateAccessUserDsn(const myDSN, strFileName:String):string;
implementation
Function CreateSQLServerDsn(const FDSN,FServer,FUser:String):Integer;
var
RegisterTemp:TRegistry;
s : string;
begin
RegisterTemp:=TRegistry.Create;
with RegisterTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;
//首先判断此DSN是否已经存在,如在,则不用继续下去
if OpenKey('Software/ODBC/ODBC.INI/'+FDSN,False) then
begin
CloseKey;
Result:=0;
Free;
exit;
end;
CloseKey;
//判断SQL Server的驱动程序是否已经安装
If OpenKey('Software/ODBC/ODBCINST.INI/ODBC Drivers',False) then
begin
s:=ReadString('SQL Server');
if UpperCase(S)<>'INSTALLED' then
begin
CloseKey;
Result:=2;
Free;
exit;
end;
end
else
begin
CloseKey;
Result:=3;
Free;
exit;
end;
CloseKey;
//寻找SQL Server的驱动程序路径
If OpenKey('Software/ODBC/ODBCINST.INI/SQL Server',False) then
begin
s:=ReadString('Driver');
if S='' then
begin
CloseKey;
Result:=2;
Free;
exit;
end;
end
else
begin
CloseKey;
Result:=2;
Free;
exit;
end;
CloseKey;
//注册一个DSN名称
If OpenKey('Software/ODBC/ODBC.INI/ODBC Data Sources',True) then
WriteString(FDSN,'SQL Server')
else
begin
CloseKey;
Result:=1;
Free;
exit;
end;
CloseKey;
if OpenKey('Software/ODBC/ODBC.INI/'+FDSN,True) then
begin
WriteString('Driver',S);
WriteString('LastUser',FUser);
WriteString('Server',FServer);
Result:=5;
end
else
begin
CloseKey;
Result:=1;
Free;
exit;
end;
CloseKey;
Free;
end;
end;
// Result:=0;
// Result:='此ODBC 的DSN已经存在,创建失败';
// Result:=3;
// Result:='操作系统中ODBC驱动程序没有安装,请检查控制面板的ODBC设置是否存在?';
// Result:=2;
// Result:='Access的ODBC驱动程序没有安装';
// Result:=1;
// Result:='ODBC驱动程序没有安装';
// result :=5;
// result :='成功' ;
Function CreateAccessDsn(const myDSN, strFileName:String):string;
var
registerTemp : TRegistry;
bData : array[ 0..0 ] of byte;
begin
registerTemp := TRegistry.Create; //建立一个Registry实例
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;//设置根键值为HKEY_LOCAL_MACHINE
//找到Software/ODBC/ODBC.INI/ODBC Data Sources
if OpenKey('Software/ODBC/ODBC.INI/ODBC Data Sources',True) then
begin //注册一个DSN名称
WriteString( myDSN, 'Microsoft Access Driver (*.mdb)' );
end
else
begin//创建键值失败
Result :='增加ODBC数据源失败';
exit;
end;
CloseKey;
//找到或创建Software/ODBC/ODBC.INI/MyAccess,写入DSN配置信息
if OpenKey('Software/ODBC/ODBC.INI/'+MyDSN,True) then
begin
WriteString( 'DBQ', strFileName);//数据库目录
WriteString( 'Description', '我的新数据源' );//数据源描述
WriteString( 'Driver', 'C:/PWIN98/SYSTEM/odbcjt32.dll' );//驱动程序DLL文件
WriteInteger( 'DriverId', 25 );//驱动程序标识
WriteString( 'FIL', 'Ms Access;' );//Filter依据
WriteInteger( 'SafeTransaction', 0 );//支持的事务操作数目
WriteString( 'UID', '' );//用户名称
bData[0] := 0;
WriteBinaryData( 'Exclusive', bData, 1 );//非独占方式
WriteBinaryData( 'ReadOnly', bData, 1 );//非只读方式
end
else//创建键值失败
begin
Result :='增加ODBC数据源失败';
exit;
end;
CloseKey;
//找到或创建Software/ODBC/ODBC.INI/MyAccess/Engines/Jet
//写入DSN数据库引擎配置信息
if OpenKey('Software/ODBC/ODBC.INI/'+MyDSN+'/Engines/Jet',True) then
begin
WriteString( 'ImplicitCommitSync', 'Yes' );
WriteInteger( 'MaxBufferSize', 512 );//缓冲区大小
WriteInteger( 'PageTimeout', 10 );//页超时
WriteInteger( 'Threads', 3 );//支持的线程数目
WriteString( 'UserCommitSync', 'Yes' );
end
else//创建键值失败
begin
Result :='增加ODBC数据源失败';
exit;
end;
CloseKey;
Result :='增加新ODBC数据源成功';
Free;
end;
end;
Function CreateAccessUserDsn(const myDSN, strFileName:String):string;
var
registerTemp : TRegistry;
bData : array[ 0..0 ] of byte;
begin
registerTemp := TRegistry.Create; //建立一个Registry实例
with registerTemp do
begin
// RootKey:=HKEY_LOCAL_MACHINE;//设置根键值为HKEY_LOCAL_MACHINE
RootKey:=HKEY_Current_USER;//设置根键值为HKEY_LOCAL_MACHINE
//找到Software/ODBC/ODBC.INI/ODBC Data Sources
if OpenKey('Software/ODBC/ODBC.INI/ODBC Data Sources',True) then
begin //注册一个DSN名称
WriteString( myDSN, 'Microsoft Access Driver (*.mdb)' );
end
else
begin//创建键值失败
Result :='增加ODBC数据源失败';
exit;
end;
CloseKey;
//找到或创建Software/ODBC/ODBC.INI/MyAccess,写入DSN配置信息
if OpenKey('Software/ODBC/ODBC.INI/'+MyDSN,True) then
begin
WriteString( 'DBQ', strFileName);//数据库目录
WriteString( 'Description', '我的新数据源' );//数据源描述
WriteString( 'Driver', 'C:/PWIN98/SYSTEM/odbcjt32.dll' );//驱动程序DLL文件
WriteInteger( 'DriverId', 25 );//驱动程序标识
WriteString( 'FIL', 'Ms Access;' );//Filter依据
WriteInteger( 'SafeTransaction', 0 );//支持的事务操作数目
WriteString( 'UID', '' );//用户名称
bData[0] := 0;
WriteBinaryData( 'Exclusive', bData, 1 );//非独占方式
WriteBinaryData( 'ReadOnly', bData, 1 );//非只读方式
end
else//创建键值失败
begin
Result :='增加ODBC数据源失败';
exit;
end;
CloseKey;
//找到或创建Software/ODBC/ODBC.INI/MyAccess/Engines/Jet
//写入DSN数据库引擎配置信息
if OpenKey('Software/ODBC/ODBC.INI/'+MyDSN+'/Engines/Jet',True) then
begin
WriteString( 'ImplicitCommitSync', 'Yes' );
WriteInteger( 'MaxBufferSize', 512 );//缓冲区大小
WriteInteger( 'PageTimeout', 10 );//页超时
WriteInteger( 'Threads', 3 );//支持的线程数目
WriteString( 'UserCommitSync', 'Yes' );
end
else//创建键值失败
begin
Result :='增加ODBC数据源失败';
exit;
end;
CloseKey;
Result :='增加新ODBC数据源成功';
Free;
end;
end;
end.
调用方法如下:
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
i :=CreateSQLServerDsn(trim(Edit1.Text), trim(Edit3.Text),trim(Edit4.Text));
if i= 5 then
ShowMessage('成功');
if i= 0 then
ShowMessage('失败:'+IntToStr(i));
end;
procedure TForm1.Button2Click(Sender: TObject);
var
strTemp : string;
begin
strTemp:=CreateAccessUserDsn(trim(Edit1.Text), trim(FileNameEdit2.Text));
ShowMessage(strTemp);
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
FileNameEdit2.Visible :=false;
Edit3.Visible :=true;
Edit4.Visible :=true;
Label2.Visible :=false;
Label3.Visible :=true;
Label4.Visible :=true;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
FileNameEdit2.Visible :=true;
Edit3.Visible :=false;
Edit4.Visible :=false;
Label2.Visible :=true;
Label3.Visible :=false;
Label4.Visible :=false;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
strTemp : string;
begin
strTemp:=CreateAccessDsn(trim(Edit1.Text), trim(FileNameEdit2.Text));
ShowMessage(strTemp);
end;