mercoledì 28 marzo 2007

Velocizzare l'apertura del Menu Start di Windows

Esiste un modo molto semplice e veloce per poter velocizzare l'apertura del Menu Start di Windows (il famoso Menu di Avvio).
Scrivete nella finestra "Esegui" la parola Regedit, dopodiché appena il registro di configurazione sarà apparso cercate la la seguente chiave:
HKEY_CURRENT_USER\Control Panel\Desktop\MenuShowDelay
Il valore predefinito è 400, cambiate il suo valore ovviamente inserendo un numero inferiore a 400 (anche 1 andrebbe bene) e poi chiudete il registro. Provate ad aprire il Menu e vedrete che la sua velocità di apertura sarà aumentata.

mercoledì 21 marzo 2007

Creazione di una rete Lan

Qualcuno è interessato alla creazione di una rete domestica??
Bhe allora andate su questo sito dove verrà spiegato passo passo tutto il procedimento per creare una vostra connessione di rete LAN.

http://www.wondernet.biz/lan/

(Inviato da Adex)

martedì 13 marzo 2007

Determinare da quanto tempo è avviato Windows Xp

Se desiderate sapere da quanto tempo il vostro Sistema Operativo Windows Xp è avviato basta procedere in questo modo:

1) Avviate il prompt dei comandi (Start -> Esegui -> digitate cmd) e scrivete:

net statistics workstation

in cima alle statistiche comparirà data e ora dell'avvio del sistema

2) Avviate il prompt dei comandi (Start -> Esegui -> digitate cmd) e scrivete:

systeminfo | find "Tempo di funzionamento sistema:"

Copia di un sistema operativo su un nuovo disco fisso

La procedura che andrò ad illustrare serve per qualsiasi Sistema Operativo. Si può copiare interamente tutto un Sistema Operativo da un vecchio disco fisso ad un nuovo con una semplicità e con poche righe di codice come di seguito vi è riportato:

Prima di tutto sia il vecchio che il nuovo disco fisso devono essere montati correttamente sul personal computer.
Una volta fatto tutto questo bisogna avviare windows e formattare il nuovo disco fisso con una partizione primaria.
Dopodiché per copiare interamente il contenuto del vecchio disco fisso sul nuovo bisogna andare sul prompt-Ms dos e digitare questa riga di codice:

Xcopy32 c:*.* d: /h /i /c /k /e /r /y

N.B. la lettera 'c' identifica il vecchio HDD mentre la lettera 'd' identifica il nuovo HDD.

Fatto questo bisogna spegnere il computer e procedere nella sostituzione del disco vecchio con il nuovo, cioè quest'ultimo deve essere messo come master sul canale primario. Accendere il computer ed il Sistema Operativo partirà sul nuovo disco.

Velocizzare l'avvio e la chiusura di Windows Xp

Ecco una piccola procedura per velocizzare sia l'avvio che la chiusura di Windows Xp.
Tale procedura deve essere effettuata sul registro di configurazione quindi la raccomando a persone esperte o che abbiano un minimo di dimestichezza con il computer.

Aprite il registro di Sistema (Start -> Esegui -> digitate regedit) e cercate la chiave:

HKEY_CURRENT_USER\Control Panel\Desktop

Modificate i valori delle chiavi:

"HungAppTimeout"="2000"
"WaitToKillAppTimeout"="5000"

Poi cercate la chiave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

e modificate:

"WaitToKillServiceTimeout"="3000"

E' possibile diminuire ancora un pò questi valori, ma non esagerate!
Nel caso voleste ripristinare i valori di default, essi sono:
"HungAppTimeout"="5000"
"WaitToKillAppTimeout"="20000"
"WaitToKillServiceTimeout"="20000"

Riavviate il PC e il gioco è fatto

lunedì 12 marzo 2007

A Visual Studio Add-In That Converts C# Code To Visual Basic

Se desiderate creare un tool che permette di convertire codice C# in Vb net e viceversa allora andate a leggere il link di Microsoft di seguito postato e vedrete come sarà facile creare un progetto di conversione codice.

http://msdn.microsoft.com/msdnmag/issues/06/02/PasteAs/default.aspx

Buon divertimento e buon lavoro

Come creare un pulsante a forma circolare

Prima di tutto dobbiamo creare un progetot di tipo "class library".
Dopo clicchiamo con il tasto di sinistra del mouse nella "solution explorer" e nel menu a tendina che compare su "Add Reference". Cerchiamo la voce System.Drawing e aggiungiamola al progetto cliccando su Ok e allo stesso modo anche la voce System.Windows.Form.
A questo punto dobbiamo scrivere il codice della classe che gestirà la creazione del pulsante:

Public Class RoundButton
Inherits System.Windows.Form.Button
Private Function GetRoundedPath(Byval rect as rectangle, byval radius as Int32) As GraphicsPath
Dim roundrect As New GraphicsPath
roundrect.addline(rect.Left + radius, rect.Top, rect.Right - radius, rect.Top)
roundrect.Addarc(rect.Right - 2 * radius, rect.Top, radius * 2, radius * 2, 270,90)
roundrect.AddLine(rect.Right, rect.Top + radius, rect.Right, rect.Bottom -10)
roundrect.Addarc(rect.Right - 2 * radius, rect.Bottom - radius * 2, radius * 2, radius * 2,0,90)
roundrect.AddLine(rect.Right 2 * radius, rect.Bottom, rect.Left + radius, rect.Bottom)
roundrect.Addarc(rect.Left, rect.Bottom - radius * 2, radius * 2, radius * 2,90,90)
roundrect.AddLine(rect.Left, rect.Bottom - radius, rect.Left, rect.Top + radius)
roundrect.Addarc(rect.Left, rect.Top, radius * 2, radius * 2,180,90)
Return roundrect
End Function

