mercoledì 25 giugno 2014

Creare viste Materializzate in Oracle

Grazie a queste viste è possibile effettuare salvataggi sulle tabelle mostrando direttamente la struttura tramite una vista.
E' fondamentale però che all'interno della vista non vi siano Join, e che le tabelle a cui fa riferimento abbiano una Identity Key.

CREATE MATERIALIZED VIEW TestMaterializedView FOR UPDATE AS 
SELECT ID_GRUPPO, CODICE, TIPO 
FROM Tabella

mercoledì 18 giugno 2014

Compilare viste in MVC

E' possibile abilitare la compilazione delle viste in MVC come descritto in:

in poche parole, nel file di progetto dobbiamo settare questa chiave di configurazione:

 ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  
    true

mercoledì 4 giugno 2014

Effettuare salvataggio su DB con NHibernate durante l'elaborazione




UnitOfWork.CurrentSessionCommitAndRestartTransaction()
sessione = UnitOfWork.GetCurrentSession()

giovedì 20 marzo 2014

Funzione per ricercare un valore testuale specifico in un DataBase

--diabilito output conteggio righe
use database
Set NoCount On

--stringa da cercare ed altre variabili
Declare @strToFind varchar(max) = 'StringaDaCercare'
Declare @stringSchema sysname = ''
Declare @stringTab sysname = ''
Declare @stringListaCampi varchar(Max) = ''
Declare @stringListaCampiDove varchar(Max) = ''
Declare @stringSQL varchar(max) = ''

--elenco tabelle e campi
Declare @Tabs table(
TABLE_SCHEMA sysname
,TABLE_NAME sysname
)

Insert into @Tabs
Select Distinct TABLE_SCHEMA,TABLE_NAME from INFORMATION_SCHEMA.COLUMNS
Where DATA_TYPE in ('char','nchar','varchar','nvarchar')
Order by TABLE_SCHEMA,TABLE_NAME

--ciclo le righe
While 1=1
Begin

         Set @stringListaCampi = ''
         Set @stringListaCampiDove = ''

         Select Top 1 @stringSchema = TABLE_SCHEMA, @stringTab=TABLE_NAME from
@Tabs
         Order by TABLE_SCHEMA,TABLE_NAME;

         --esco su rowcount 0
         IF @@ROWCOUNT=0
         Break;

         --formatto la stringa per la ricerca
         With Fields
         AS
                 (
                 Select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS
                 Where DATA_TYPE in ('char','nchar','varchar','nvarchar','text','ntext')
                 And TABLE_SCHEMA = @stringSchema
                 And TABLE_NAME = @stringTab
                 )

         Select @stringListaCampi = @stringListaCampi + '' +
QUOTENAME(COLUMN_NAME) + ' AS ' + QUOTENAME(COLUMN_NAME) + ',',
         @stringListaCampiDove = @stringListaCampiDove + QUOTENAME(COLUMN_NAME) +
' Like ''%' + @strToFind + '%'' OR '
         From Fields


         Set @stringSQL = 'Select ''' + QUOTENAME(@stringSchema) + ''' As
Table_Schema,''' +    QUOTENAME(@stringTab) + ''' As Table_Name, ' +
Substring(@stringListaCampi,0,LEN(@stringListaCampi))
         + ' from ' + QUOTENAME(@stringSchema) + '.' + QUOTENAME(@stringTab)
         + ' Where ' +
Substring(@stringListaCampiDove,0,LEN(@stringListaCampiDove)-2)

         --eseguo SQL
         Exec(@stringSQL)

         -- elimino la riga dalla tabella temporanea
         Delete From @Tabs
         Where TABLE_SCHEMA = @stringSchema
         And TABLE_NAME = @stringTab

end

lunedì 10 febbraio 2014

Visualizzare la GAC come File System

Per visualizzare la GAC come file system (e eventualmente bypassare eventuali problemi di abilitazione alla scrittura), settare la chiave

DisableCacheViewer = 1 

di tipo: REG_DWORD

in

HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Fusion

martedì 4 febbraio 2014

Aprire un Popup da un GridViewCommandColumnCustomButton

Creare il bottone e inserirlo nella colonna,


Dim customE As New GridViewCommandColumnCustomButton
customE.ID = "Nota"
customE.Text = "Aggiungi Nota"
customE.Image.Url = "../imgs/Note.gif"
col.CustomButtons.Add(customE)

gvDocumenti.Columns.Insert(0, col)

e aggiungere il CustomBottonClick gestito per visualizzare il popup.


gvDocumenti.ClientSideEvents.CustomButtonClick = String.Format("function(s, e) {{ if(e.buttonID = 'Sconta') {0}.Show(); }}", "pcSconta")

giovedì 9 gennaio 2014

Popolare un oggetto via Reflection

Per popolare un oggetto (nel suo costruttore) via Reflection utilizzare questo codice:


        public Oggetto(Oggetto obj)
        {
            var fromFields = typeof(Oggetto).GetProperties();
            foreach (var pi in fromFields)
            {
                pi.SetValue(this, pi.GetValue(obj, null), null);
            }
        }