lunedì 3 dicembre 2012

Cursore


 Declare @EmpId int
Declare c Cursor For Select Distinct Employee_id From TableName
Open c

Fetch next From c into @EmpId


While @@Fetch_Status=0 Begin
   ... do whatever you want ...
   Fetch next From c into @EmpId
End


Close c
Deallocate c

giovedì 20 settembre 2012

Aggiornare Firma Progetto Visual Studio

Per prolungare la scadenza di una firma è possibile utilizzare la procedura come descritto qui:

https://robindotnet.wordpress.com/2010/01/26/how-to-extend-an-existing-certificate-even-if-it-has-expired/#comments

tramite il file Renewcert.exe eseguire da riga di comando

RenewCert NightbirdPFX.pfx NightbirdPFX5Yrs.pfx CN=Nightbird5Yrs MYpassw0rd

eventualemente omettendo la password finale.

mercoledì 5 settembre 2012

Ricerca in un DataTable


Dim dt As DataTable = xxxx
dt = SelectIntoDataTable("tipologia = 'S' and dt_inizio > #" & Now.ToString("MM/dd/yyyy") & "#", dt)
Private Function SelectIntoDataTable(ByVal selectFilter As String, ByVal sourceDataTable As DataTable) As DataTable
        Dim newDataTable As DataTable = sourceDataTable.Clone
        Dim dataRows As DataRow() = sourceDataTable.Select(selectFilter)
        Dim typeDataRow As DataRow
        For Each typeDataRow In dataRows
            newDataTable.ImportRow(typeDataRow)
        Next
        Return newDataTable
    End Function

mercoledì 18 aprile 2012

Inserire un risultato di una select in un parametro

Per inserire il risultato di una select (quindi da varie righe di risultati) in un parametro è possibile utilizzare il metodo COALESCE come segue:

DECLARE @Padri NVARCHAR(MAX)
SELECT @Padri = COALESCE(@Padri + ', ', '') + padri FROM cteSelezionata

martedì 3 aprile 2012

Creare un datatable random

    '''

    ''' funzione che Randomizza un datatable specifico
    '''

    '''
    '''
    '''
    Public Shared Function RandomDatatable(ByVal dt As DataTable) As DataTable

        dt.Columns.Add(New DataColumn("RandNum", GetType(Integer)))
        Dim i As Integer
        Dim rndNum As New Random()
        For i = 0 To dt.Rows.Count - 1
            dt.Rows(i)("RandNum") = rndNum.Next(10000)
        Next i
        Dim myDataView As DataView = dt.DefaultView
        myDataView.Sort = "RandNum"

        Return myDataView.ToTable()

    End Function

mercoledì 29 febbraio 2012

Ricavare Giorno della settimana da una data

SELECT    CASE
            WHEN DATENAME(dw, GETDATE()) = 'Sunday'
                THEN 'Domenica'
            WHEN DATENAME(dw, GETDATE()) = 'Monday'
                THEN 'Lunedi'
            WHEN DATENAME(dw, GETDATE()) = 'Tuesday'
                THEN 'Martedi'
            WHEN DATENAME(dw, GETDATE()) = 'Wednesday'
                THEN 'Mercoledi'
            WHEN DATENAME(dw, GETDATE()) = 'Thursday'
                THEN 'Giovedi'
            WHEN DATENAME(dw, GETDATE()) = 'Friday'
                THEN 'Venerdi'
            WHEN DATENAME(dw, GETDATE()) = 'Saturday'
                THEN 'Sabato'
            ELSE 'Errore'
        END AS Giorno

lunedì 27 febbraio 2012

CTE che contiene una colonna contatore generata

declare @limit int
set @limit = 100

;with MyCte AS
    (select   MyCounter = 1
     UNION ALL
     SELECT   MyCounter + 1
     FROM     MyCte
     where    MyCounter < @limit )
    
select MyCounter
from   MyCte
option (maxrecursion 0)

venerdì 24 febbraio 2012

aggiungere server collegato Access ACCDB

declare @nomeServer nvarchar(MAX)
declare @serverPath nvarchar(MAX)  /* il file deve essere SULLA STESSA MACCHINA*/
set @nomeServer = 'server name'
set @serverPath = 'file mdb full path'

EXEC sp_addlinkedserver
    @server = @nomeServer,
    @provider = N'Microsoft.Jet.OLEDB.4.0',
    @srvproduct = N'Access',
    @datasrc = @serverPath

-- setto logina al nuovo Server DB
EXEC sp_addlinkedsrvlogin
    @rmtsrvname = @nomeServer,
    @useself = N'FALSE'
    /* dati non necessari per DB senza USR e PSW */
    --,@locallogin = NULL
    --,@rmtuser = NULL 
    --,@rmtpassword = NULL

-- TEST: lista tabelle per nuovo server
EXEC sp_tables_ex @nomeServer
GO