Protected Overrides Sub OnPaint(byval pa as System.Windows.Form.PaintEventArgs)
MyBase.OnPaint(pa)
Dim new_rectangle As rectangle = Me.Clientrectangle
new_rectangle.Inflate(-3,-3)
Dim ButtonPath As GraphicsPath = GetRoundedPath(new_rectangle, 10)
pa.Graphics.SmoothingMode = Smoothing.Antialias
pa.Graphics.DrawPath(New Per(Color.Gray, 4), buttonpath)
Me.region = New
System.Drawing.Region(buttonpath)
End Sub

Come poter sapere quanti giorni mancano ad una certa data

Su una WindowsForm posizioniamo un componente di tipo DateTimePiker, una Label ed un Button.
vedi figura:


Nell'evento click del button andiamo a scrivere il segeuente codice:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim datafinale As DateTime = New DateTime
datafinale = Me.DateTimePicker1.Value
Dim differenza As TimeSpan = datafinale.Subtract(DateTime.Now)
Dim giorni As Integer = differenza.Days
Dim ore As Integer = differenza.Hours
Dim minuti As Integer = differenza.Minutes
Me.Label1.Text = giorni.ToString() & ":" & ore.ToString() & ":" & minuti.ToString()
End Sub
End Class

Backup e Restore con MSDE

Vi illustro di seguito un esempio di codice per poter effettuare il Backup ed il successivo Restore di un Database MSDE....

Imports System.Data.SqlClient

Dim SqlConn As New SqlConnection()
Dim SqlCmd As New SqlCommand()

SqlConn.ConnectionString="Data Source=(local);Initial Catalog=master;Integrated Secutity=SSPI"
SqlConn.Open()

Rem -----Backup
SqlCmd.Connection=SqlConn
SqlCmd.CommandType=CommandType.Text
SqlCmd.CommandText="BACKUP DATABASE [nomedb] TO DISK = N'D:\nomedb.bak' WITH INIT,NAME = N'nomedb Backup'"

Try
SqlCmd.ExecuteNonQuery()
Catch
Msgbox(err.description)
ENd Try
SqlCmd.Dispose()


Rem -----restore
SqlCmd.Connection=SqlConn
SqlCmd.CommandType=CommandType.Text
SqlCmd.CommandText = "RESTORE DATABASE [nomedb] FROM DISK = N'D:\nomedb.bak' WITH FILE =1,RECOVERY,MOVE N'nomedb TO N'C:\Programmi\Microsoft Sql Server\MSSQL\data\nomedb.mdf', MOVE N'nomedb_log' TO N'C:\Programmi\Microsoft Sql Server\MSSQL\data\nomedb_log.ldf'"

Try
SqlCmd.ExecuteNonQuery()
Catch
Msgbox(err.description)
ENd Try
SqlCmd.Dispose()

SqlConn.Dispose()
SqlConn.Close()

Metodi per la lavorazione di stringhe in Vb .Net

Tra i metodi più famosi ed utilizzati nell'elaborazione delle stringhe è il concatenamento che avviene grazie al simbolo & come da esempio:
Dim saluto As String
Me.TextBox1.Text="Fabio"
saluto="Ciao" & " " & Me.TextBox1.Text

ma dobbiamo dire che in Net si possono utlizzare al metodi per l'elaborazione delle stringhe; possiamo fornirci dei metodi delle versioni precedenti di Visual Basic (Mid,Ucase,LCase ecc.) oppure avvarlerci dei metodi forniti dal .NET Framework (SubString, ToUpper, ToLower ecc.). Di seguito illustro in breve qualche metodo del .NET framework con relativo esempio:

ToUpper in Visual Basic 6 era la funzione UCase, permette di cambiare le lettere di una stringa in maiuscole.
Dim nome,nome1 As String
nome = "fabio"
nome1 = nome.ToUpper
il risultato sarà: nome1=FABIO

ToLower in Visual Basic 6 era la funzione LCase, permette di cambiare le lettere di una stringa in minuscole.
Dim nome,nome1 As String
nome = "FABIO"
nome1 = nome.ToLower
il risultato sarà: nome1=fabio

Length in Visual Basic 6 era la funzione Len, permette di determinare il numero di caratteri di una stringa.
Dim nome As String ="Fabio"
Dim sizename As Short
sizename = nome.Length
il risultato sarà: 5

SubString in Visual Basic 6 era la funzione Mid, permette di restituire un numero fisso di caratteri di una stringa da un determinato punto di inizio(in una stringa il primo "elemento" ha indice=0).
Dim nome As String ="Fabio Cirillo"
Dim cognome As String
cognome=nome.SubString(6,7)
il risultato sarà: cognome=Cirillo

IndexOf in Visual Basic 6 era la funzione InStr, permette di trovare il punto di inizio di una stringa all'interno di una stringa più lunga.
Dim name As String ="Stefano"
Dim inizio As Short
inizio=name.IndexOf("f")
il risultato sarà: inizio=3

Trim in Visual Basic 6 era la funzione Trim, permette di rimuovere sia gli spazi iniziali che finali di una stringa.
Dim nome,nome1 As Stringa
nome=" Fabio "
nome1=nome.Trim
il risultato sarà: nome1="Fabio"

