最近在用fastreport 4.3调用TfrxADODatabase时,总出现用户 sa登录失败的提示,后来发现是连接字符串中多了一个
PersistSecurityInfo=False; 按这项替换掉就可以了,以下是我的代码,我用的三层结构,客户端必须从服务端取连接字符串
- ifnotDM_Common.HR_Socket.Connectedthen
- DM_Common.HR_Socket.Connected:=true;
- DM_Common.HR_Socket.AppServer.GetAdocnstring(tmpstr);
- DM_Common.L_adostring:=StringReplace(string(tmpstr),'PersistSecurityInfo=False;','',[]);//这一段是关键
- ReportADO:=TfrxADODatabase(Report.FindObject('adocn'));
- try
- ReportADO.Connected:=false;
- ReportADO.LoginPrompt:=false;
- ReportADO.DatabaseName:=DM_Common.L_adostring;//'Provider=SQLOLEDB.1;UserID=sa;Password=123;'
- //+'InitialCatalog=techlong;DataSource=192.168.0.11';
- //+'AutoTranslate=True;PacketSize=4096;'
- //+'UseEncryptionforData=False;Tagwithcolumncollationwhenpossible=False';//DM_Common.L_adostring;
- //ReportADO.IsWriting:=false;
- TfrxPictureView(Report.FindObject('Logo')).Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'logo.jpg');
- TfrxADODatabase(Report.FindObject('adocn')).Connected:=true;
- TfrxADOQuery(Report.FindObject('MainData')).SQL.Text:='ExecPrg_AS_BuyDocGetMain'+Quotedstr(OrderNum);
- TfrxADOQuery(Report.FindObject('MainData')).Open;
- TfrxADOQuery(Report.FindObject('DetailData')).SQL.Text:='ExecPrg_AS_BuyDocGetDetail'+Quotedstr(OrderNum);
- TfrxADOQuery(Report.FindObject('DetailData')).Open;
- Report.ShowReport;
- except
- end;