installshield 中SQLServerSelectLogin怎么用?
function OnFirstUIBefore()...
Dlg_SQL:
nResult = OnSQLLogin( nResult );
if( nResult = BACK ) then
if (!bCustom) then
goto Dlg_SetupType;
else
goto Dlg_SdFeatureTree;
endif;
endif;
....
function number OnSQLLogin( nReturn )
string sDLL, sMessage;
string sHidden[100];
string sServer[100], sUser[100], sPassword[100], sAuth[10], sDB[100], sTemp[100];
number nResult, nSize, nRetVal;
BOOL bWinAuth, bDoneLogin;
begin
//First extract runtime dll
sDLL = SUPPORTDIR ^ "ISSQLSRV.DLL";
nResult = StreamFileFromBinary( ISMSI_HANDLE, "ISSQLSRV.DLL", sDLL );
UseDLL( sDLL );
//Get Default Properties
nSize = 100;
MsiGetProperty( ISMSI_HANDLE, "IS_SQLSERVER_DIALOG", sTemp, nSize );
if( TRUE ) then
//First add the Password property as a Hidden property
//so no passwords accidentally get logged.
nSize = 100;
MsiGetProperty( ISMSI_HANDLE, "MsiHiddenProperties", sHidden, nSize );
if( StrLength( sHidden ) > 0 ) then
sHidden = sHidden + ";" ;
endif;
sHidden = sHidden + "IS_SQLSERVER_PASSWORD";
MsiSetProperty( ISMSI_HANDLE, "MsiHiddenProperties", sHidden );
//Now get Default properties
nSize = 100;
MsiGetProperty( ISMSI_HANDLE, "IS_SQLSERVER_SERVER", sServer, nSize );
nSize = 100;
MsiGetProperty( ISMSI_HANDLE, "IS_SQLSERVER_USERNAME", sUser, nSize );
nSize = 100;
MsiGetProperty( ISMSI_HANDLE, "IS_SQLSERVER_PASSWORD", sPassword, nSize );
nSize = 10;
MsiGetProperty( ISMSI_HANDLE, "IS_SQLSERVER_AUTHENTICATION", sAuth, nSize );
if( sAuth = "1" ) then
bWinAuth = FALSE;
else
bWinAuth = TRUE;
endif;
nSize = 100;
MsiGetProperty( ISMSI_HANDLE, "IS_SQLSERVER_DATABASE", sDB, nSize );
//Now we have defaults
bDoneLogin = FALSE;
while( !bDoneLogin )
//First extract runtime dll
//sDLL = SUPPORTDIR ^ "SQLRT.DLL";
//nResult = StreamFileFromBinary( ISMSI_HANDLE, "SQLRT.DLL", sDLL );
//UseDLL( sDLL );
//SQLRTInitialize2();
//Show login dialog
nReturn = SQLServerSelectLogin( sServer, sUser, sPassword, bWinAuth );
if( nReturn = NEXT ) then
//place results from dialog in Property table
MsiSetProperty( ISMSI_HANDLE, "IS_SQLSERVER_SERVER", sServer );
MsiSetProperty( ISMSI_HANDLE, "IS_SQLSERVER_USERNAME", sUser );
MsiSetProperty( ISMSI_HANDLE, "IS_SQLSERVER_PASSWORD", sPassword );
if( bWinAuth = TRUE ) then
sAuth = "0";
else
sAuth = "1";
endif;
MsiSetProperty( ISMSI_HANDLE, "IS_SQLSERVER_AUTHENTICATION", sAuth );
//test connection
MsiSetProperty( ISMSI_HANDLE, "IS_SQLSERVER_CA_SILENT", "0" );
nRetVal = SQLRTServerValidate( ISMSI_HANDLE );
nSize = 100;
MsiGetProperty( ISMSI_HANDLE, "IS_SQLSERVER_STATUS", sTemp, nSize );
if( sTemp != "0" ) then
nSize = 100;
MsiGetProperty( ISMSI_HANDLE, "IS_SQLSERVER_STATUS_ERROR", sMessage, nSize );
if( nSize = 0 ) then
sMessage = SdLoadString( IDS_IFX_SQL_ERROR_LOGIN_FAILED );
endif;
MessageBox( sMessage, MB_OK );
else
bDoneLogin = TRUE;
endif;
else
//BACK was clicked, so we don't even try
bDoneLogin = TRUE;
endif;
endwhile;
else
MessageBox ("100",SEVERE);
endif;
return nReturn;
end;
为什么弹不出这个窗体啊????
--------------------编程问答-------------------- 单步调试下,是否执行到了那里。
如果执行到了,4个参数是什么
有没有返回值。 --------------------编程问答-------------------- 没有弹出窗体是不是判断条件写的有问题,单步调试看看判断条件中的变量的值是什么,不就清楚了。 --------------------编程问答-------------------- 额 还是建议楼主 设断点调试吧
代码有点长 --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 不知道 --------------------编程问答-------------------- 参考 --------------------编程问答-------------------- //SQLRTInitialize2();
这句去除注释,让他生效,可能是这样!
刚才我弄出来了哦
--------------------编程问答--------------------
补充:.NET技术 , ASP.NET