Remove è una nuova funzione presente in .NET e permette di rimuovere i caratteri all'interno di una stringa
Dim nome,nome1 As String
nome="Fabio78"
nome1=nome.Remove(5,2)
il risultato sarà: nome1="Fabio"

Insert è una funzione nuova presente in .NET e permette di aggiungere caratteri all'interno di una stringa.
Dim nome,nome1 As String
nome="Fabio"
nome1=nome.Insert(5,"78")
il risultato sarà: nome1="Fabio78"

Piccoli trucchi nei sistemi operativi

Di seguito elenco qualche trucco di gestione su diversi sistemi operativi:

A) Come rimuovere il nome di un programma dal menu Installazioni/Applicazioni di Windows:
1. Aprire il registro di configurazione(RegEdit) -----Start/Esegui/Regedit
2. Posizionarsi sulla seguente chiave:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\Unistall
Qui trovere l'intera lista dei nomi dei programmi che compaiono nella sezione Installazioni/Applicazioni; per rimuovere dalla lista una voce di programma basta eliminare la sua corrispondente chiave.

B) Per velocizzare delle operazioni su Windows possiamo senza l'utilizzo del mouse avvalerci di alcune combinazioni di tasti (valido in tutti i sistemi operativi):
1. Tasto Windows: Permette di visualizzare il Menu Start
2. Tasto Windows + D: Minimizza o ripristina tutte le finestre attive
3. Tasto Windows + E: Permette di visualizzare le risorse del sistema
4. Tasto Windows + F: Permette di visualizzare la finistra TROVA per la ricerca di file o cartelle
5. Tasto Windows + Ctrl + F: Permette di visualizzare la finestra TROVA per la ricerca di un computer
6. Tasto Windows + R: Permette di visualizzare la finestar Esegui
7. Tasto Windows + Shift + M: Ripristina tutte le finestre minimizzate
8. Tasto Windows + L: Permette di bloccare l'accesso al sistema
9. Tasto Windows + U: Permette di aprire le Utility Manager

C) Come cambiare il serial number di windows 2003:
1. Aprire il registro di configurazione(RegEdit) ----Start/Esegui/Regedit
2. Posizionarsi sulla seguente chiave:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\Current Version\WPAEvents
Qui cliccare con il tasto di destra sulla chiave OOBETimer e selezionare la voce "modifica dato binari"; a questo punto modoficare e eliminare uno dei seguenti dati come di seguito illustro (DE 4D F1 ----basta solamente modificare DE). Chiudere il registro, andare di nuovo su Start, Esegui e scrivere: %systemroot%\system32\oobe\msoobe.exe /a
Partirà l'utility di per l'attivazione di Windows, dovrete selezionare "attivazione via telefono", "cambia codice prodotto". Inserite il nuovo codice e cliccate su CAMBIA.
Terminata la procedura dovrete riavviare il computer e ritornerete su Windows andate su Start, Esegui e digitate il seguente codice: %systemroot%\system32\oobe\msoobe.exe /a-

Panoramica su Ado .Net

Ado.Net è la nuova tecnologia utilizza in .NET per la connessione ai database, fondata su Ado (Active Data Object). I componenti che Ado.Net mette a disposizione a noi programmatori sono i seguenti:
A) I DataSet e DataTable che sono oggetti ottimizzati allo scopo di gestire insiemi disconnessi di dati tra Internet ed Intranet;
B) I tradizionali oggetti Connection e Command ed il nuovo oggetto DataReader. Nel dettaglio in Ado.Net troviamo l'OleDbConnection e l'SqlConnection che rappresentanto le connessioni ai database come era in passato per l'oggetto Connection di Ado;
C) l'OleDbCommand e l'SqlDbCommand che rappresentano le stringhe di testo Sql da inviare direttamente al database e assomigliano all'oggetto Command di Ado;
D) Gli oggetti OleDbDataAdapter e SqlDbDataAdapter, i quali contengono i comandi Select, Insert, Update e Delete di gestione del Database. Questi oggetti sono utilizzabili per collegare il Database all'oggetto Dataset;
E) l'oggetto Dataset contiene una copia dei dati effettivi e da questo punto di vista è simile all'oggetto RecordSet disconnesso di Ado. Nell'oggetto DataSet possono essere inseriti gli oggetti DataRelation e Contraint, che rappresentano, rispettivamente, le relazioni tra le tabelle dati e le limitazioni cui sono soggetti i dati che vi sono contenuti. L'oggetto DataSet può inoltre contenere oggetti DataTable, che a loro volta possono contenere oggetti DataColumn e DataRow. Utilizzando gli oggetti DataTableMapping e DataColumnMapping, è possibile fare in modo che un dataset associ le tabelle e le colonne di un database agli oggetti DataTable e DataColumn rispettivi

F) Gli oggetti SqlDataReader e OleDbReader rappresentano lettori di dati connessi, di tipo forward-only e di sola lettura. Si rivelano particolarmente utili se siete in grado di mantenere una connessione costante a un database e desiderate semplicemente leggere, e non modificare, i dati, caso in cui la creazione di un oggetto DataSet non è necessaria. Un lettore di dati assomiglia a un oggetto Recordset connesso, di tipo forward-only e di sola lettura di ADO

Formattazione numerica dei TextBox

