关于ado和odbc(紧急求救)--问题有点菜,多包涵!! odbc和bde当然不同了。可以不用bde引擎的。你用ado连接数据库,一般是不用另外安装ado的。因为装了sql,office就可以有相应的ado驱动了。可以装个mdac2.7or2.6。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实使用ADO最好,98以上的系统对ado的支持是比较好的。使用ADO安装发布不需要安装ADO,当然如果真的需要的话,就打包ADOC吧!----------------------------------------ODBC需要修改注册表:自己琢磨一下了!!以下创建access的ODBC DSN(系统dsn和用户DSN两种)的办法: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 :='增加本地 accessODBC数据源失败!'; exit; end; CloseKey; Result :='增加新本地 access 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 :='增加本地 accessODBC数据源失败'; exit; end; CloseKey; Result :='增加新本地 accessODBC数据源成功'; Free; end;end;//调用方法procedure TForm1.Button2Click(Sender: TObject);var strTemp : string;begin strTemp:=CreateAccessUserDsn(trim(Edit1.Text), trim(FileNameEdit2.Text)); //Edit1.Text表dsn名, FileNameEdit2.Text指向access文件所在路径 ShowMessage(strTemp);end; 多维数组问题 setwindows函数怎么使用? 把主调程序的变量传到DLL的窗体上. 发何让程序在我规定的时间执行命令? 求助:谁能帮我做一个显示EXE调用参数的程序?急用 名字空间冲突的问题 三层结构下的删除问题? 关于保存的贴子(Xml文件)无法正常显示的解决办法。 帮我看看代码,当我缩小或者放大图象以后,为什么总是闪烁,怎么能消除闪烁??????(icehill) ODBC被破坏如何以最简单方式恢复 点击最小化按钮问题,参与者有分!!! '%-4.4d'是什么意思
使用ADO安装发布不需要安装ADO,当然如果真的需要的话,就打包ADOC吧!
----------------------------------------
ODBC需要修改注册表:自己琢磨一下了!!
以下创建access的ODBC DSN(系统dsn和用户DSN两种)的办法: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 :='增加本地 accessODBC数据源失败!';
exit;
end;
CloseKey; Result :='增加新本地 access 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 :='增加本地 accessODBC数据源失败';
exit;
end;
CloseKey; Result :='增加新本地 accessODBC数据源成功';
Free;
end;
end;
//调用方法
procedure TForm1.Button2Click(Sender: TObject);
var
strTemp : string;
begin
strTemp:=CreateAccessUserDsn(trim(Edit1.Text), trim(FileNameEdit2.Text));
//Edit1.Text表dsn名, FileNameEdit2.Text指向access文件所在路径
ShowMessage(strTemp);end;