poniedziałek, 17 stycznia 2011

Pobranie numeru Pesel z tekstu

Prosta funkcja wybierająca nr Pesel z tekstu (sText) i zwracająca w svPesel numer Pesel. Funkcja zwraca true w przypadku poprawnego znalezienia numeru Pesel.

public bool GetPeselFromText(ref String svPesel, String sText)
        {
            bool bResult = false;
            svPesel = "";
            string sPesel = "";
            if (sText.Length < 11) return false;

            for (int i = 0; i < sText.Length; i++)
            {
                if (Convert.ToInt32(sText[i]) >= 48 && Convert.ToInt32(sText[i]) <= 58)
                {
                    sPesel += sText[i].ToString();
                }
                else
                {
                    if (sPesel.Length == 11)
                    {
                        bResult = true;
                        break;
                    }
                    else
                    {
                        sPesel = "";
                    }
                }
            }
            if (sPesel.Length == 11) bResult = true;
            if (bResult) svPesel = sPesel;

            return bResult;
        }

Wykonanie zapytania na bazie MS-SQL w InstallScript

Funkcja wykonuje zapytanie SQL i zwraca wartości z pierwszej kolumny w zmiennej "svWynik"; Funkcja zwraca true/false w przypadku poprawnego/błędnego wykonania zapytania.

function BOOL QuerySQL(sSQL,sServerName, sDBName, sDriver, bTrustedConn, 
sUserName, sUserPwd, svWynik, bLog)
 OBJECT objConn, objRST, pADORecordSetObj,adoCommand; 
 STRING sTekst, sConnString;         
 STRING  szADOConnObjID,szADORecordSetObjID; 
 STRING szError;
 BOOL bReturn;
begin
 bReturn = FALSE;
 
    if (sDriver == "") then sConnString = "Provider=sqloledb;Persist Security Info=False;";
                    else sConnString = "Driver={" + sDriver + "};Persist Security Info=False;";
    endif;
    
    if (bTrustedConn) then
 sConnString = sConnString + "server=" + sServerName + ";";
 sConnString = sConnString + "database=" + sDBName + ";";
 sConnString = sConnString + "Trusted_connection=Yes";
else
 sConnString = sConnString + "server=" + sServerName + ";";
 sConnString = sConnString + "uid=" + sUserName + ";";
 sConnString = sConnString + "pwd=" + sUserPwd + ";";
 sConnString = sConnString + "database=" + sDBName;
endif;
 
    try
 szADOConnObjID = "ADODB.Connection";
 set objConn = CreateObject(szADOConnObjID);         
    
 if (IsObject(objConn)) then 
objConn.ConnectionString = sConnString;
    objConn.Open;                              
    szADORecordSetObjID = "ADODB.Recordset";
    set pADORecordSetObj = CreateObject(szADORecordSetObjID);
    
    pADORecordSetObj.CursorType = 3;    
    pADORecordSetObj.ActiveConnection = objConn;    
    pADORecordSetObj.Open(sSQL);    
 if ((pADORecordSetObj.RecordCount >= 1)||(pADORecordSetObj.RecordCount = -1)) then
    while (!pADORecordSetObj.EOF) 
  svWynik =  pADORecordSetObj(0);
   pADORecordSetObj.MoveNext;          
    endwhile; 
    
 if (StrLength(svWynik)>0) then bReturn = TRUE;
      else bReturn = FALSE;
 endif;  
    
 if ((bLog)&&(!bReturn)) then WriteLog(2," Wynik zapytania jest pusty"); endif;  
 else
 bReturn = FALSE; 
 endif;                                          
    
 set pADORecordSetObj = NOTHING;
 objConn.Close;
   
 else
     if (bLog) then WriteLog(1,"Nie moża utworzyć obiektu połączenia ADODB.Connection do "+sDBName); endif;  
 endif;
  
 set objConn = NOTHING;
 set objRST  = NOTHING;
  
 catch  
    if (bLog) then WriteLog(1,"Błąd wykonania zapytania SQL"); endif;  
 endcatch;
                      
 return (bReturn);
