我的程序如何才能正常运行?(46分)

  • 主题发起人 主题发起人 gmwing
  • 开始时间 开始时间
具体是什么错误!

99. Delphi中获得BDE、ADO的错误号
Delphi的数据库对象,如Ttable和TadoTable有以下一些Error事件:OnDeleteError、OnDeleteErro、OnPostError。这些事件的定义如下,都是数据集错误:
type TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction) of object;
property OnPostError: TDataSetErrorEvent;

在这些事件在EdatabaseError中是无法得到错误号的,其中只有Message属性。在发生BDE错误时可如下得到错误号:
if E is EDBEngineError then
showmessage(inttostr(EDBEngineError(E).Errors[0].ErrorCode));
也可以这么写:
if E is EDBEngineError then
showmessage(inttostr((E As EDBEngineError).Errors[0].ErrorCode));
但在发生ADO错误时不能这样: E is EadoError。
其实Ado错误在数据集相应的数据库连接中都有:TadoConnection.Errors。
procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
var
i:integer;
begin
memo1.Lines.Add(inttostr(table1.Connection.errors.count ));
for i:=0 to AdoConnection1.errors.count-1 do
begin
memo1.Lines.Add('number:'+inttohex(AdoConnection1.errors.Number,8 ));
memo1.Lines.Add('NativeCode:'+inttostr(AdoConnection1.errors.NativeError ));
memo1.Lines.Add(inttostr(AdoConnection1.errors.HelpContext ));
memo1.Lines.Add(AdoConnection1.errors.Source );
memo1.Lines.Add(AdoConnection1.errors.SQLState );
memo1.Lines.Add('Description:'+AdoConnection1.errors.Description );
end;
memo1.Lines.Add('error Msg :'+e.message);
end;
NativeError是Foxpro的原生错误号,非常详细,一般用这个来判断发生的错误。Number是Sql错误号,是大的分类,一般一个Number和多个NativeError对应。
这些错误码的信息在文档Drvvfp.hlp中都有。

 
ADO中SQL Server的登录方式用了Windws集成方式。另一个计算机没有登录到SQL Server
服务器上或用户对SQL Server的数据库没有权限,你先用与你计算机一样的用户登录到
SQL Server上试试。
 
我的问题到现在还没有解决??????????
 
报什么错?
 
To 楼主:
真是不好意思上次答错了。上次答完后,因工作需要自己也做了一个c/s结构的程序
同样遇到你一样的问题,后来试了几次发现:在ODBC中成功建立一个连接到sql server的
DSN(数据源)后程序就可以正常运行了(这时删掉那个数据源也一样正常运行)。后来
我就一直用这种方法。很麻烦。到现在我还没有做出可以用程序自动连接的。即然通过创
建数据源的方法可以连通,我想用程序自动创建一个DSN的方法应该可以解决这个问题。
我没时间去试,哪位较有时间的大侠可以试试。自动创建一个DSN的资料网上很多,自己找找
如果行得通,希望能告诉我一下,非常感谢。
To jiangxiancheng:
你有通过程序解决这个问题的方法吗?
To 辛苦劳动的版主们:真是太感谢你们了,我的"我参于的问题"的功能可以用了!!!
 
装SQLSERVER客户端了吗?好象是找不到数据源吧?客户端数据源设置对了?协议等?
 
应该是数据库连接的问题。你看看你的客户端的数据库配置是否正确?
你的ADO连接的时候select or enter a server name 有没有指定数据库
所在的机器名字阿?




======================
我是菜鸟什么都不懂,乱说一通,说错了请别怪我!
 
后退
顶部