Spesso ci troviamo di fronte alla situazione di formattare un valore numerico inserito in una Textbox...
Di seguito illustro alcuni esempi di formattazione di una valore numerico inserito in NET:

1 - Restituire un numero evente il separatore delle migliaia e dei decimali:
Me.Textbox1.Text = String.Format("Il valore è {0:N}", 1000.789)
quindi come risultato nella Text avremo: "Il valore è 1.000,79"

2 - Restituire un numero avente separatore delle migliaia e almeno 4 cifre decimali:
Me.Textbox1.Text = String.Format("Il valore è {0:N4}", 1000.789)
quindi come risultato nella Text avremo: "Il valore è 1.000,7890"

3 - Restituire un numero avente il separatore delle migliaia e almeno 6 cifre decimali:
Me.Textbox1.Text = String.Format("Il valore è {0:N6}", 1000.789564378)
quindi come risultato nella Text avremo: "Il valore è 1.000,789564"

4 - Restituire un numero di otto cifre, anteponendo ad esso una serie di 0:
Me.Textbox1.Text = String.Format("Il valore è {0:D8}", 1000)
quindi come risultato nella Text avremo: "Il valore è 00001000"

5 - Restituire un numero di dieci cifre, anteponendo ad esso una serie di 0:
Me.Textbox1.Text = String.Format("Il valore è {0:D10}", 1000)
quindi come risultato nella Text avremo: "Il valore è 0000001000"

6 - Restituire un numero in forma scientifica:
Me.Textbox1.Text = String.Format("Il valore è {0:E}", 1000.789)
quindi come risultato nella Text avremo: "Il valore è 1,000789E+003"

7 - Restituire un numero in forma percentuale, aggiungendo il simbolo %:
Me.Textbox1.Text = String.Format("Il valore è {0:P}", 0.7895)
quindi come risultato nella Text avremo: "Il valore è 78,95%"

Creazione di un Setup in .Net e controllo durante l'installazione della presenza del Framework 1.1 e dell'MDAC

Se desiderate che il vostro progetto di Setup, al momento dell'installazione, verifichi la presenza sul computer del Framework 1.1 e del MDAC 2.6 o superiore e, nel caso di mancanza, procedere alla loro installazione automaticamente, il primo passo da copiere è di installare sul vostro pc un Plug-in fornito dalla Microsoft chiamato "BootStrapper Plug-In". Di seguito posto due link da cui poter fare il download di questo plug-in:

http://www.microsoft.com/downloads/details.aspx?displaylang=it&FamilyID=627921a0-d9e7-43d6-a293-72f9c370bd19
http://support.microsoft.com/default.aspx?scid=kb;it;888469

Una volta scarica ed installato il plug-in potrete iniziare la procedura per la creazione del vostro Setup di installazione come di seguito vi illustrerò....
Le fasi da seguire potrebbero essere molteplici in quanto il .Net permette all'operatore di una potenzialità non indifferente per la gestione ecreazione di un pacchetto di Setup, ma io vi semplificherò la vita....

1 - Aggiungere al progetto generale WindowsApplication un nuovo progetto per la creazione di un pacchetto di installazione (vedi figura)

Successivamente e, per questo motivo lo cito ora perchè è molto importante, al fine di avere una corretta compilazione del file di Setup, bisogna impostare l'avvio della compilazione in modalità Release (vedi figura)


Una volta che ci troviamo di fronte al file di progetto come primo passaggio dobbiamo aggiungere il file EXE del software da nio creato che, nel progetto di creazione del pacchetto di installazione, si chiama OutPut progetto (vedi figura 1-2)
1
2
N.b. una volta importato il file primario, esso si porterà con se anche tutti i relativi file di dipendenza (vedi figura)

2) Entrando nell'erea editor del registro di sistema, il progetto permette all'utente di settare direttamente i parametri che si desidera, nel registro di configurazione. (vedi figura)

3) Se si desidera settare i vari parametri identificati del progetto, tipo la visualizzazione del nome del software durante l'installazione o settare il nome del produttore ed anche il codice di versione del prodotto, basta cliccare sulla voce che identifica il nome del progetto di Setup ed in automantico apparirà a destra, nella classica finestra delle proprietà, le varie voci citate precedentemente e che potrete settare. (vedi figura)

Per rilevare ed installare automanticamente il Framework ed l'MDAC sul computer

FRAMEWORK
4) Per far si che il vostro progetto di Setup esamini la presenza sul computer di destinazione sia del Framework 1.1 e dell'MDAC 2.6 o superiore o in mancanza di essi procedere alla loro installazione automaticamente, bisogna procedere in questo modo:
Aprire l'editor delle condizioni di avvio. (vedi figura)

Apparirà successivamente una schermata dove troverete in elecon già presente .Net Framwork. (vedi figura)

5) A questo punto cliccate con il tasto destra del mouse sulla voce: "Cerca nel computer di destinazione" e scegliere nel menu a tendina la voce: "Aggiungi ricerca file". (vedi figura)

Una volta effettuata tale procedura vi verrà aggiunto di default nel menu ad "albero" la seguente voce: "Cerca file 1" il quale potete rinominare. Fatto questo devete accedere alla proprietà di questo file ed eseguire alcuni settaggi. (vedi figura).

FileName= Specifica il nome del file da ricercare
Folder = Specifica la cartella in cui verrà avviata la ricerca del file
Property = Specifica la proprietà denominata a cui è possibile accedere al momento dell'installazione per modificare l'installazione in base ai risultati di ricerca.