end;   

Usuwanie użytkownika bazy MS-SQL w InstallScript

Funkcja usuwa użytkownika bazy MS-SQL, zwraca true/false w przypadku powodzenia/porażki.
function BOOL DB_DropUser(sUserToDrop, sServerName, sDBName, sDriver, bTrustedConn, 
sUserName, sUserPwd, bLog)
OBJECT objConn, objRST;   
STRING sConnString;  
STRING  szADOConnObjID, sSQL;
BOOL bResult;
begin
    bResult = FALSE;
    if (sDriver == "") then
     sConnString = "Provider=sqloledb;";
    else
     sConnString = "Driver={" + sDriver + "};";
    endif;

 if (bTrustedConn) then
     sConnString = sConnString + "server=" + sServerName + ";";
     sConnString = sConnString + "database=" + sDBName + ";";
     sConnString = sConnString + "Trusted_connection=Yes";
 else
     sConnString = sConnString + "server=" + sServerName + ";";
  sConnString = sConnString + "uid=" + sUserName + ";";   
  sConnString = sConnString + "pwd=" + sUserPwd + ";";
  sConnString = sConnString + "database=" + sDBName;                                        
 endif;   
 
 try
  szADOConnObjID = "ADODB.Connection";
     set objConn = CreateObject(szADOConnObjID);         
    
  if (IsObject(objConn)) then 
   objConn.ConnectionString = sConnString;
   objConn.Open;                            
      
   sSQL = "IF EXISTS (SELECT * FROM sysusers WHERE name='"+sUserToDrop+"') 
BEGIN EXEC dbo.sp_revokedbaccess N'"+sUserToDrop+"' END;";   
   try
    set objRST = objConn.Execute(sSQL);
    bResult = TRUE; //Wykonano
   catch                      
     bResult = FALSE; //Błąd wykonania
     if (bLog) then WriteLog(1," - błąd usuwania loginu \""+sUserToDrop+"\" 
z bazy \""+sDBName+"\""); endif;
   endcatch;
         
         objConn.Close;         
         
  endif;
    
  set objConn = NOTHING;
  set objRST  = NOTHING;
  
 catch  
  if (bLog) then WriteLog(1," - Nie można uzyskać połączenia z bazą 
na użytkownika \""+sUserName+"\""); endif;  
 endcatch;     
 
    return bResult; 
end;

Tworzenie użytkownia bazy MSSQL w InstallScript

Funkcja dodaje użytkownika do bazy danych serwera MS-SQL, zwraca true/false po wykonaniu.

function BOOL DB_CreateUser(sUserToCreate, sUserPwd, sServerName, sDBName, sDriver, 
bTrustedConn, sUserSA, sUserSAPwd,  bLog)
OBJECT objConn, objRST;   
STRING sConnString;  
STRING  szADOConnObjID, sSQL;
BOOL bResult,bResult1;
begin
    bResult = FALSE;
    if (sDriver == "") then
     sConnString = "Provider=sqloledb;";
    else
     sConnString = "Driver={" + sDriver + "};";
    endif;
 if (bTrustedConn) then 
     sConnString = sConnString + "server=" + sServerName + ";";
  sConnString = sConnString + "database=" + sDBName + ";";
  sConnString = sConnString + "Trusted_connection=Yes";
 else  
     sConnString = sConnString + "server=" + sServerName + ";";
  sConnString = sConnString + "uid=" + sUserSA + ";";     
  sConnString = sConnString + "pwd=" + sUserSAPwd + ";";
  sConnString = sConnString + "database=" + sDBName;                                        
 endif;   
 
 try
  szADOConnObjID = "ADODB.Connection";
     set objConn = CreateObject(szADOConnObjID);         
    
  if (IsObject(objConn)) then 
   objConn.ConnectionString = sConnString;
   objConn.Open;                               

   try         
    sSQL = "IF  NOT EXISTS (SELECT * FROM master.dbo.syslogins WHERE 
