当前位置:编程学习 > C#/ASP.NET >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,