MDAC
6) Cliccare con il tasto di destra del mouse sulla voce “Condizioni di avvio” e scegliere Aggiungi condizione di avvio. (vedi figura)

7) Aggiunta una condizione di avvio vi consiglio di rinominarla in MDAC. (vedi figura)

Una volta attribuito il nome bisogna accedere alle proprietà della condizione appena creata. (vedi figura)

Condition = Specifica la condizione che deve essere soddisfatta (valutata=True) al momento dell'installazione del software.
InstallUrl = Collegamenti ad una risorsa contenente informazioni per l'installazione di un componente esterno
Message = Specifica il messaggio da visualizzare quando una condizione viene valutata = False al momento dell'installazione
8) Fatto questo bisogna cliccare con il tasto destra del mouse sulla voce: "Cerca nel computer di destinazione" ed aggiungere la seguente voce: "Ricerca Registro di sistema" dal menu a tendina. (vedi figura)

Succesivamente effettura dei settaggi sulle proprietà di questa voce. (vedi figura)

Property = Specifica una proprietà denominata a cui è possibile accedere al momento dell'installazione per modificare l'installazione in base ai risultati della ricerca.
RegKey = Specifica la chiave del Registro di sistema da ricercare.
Root = Specifica la chiave principale per una ricerca nel Registro di sistema.
Value = Specifica il valore del Registro di sistema da ricercare.

Eseguite tutte le fasi elencate precedentemente, il quadro delle condizioni di avvio(Setup1) apparirà in questo modo: (vedi figura)

Terminato tutto dovrete solo compilare il progetto. Al conclusione del processo di compilazione nella directory principale del progetto troverete i seguenti file: (vedi figura).

Aprite il file Settings.ini e troverete il seguete elenco da settare in base alle vostre esigenze:
[Bootstrap]
MsiPath=Setup1.msi
ProductName=
MdacVersion=2.81 (per esempio setto la versione 2.8)
BootstrapFx=true
FxInstallerPath=d:\ (directory in cui si trova il file dotnetfx.exe)
LanguageID=1040
BootstrapLangPack=true
LangPackInstallerPath=d:\ (directory in cui si trova il file langpack.exe)
BootstrapMdac=true
MdacInstaller Path=d:\ (directory in cui si trova il file mdac_typ.exe)

Sql: Le funzioni principali...

Essendo un linguaggio imperativo, SQL o Structured Query language non richiede la specifica di sequenze di operazioni, ma permette di specificare le proprietà logiche delle informazioni ricercate. Esso si divide in tre sottoinsiemi:

  • DDL (Data Definition Language) - permette di creare e cancellare database o di modificarne la struttura
  • DML (Data Manipulation Language) - permette di inserire, cancellare e modificare i dati
  • DCL (Data Control Language) - permette di gestire gli utenti e i permessi

Operatori
Gli operatori, messi a disposizione dal SQL standard si dividono in quattro categorie:
  • Operatori di confronto
  • Operatori aritmetici
  • Operatori condizionali
  • Operatori logici

Operatori di confronto
Gli operatori di confronto servono a determinare uguaglianze e disuguaglianze tra valori e ad effettuare ricerche all'interno dei dati. Di seguito uno schema tabellare:

1. = Esprime uguaglianza tra due valori
2. LIKE Esprime somiglianza tra due valori
3. <> Stabilisce se un valore è maggiore di un altro
5. <= Stabilisce se un valore è minore o uguale di un altro 6. >= Stabilisce se un valore è maggiore o uguale di un altro
7. <> Stabilisce se due valori sono diversi tra loro
8. BETWEEN Recupera un valore compreso tra due valori
9. IN Stabilisce se un valore è contenuto in una lista di valori possibili
10. EXISTS Stabilisce se un determinato record esiste

Operatori aritmetici
Gli operatori aritmetici effettuano calcoli all'interno di una ricerca. Di seguito uno schema tabellare:

1. + Effettua un'addizione
2. - Effettua una sottrazione
3. * Effettua una moltiplicazione
4. / Effettua una divisione

Operatori condizionali
L'unico operatore condizionale di SQL è WHERE (DOVE) e serve a definire criteri di ricerca mirati. Nei prossimi capitoli lo vedremo spesso in azione.
Operatori logici
Gli operatori logici di SQL sono AND (E), OR (O, OPPURE) e NOT (non); possono essere ripetuti più volte all'interno dell'elenco delle condizioni di ricerca.
L'operatore logico AND, che lega due (o più) condizioni, serve ad indicare alla ricerca di restituire tutte le tuple per le quali le due (o più) condizioni espresse sono tutte vere contemporaneamente.
L'operatore logico OR, che lega due (o più) condizioni, serve ad indicare alla ricerca di restituire tutte le tuple per le quali anche soltanto una delle due (o più) condizioni espresse è vera.
L'operatore NOT inverte il valore ad esso associato: se è vero restituisce un valore falso, mentre se è falso restituisce un valore vero.
L'uso delle parentesi tonde ( ) all'interno dell'elenco delle condizioni di ricerca consente di combinare condizioni differenti utilizzando entrambi i tipi di operatori logici per creare condizioni complesse.
Manipolazione dei dati
DML fornisce i comandi per inserire, modificare, eliminare o leggere i dati all'interno delle tabelle di un database. La struttura di questi dati deve già essere stata definita tramite il DDL. Inoltre, il permesso di accedere a tali dati deve essere assegnato all'utente tramite il DCL.
Select
Col comando select abbiamo la possibilità di estrarre i dati, in modo mirato, dal database.
Sintassi del comando select
SELECT [ ALL | DISTINCT ] elementi_selezione
FROM riferimenti_tabella
[ WHERE espressione_condizionale ][ ORDER BY ];

