Questa soluzione piuttosto elegante non usa cursori o tabelle temporanee, ma sfrutta la potenza delle tabelle derivate.

USE pubs

GO

–> Prendiamo il nome ed il cognome del 12-13-14 autore dalla tabella authors

select a1.au_fname + ‘ ‘ + a1.au_lname [Nome e Cognome],

(select count(*) from authors a2

where a2.au_lname <= a1.au_lname) [Lista degli autori]

from authors a1

where (select count(*) from authors a2

where a2.au_lname <= a1.au_lname) between 12 and 14

order by a1.au_lname

Assumiamo che SQL SERVER abbia impostato di default la domenica cioè 7 (è il caso del mio SQL Server) il parametro DATEFIRST che indica il primo giorno di della settimana.

–>Set datefirst 7

declare @d datetime, @l datetime

set @d = ’13/06/2001′ –> 13 Giugno 2001

–> Il sistema imposta l’inizio della settimana il:

select @@DATEFIRST as [Primo giorno della settimana] –> 1 lunedì, 2 martedì, … 7 domenica

–> Visualizziamo la data del lunedì della settimana

select dateadd(dd, 2-datepart(dw, @d), @d) as [Lunedì della settima]

Con le funzioni per le date con T-SQL è facile manipolare le date ed ottenere alcune interessanti informazioni, nel nostro esempio con datediff() e dateadd() possiamo ricavare il numero di giorni contenuti in uno specifico mese ed anche l’ultimo giorno del mese n questione:

declare @mese int, @anno int, @data datetime

select @mese = 6, @anno = 2001

select @data = convert(varchar, @anno) + right(‘0′ + convert(varchar, @mese), 2) + ’01’

–> Per calcolare il numero di giorni di un mese

select datediff(d, @data, dateadd(m, 1, @data)) as “Numero di giorni”

–> per determinare l’ultimo giorno del mese.

select dateadd( d, -1 , dateadd( m , 1 , @data ) ) AS “Ultimo giorno del mese”

I trigger sono strumenti molto potenti e pericolosi, in questa situazione possiamo capire quale azione viene compiuta su una tabella di nome ‘test’:

USE pubs –> Usa il database pubs

GO

/* se esiste all’interno del database l’oggetto ‘test’ ed è una TABELLA */

IF OBJECTPROPERTY ( object_id(‘test’),’ISTABLE’) = 1

DROP TABLE test /* allora lo elimino */

/* se esiste all’interno del database l’oggetto ‘tr_test’ ed è un TRIGGER */

IF OBJECTPROPERTY ( object_id(‘tr_test’),’ISTRIGGER’) = 1

DROP TRIGGER tr_test /* allora lo elimino */

GO

/* creo una TABELLA dal nome ‘test’ */

CREATE TABLE test(i int)

GO

/* creo un TRIGGER dal nome ‘tr_test’ */

CREATE TRIGGER tr_test ON test FOR INSERT, UPDATE, DELETE AS

IF EXISTS(SELECT * FROM inserted) AND EXISTS(SELECT * FROM deleted)

PRINT ‘UPDATE… hai aggiornato uno o più record’

ELSE

IF EXISTS(SELECT * FROM inserted) AND NOT EXISTS(SELECT * FROM deleted)

PRINT ‘INSERT… hai inserito uno o più record’

ELSE

PRINT ‘DELETE… hai eliminato uno o più record’

GO

/* Istruzioni DML per INSERT , UPDATE e DELETE */

INSERT test values(1)

UPDATE test set i = i + 1

DELETE test

Dopo aver creato il RecordSet, è possibile eliminare record per mezzo dell’istruzione:

<% rs.Delete %>

Se utilizzare un database Access, attenzione alle relazioni impostate

I DEFAULT sono un tipo di constraint molto utile, servono ad inserire un valore di default ad una colonna di una tabella.

USE pubs –> Usa il database pubs

GO

/* se esiste all’interno del database l’oggetto ‘test’ ed è una TABELLA */

IF OBJECTPROPERTY ( object_id(‘test’),’ISTABLE’) = 1

DROP TABLE test /* allora lo elimino */

GO

CREATE TABLE test (id# int IDENTITY NOT NULL, tipo1 varchar(255))

GO

ALTER TABLE test –> altero la tabella test

ADD CONSTRAINT df_test_tipo1 –> aggiungo un CONSTRAINT di nome df_test_tipo1

DEFAULT ‘mio default’ FOR tipo1 –> il CONSTRAINT è di tipo DEFAULT è lo lego alla colonna tipo1 della tabella test

INSERT INTO test (tipo1) VALUES (default)

SELECT * FROM test

La login in SQL Server è formata da user ID e password validi e ci sono necessari ogni qualvolta ci colleghiamo a SQL Server.

Solo un utente con i privilegi di sa può eseguire questa operazione:

/* Aggiungo una nuova login */

exec sp_addlogin gino,furia,pubs

/* Elimino la login appena creata */

exec sp_droplogin gino

E’ possibile comprimere un database Access direttamente dal programma stesso (Strumenti -> Utilità database -> Compatta database), oppure per mezzo di questo script ASP:

<%

Set db = CreateObject(“DAO.DBEngine.35”)

db.CompactDatabase “percorsoDatabase\database.mdb”,

percorsoDatabase\database_compresso.mdb”

%>

dove, ovviamente, percorsoDatabase è il percorso del file .mdb. Come potete vedere, è necessario inserire un nuovo nome per il db Access

Tramite il seguente script:

<%

‘Aggiungo il record

rs.AddNew

‘Inserisco i valori nei campi

rs(“nomeCampo”) = valore

‘Aggiorno i valori nel RecordSet

rs.Update

%>

è possibile aggiungere un nuovo record al database, inserire i nuovi valori per i campi ed aggiornare il tutto