loginname='"+sUserToCreate+"') \r\n";
    sSQL = sSQL + "BEGIN \r\n";     
          sSQL = sSQL + "EXEC ('CREATE LOGIN "+sUserToCreate+" WITH PASSWORD=N''"+sUserPwd+"'', 
DEFAULT_DATABASE="+sDBName+", CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF') \r\n";          
             sSQL = sSQL + "END ";
    set objRST = objConn.Execute(sSQL);  
          bResult = TRUE; //Wykonano
         catch                                                                                       
          bResult = FALSE; //Nie wykonano                                
         endcatch;   
         
         if !bResult then //Jezeli pierwszy sposob sie nie wykonal to drugi 
         try         
    sSQL = "IF  NOT EXISTS (SELECT * FROM master.dbo.syslogins WHERE 
loginname='"+sUserToCreate+"') \r\n";
    sSQL = sSQL + "BEGIN \r\n";     
    sSQL = sSQL + "EXEC sp_addlogin @loginame = '"+sUserToCreate+"', 
@passwd = '"+sUserPwd+"', @defdb = '"+sDBName+"' \r\n";                       
             sSQL = sSQL + "END ";
    set objRST = objConn.Execute(sSQL);  
          bResult1 = TRUE; //Wykonano       
          bResult = TRUE;
         catch                                                                                       
          bResult1 = FALSE; //Nie wykonano                                
         endcatch;            
         endif;      
         
         if (!bResult) && (!bResult1) then
          if (bLog) then WriteLog(1,"Błąd dodanie użytkownika \""+sUserToCreate+"\" 
do serwera SQL"); endif;
         endif;         
         objConn.Close;                  
  endif;
    
  set objConn = NOTHING;
  set objRST  = NOTHING;  
 catch  
  if (bLog) then WriteLog(1," - Nie można uzyskać połączenia z bazą 
na użytkownika \""+sUserToCreate+"\""); endif;  
 endcatch;      
    return bResult; 
end;

piątek, 14 stycznia 2011

Pobranie wielkości bazy MSSQL

Funkcja pobiera wielkość bazy odczytując wielkość pliku z serwera MSSQL bazy
function BOOL GetDataBaseSize(sQuery, sValueName, sValue, sServerName, sDBName, sDBFileName, sDriver, bTrustedConn, sUserName, sUserPwd, bLog)
 OBJECT objConn, objRST;     
 STRING  szADOConnObjID;
 STRING sTekst, sConnString;
 BOOL bReturn;
begin
 bReturn = FALSE;  
    if (sDriver == "") then
     sConnString = "Provider=sqloledb;";
    else
     sConnString = "Driver={" + sDriver + "};";
    endif;

 if (bTrustedConn) then
     sConnString = sConnString + "server=" + sServerName + ";";
       sConnString = sConnString + "database=" + sDBName + ";";
     sConnString = sConnString + "Trusted_connection=Yes";
 else

     sConnString = sConnString + "server=" + sServerName + ";";
  sConnString = sConnString + "uid=" + sUserName + ";";
  sConnString = sConnString + "pwd=" + sUserPwd + ";";
  sConnString = sConnString + "database=" + sDBName;
 endif;
 

 szADOConnObjID = "ADODB.Connection";
 set objConn = CreateObject(szADOConnObjID);         
 if (IsObject(objConn)) then 
   objConn.ConnectionString = sConnString;
   objConn.Open;   
   set objRST = objConn.Execute("select sum(size)*8/1024 as size from sysfiles");     
   sValue = objRST(sValueName);                                         
 set objRST = objConn.Execute("select filename from sysfiles where filename like '%.mdf%' ");
 sDBFileName = objRST("filename");                                           
 objConn.Close;   
 bReturn  = TRUE;   
   
 else
     if (bLog) then WriteLog(1,"Nie moża utworzyć obiektu połączenia ADODB.Connection"); endif;  
 endif;
  
  set objConn = NOTHING;
  set objRST  = NOTHING;
 
 return (bReturn);
end;