dove elementi_selezione è l'elenco dei campi da estrarre, riferimenti_tabella è l'elenco delle tabella da cui estrarre i dati, espressione_condizionale rappresenta l'elenco delle condizioni, ovvero dei desiderata dell'interrogazione lista_colonne è la colonna o le colonne che devono essere prese come riferimento per l'ordinamento dei dati in uscita.

Un esempio è il seguente:
SELECT cognome, nome, citta_residenza
FROM utenti
WHERE anni >= 18
ORDER BY citta_residenza

Questa query estrae l'elenco di tutti gli utenti maggiorenni ordinando l'output in base alla città di residenza.
La definizione di select è comunque molto più ampia, prevede molte altre opzioni ma in linea di massima con queste opzioni si compongono la maggior parte delle interrogazioni.

INSERT
Il comando insert ha la funzione di inserire i dati nelle tabelle.
Le colonne (o campi) di destinazione dei valori possono essere o meno dichiarate nel comando. Se non vengono dichiarate, è necessario passare al comando un valore per ogni colonna della tabella, rispettando rigorosamente l'ordine delle colonne stesse. Se, invece, le colonne di destinazione vengono dichiarate, è possibile indicare le sole colonne per le quali vengono passati dei valori, purchè vengano inseriti comunque i valori per tutte le colonne not null (che non possono essere nulle) della tabella.
Di per sé il comando insert opera inserendo in tabella una sola riga per volta. È possibile, però, inserire più di una riga "in modo automatico" passando all'insert una serie di righe (o tuple) risultanti da un comando di select, purchè tali righe siano compatibili con le colonne della tabella su cui si inseriscono i dati.

Sintassi del comando insert
Insert semplice:
INSERT INTO nome_tabella
VALUES (elenco valori, tutti, rispettando l'ordine dei campi della tabella);
oppure
INSERT INTO nome_tabella (elenco dei campi interessati dall'inserimento)
VALUES (elenco valori, tutti, rispettando l'ordine dei campi dichiarati sopra);

Insert mediante select:
INSERT INTO nome_tabella (elenco dei campi interessati dall'inserimento)
SELECT ...;

UPDATE
Il comando update ha la funzione di modificare i dati delle tabelle.
Il nome di ogni campo che deve essere modificato va dichiarato dopo la parola chiave SET e deve essere seguito dal simbolo " = " (uguale) e dal nuovo valore che deve assumere.
È possibile modificare più campi della stessa riga in un unico comando update, separandoli l'uno dall'altro con il simbolo " , " (virgola).
Il comando generico aggiorna tutte le righe della tabella. È possibile restringerne il numero applicando la parola chiave aggiuntiva WHERE, che permette di effettuare una selezione qualitativa delle righe imponendo delle condizioni sui dati presenti nelle righe prima dell'aggiornamento.

Sintassi del comando update
Update generico:
UPDATE nome_tabella SET nome_campo1 = valore1_nuovo, nome_campo2 = valore2_nuovo,...;

Update con condizione:
UPDATE nome_tabella
SET nome_campo1 = valore1_nuovo,
nome_campo2 = valore2_nuovo
WHERE nome_campo3 = valore;

DELETE
Delete generico:
Delete From nome_tabella;

Delete con codizione:
Delete From nome_tabella WHERE nome_campo1=valore;

Crystal Report in .Net

Come molti di noi ben sanno nella maggior parte dei casi il risultato finale di un programma sono la creazione delle stampe e dei grafici. Esistono software che da molto tempo hanno permesso a noi programmatori di poter progettare e realizzare stampe chiare e soprattutto professionali.
Uno di questi è il CRYSTAL REPORT, software creato dalla famosa casa produttrice Segate e che Microsoft ha integrato in Visual Studio Net.
Tutti i compilatori della famiglia Visual Studio .NET (Vb.Net - C# - C++.net – J++.Net) sono funzionali e compatibili su sistemi basati e realizzati con tecnologia NT, quindi a loro volta tutti i software realizzati con questi compilatori saranno funzionali su sistemi tipo Windows 2000 – NT – Windows Xp e Windows 2003 Server ecc. di conseguenza anche tutto ciò che verrà realizzato con Crystal Report .Net sui sistemi appena citati non determinerà alcun problema.
Ma il grosso dilemma nasce quando ognuno di noi realizza un software con le sue rispettive stampe il quale è destinato anche ad essere utilizzato su piattaforma Windows 98.
Per chi ha riscontrato dei problemi nella funzionalità delle proprie stampe su Windows 98 è bene che segua le procedure che verranno illustrate successivamente e vedrete che i vostri problemi con Crystal Report .Net su Win 98 verranno risolti.

Fase 1
Per prima cosa nel momento in cui andate a realizzare i pimi dei progetti di stampa con Crystal Report .Net quest’ultimo dovrà essere registrato.
Ogni programmatore avrà a disposizione un Codice chiamato License Key il quale dovrà essere inserito in un file .msm ossia un modulo unione che permetterà di licenziare tutti i progetti di stampa

Il modulo di unione che dovrà essere inserito nel progetto di Setup si chiama:
Crystal_regwiz2003.msm
mentre il campo in cui bisognerà inserire il codice di registrazione si chiama:
MergeModuleProperties.

Una volta registrato il prodotto si procederà nella realizzazione e progettazione delle stampe. Terminata tale realizzazione, ogni programmatore per poter far visualizzare sul proprio programma un’anteprima di stampa dovrà usufruire del componente CrystalReportViewer

Ed utilizzare il seguente codice:
Imports CrystalDecisions.CrystalReports.Engine
Dim
prova As New ReportDocument
prova.Load("C:\esempio.rpt")
CrystalReportViewer1.ReportSource = prova

Nei sistemi Windows Xp – 2000 – 2003 – NT, come ho detto precedentemente non ci saranno problemi, basterà solamente creare il progetto di Setup e procedere alla sua installazione.

Invece nel caso di sistemi Windows 98 – 98Se – 98Me non serve solo ciò che si è detto prima ma occorrere in ordine effettuare le seguenti installazioni:

1. Internet Explorer
2. MDAC 2.8
3. Framework
4. Programma(applicativo)
5. Copiare nella cartella C:\Windows\System32 il seguente file: dbghelp.dll

N.B. Questo file si troverà nel proprio personal computer sul quale è installato il compilatore Vb net


domenica 11 marzo 2007

Stringhe di connessione ai database

Questo post illustra le varie possibili connessioni che possono essere effettuate su Database Sql Server 2000 e 2005:

SQL Server

  • ODBC
Connessione Standard Security:
"Driver={SQL Server};Server=Zues;Database=Northwind;Uid=sa;Pwd=prova;"
Connessione Trusted connection:
"Driver={SQL Server};Server=Zeus;Database= Northwind;Trusted_Connection=yes;"


  • OLE DB, OleDbConnection (.NET)
Connessione Standard Security:
"Provider=sqloledb;Data Source=Zeus;Initial Catalog= Northwind;User Id=sa;Password=prova;" Connessione Trusted connection:
"Provider=sqloledb;Data Source=Zeus;Initial Catalog= Northwind;Integrated Security=SSPI;"
Connessione tramite indirizzo IP:
"Provider=sqloledb;Data Source=100.100.200.300,1433;Network Library=DBMSSOCN;Initial Catalog= Northwind;User ID=sa;Password=prova;"

(1433 è la porta di default di connessione di Sql Server)

  • SqlConnection (.NET)
Connessione Standard Security:
"Data Source=Zeus;Initial Catalog= Northwind;User Id=sa;Password=prova;"
- or -

"Server=Zeus;Database= Northwind;User ID=sa;Password=prova;Trusted_Connection=False"
Connessione Trusted connection:

"Data Source=Zeus;Initial Catalog= Northwind;Integrated Security=SSPI;"
- or -
"Server=Zeus;Database= Northwind;Trusted_Connection=True;"
Connessione tramite indirizzo IP:

"Data Source=100.100.200.300,1433;Network Library=DBMSSOCN;Initial Catalog= Northwind;User ID=sa;Password=prova;"

-------------------------------------------

SQL Server 2005

  • SQL Native Client ODBC Driver
Connessione Standard Security:
"Driver={SQL Native Client};Server=Zeus;Database= Northwind;UID=sa;PWD=prova;" Connessione Trusted connection:
"Driver={SQL Native Client};Server=Zeus;Database= Northwind;Trusted_Connection=yes;"

  • SQL Native Client OLE DB Provider
Connessione Standard Security:
"Provider=SQLNCLI;Server=Zeus;Database= Northwind;UID=sa;PWD=prova;" Connessione Trusted connection:
Provider=SQLNCLI;Server=Zeus;Database= Northwind;Trusted_Connection=yes;"

  • SqlConnection(.NET)
Connessione Standard Security:
"Data Source=Zeus;Initial Catalog= Northwind;User Id=sa;Password=prova;"
- or -

"Server=Zeus;Database= Northwind;User ID=sa;Password=prova;Trusted_Connection=False"
Connessione Trusted connection:
"Data Source=Zeus;Initial Catalog= Northwind;Integrated Security=SSPI;"
- or -

"Server=Zeus;Database= Northwind;Trusted_Connection=True;"

giovedì 8 marzo 2007

Aggiornamento da Visual Basic 6.0 a Visual Basic Net

Tutti coloro che hanno conosciuto il mondo di Visual Basic avranno senz’altro utilizzato la versione 6.0. Nel momento in cui è nato Visual Basic .Net ci siamo trovati di fronte a un nuovo compilatore, il cui aspetto innovativo basato sul CLR ossia il Common Lenguage Runtime, ha sostanzialmente cambiato le procedure ed il livello di gestione del codice degli oggetti. Per questo motivo Visual Basic .Net ha integrato al proprio interno un programma di aggiornamento che permette con estrema facilità l’aggiornamento del codice da Visual basic 6.0 a Visual Basic .Net stesso. Nonostante sia preferibile evitare di utilizzare le classi di compatibilità, la procedura di aggiornamento guidato potrebbe utilizzarle durante l’aggiornamento dei progetti dalla vecchia alla nuova versione di Visual Basic. Io, in base a delle esperienze, personalmente consiglio di valutare bene e stabilire se effettivamente vale la pena procedere nell’aggiornamento. Il perché di questa valutazione nasce anche dal fatto che avvolte dopo la procedura di aggiornamento, gran parte del codice deve essere riscritto completamente. Per esempio:
Visual basic .Net ed il Framework permettono di gestire delle problematiche del tutto nuove come l’ADO .NET che espone il nuovo modello di programmazione disconnessa, diverso dal classico modello ADO. Quando si aggiorna un progetto Visual Basic 6.0, la procedura di aggiornamento non riuscirà a convertire il codice in ADO .NET ma utilizzerà come mediatore i componenti COM come l’ADO.
Visual Basic .Net permette di gestire servizi di Windows ma, durante la fase di aggiornamento questi non traggono alcun vantaggio, quindi un’eventuale aggiornamento di un progetto Visual Basic 6.0 non riuscirebbe a sfruttare in pieno i nuovi servizi che offre il Framework.
Infine in ogni caso, la procedura di aggiornamento guidato non è in grado di aggiornare alcuni tipi di progetti scritti in Visual Basic 6.0 come ad esempio applicazioni DHTML e le associazioni tra DAO e RDO.
Premesso tutto ciò che ho appena citato, per eseguire la procedura guidata di aggiornamento, basta apri il file di progetto Visual Basic 6.0 (file con estensione .vbp) in Visual Basic .Net e attenersi alle istruzioni che verranno di seguito illustrate graficamente.

Fase 1.
Fase 2. Fase 3. Fase 4. Fase 5.

La procedura guidata di aggiornamento procederà nell’analizzare il codice ed eseguire direttamente la conversione dei tipi di dati, ad esempio, dal Long a Integer e da Variant ad Object.
Inoltre per facilitare l’operatore sul controllo della procedura di aggiornamento, quest’ultima inserisci all’interno dei messaggi di avviso, errore o di documentazione. Al termine dell’aggiornamento nel progetto viene creato un file HTML di riepilogo, che mostra ogni singolo errore e fornisce informazioni su come risolvere il problema.





mercoledì 7 marzo 2007

Realizzare una connessione DSN di sistema con .NET

Tra le varie procedure di connessione ad un Database esiste la connessione tramite DSN o meglio Data Source Name.
In .Net si possono realizzare connessioni DSN di sistema con notevole semplicità ovviamente sfruttando il driver ODBC.(consiglio la vers. 3.51) e, tramite l'uso di un' API di Windows.
L'esempio seguente illustrerà come è possibile realizzare direttamente da una WinForm una connessione Dsn.
Innanzitutto construiamo una form come da figura:



Una volta terminata la realizzazione della form con i relativi campi necessari per l'input dei dati andiamo a dichiarare in un modulo l'APi di windows ed alcune constanti indispensabili per la creazione del Dsn:
-------------------------------------------
Module Module1
Public Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Integer, ByVal fRequest As Short, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Integer
Public Declare Function SQLCreateDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Integer, ByVal lpszDSN As String) As Integer

Public Const ODBC_ADD_DSN As Short = 1
Public Const ODBC_ADD_SYS_DSN As Short = 4
End Module
-------------------------------------------

Fatto questo possiamo scrivere il seguente codice all'interno del pulsante "Conferma attivazione":
-------------------------------------------
Private Sub Conferma_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Conferma.Click

Dim odbcs As String
Dim RISULTATO As Integer

If WizardCheck.CheckState = System.Windows.Forms.CheckState.Checked Then
odbcs = NomeDSN.Text
RISULTATO = SQLCreateDataSource(Me.Handle.ToInt32, odbcs)
Else
odbcs = "DSN=" + NomeDSN.Text + ";"
odbcs = odbcs + "DBQ=" + PathDB.Text + ";"
odbcs = odbcs + "DESCRIPTION=" + Descrizione.Text +";"
odbcs = odbcs + "UID=" + Utente.Text +";"
odbcs = odbcs + "PWD=" + Password.Text +";"
odbcs = odbcs + "DATABASE=" + DatabasePred.Text +";"
odbcs = odbcs + vbNullChar

If _TipoDSN_1.Checked = True Then
RISULTATO = SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, NomeDriver.Text, odbcs)
End If
End If

If RISULTATO <> 0 Then
MsgBox("Creazione DSN riuscita con successo")
Else
MsgBox("Creazione DSN fallita?)
Me.Close()
End If
End Sub
-------------------------------------------

Se la creazione manuale del DSN è troppo complicata, potrete anche avviare lo Wizard (interfaccia guidata) ma saranno necessarie alcune righe aggiuntive di codice:
-------------------------------------------
Private Sub WizardCheck_CheckStateChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles WizardCheck.CheckStateChanged

Dim STATO As Boolean

STATO = (WizardCheck.CheckState = System.Windows.Forms.CheckState.Unchecked)
ParametriFrame.Enabled = STATO
NomeDriverLabel.Enabled = STATO
NomeDriver.Enabled = STATO
PathDBLabel.Enabled = STATO
PathDB.Enabled = STATO
DescrizioneLabel.Enabled = STATO
Descrizione.Enabled = STATO
UtenteLabel.Enabled = STATO
Utente.Enabled = STATO
PasswordLabel.Enabled = STATO
Password.Enabled = STATO
DatabasePredLabel.Enabled = STATO
DatabasePred.Enabled = STATO
_TipoDSN_1.Enabled = STATO
End Sub
-------------------------------------------

Lanciando la nostra applicazione d'esempio e compilando i campi con i relativi dati, se la procedura verrà eseguita correttamente un messaggio lo confermerà.
Una prova del nove potrete farla verificando dal pannello di controllo l'effettiva creazione del Dsn di sistema