mercoledì 14 maggio 2008

Gridview applicare una colonna di tipo checkbox

Per il sito iprogrammatori http://www.iprogrammatori.it/articoli/web-marketing/controllo_checkbox_gridview.asp ho scritto un articolo, che riporto qui.





Figura 1

Introduzione

In questo articolo, vedremo come applicare in un controllo GridView un checkbox, e selezionare o deselezionare gli elementi di ogni riga.

Dopo aver creato un nuovo progetto web in Visual Studio 2005, inseriamo nella pagina web, un controllo gridview e due pulsanti, come mostra in figura 1.

Impostazione delle colonne del gridView.

Il gridView sarò composto da tre colonne, una di tipo checkbox e due che fanno riferimento ad una fonte dati (colonne di un datatable), nell'intestazione del gridiview, si troverà un checkbox che permette di selezionare e deselezionare tutti gli elementi checkbox di quella pagina.

Di seguito si riporta l'impostazione delle colonne.



<



Columns

>







<asp:TemplateField

>







<HeaderTemplate

>







<input id="Seleziona" onclick="javascript:Seleziona(this);" runat

="server"







type="checkbox"

/>







</HeaderTemplate

>







<ItemTemplate

>







<asp:CheckBox ID="chkSeleziona" runat="server" Text=" " Width="18px"

/>







</ItemTemplate

>







</asp:TemplateField

>







<asp:BoundField HeaderText="Valore A" DataField="Valore A"

/>







<asp:BoundField HeaderText="Valore B" DataField="Valore B"

/>







</Columns

>

Come mostrato dal codice html, l'evento onClick del controllo checkbox, eseguirà una funzione javascript, la quale seleziona o deseleziona i vari checkbox nel controllo.

Di seguito si riporta il codice della funzione javascript.
<

script language="javascript">

function
Seleziona(Chkbox){



var theBox= (Chkbox.type=="checkbox"
) ?Chkbox : Chkbox.children.item[0];

stato=theBox.checked;

elemento=theBox.form.elements;



for
(i=0;i<elemento.length;i++)

if(elemento[i].type=="checkbox"
&&elemento[i].id!=theBox.id)

{



if
(elemento[i].checked!=stato)elemento[i].click();

}

}
</

script>



Seleziona e deselezina elemento.

Di seguito si riporta il codice in VB.Net e C#. che permette di selezionare e deselezionare gli elementi del controllo gridview.

Questa funzione a differenza della precedente, premette di selezionare e deselezionare gli elementi direttamente dal codice VB.Net e C#.

Codice VB.Net

Private Sub Seleziona(ByVal seleziona As Boolean
)

If (seleziona = True) Then

For conta As Integer = 0 To
GridView1.Rows.Count - 1

Dim ChkDeSeleziona As CheckBox = CType(GridView1.Rows(conta).FindControl("chkSeleziona"
), CheckBox)ChkDeSeleziona.Checked =

True

Next

Else

For conta As Integer = 0 To
GridView1.Rows.Count - 1

Dim ChkSeleziona As CheckBox = CType(GridView1.Rows(conta).FindControl("chkSeleziona"
), CheckBox)ChkSeleziona.Checked =

False

Next

End If

End
Sub

Codice C#
private

void Seleziona(bool
seleziona){



if
(!seleziona){



for (int
contatore = 0; contatore < GridView1.Rows.Count; contatore++){



CheckBox ChkDeSeleziona = (CheckBox)GridView1.Rows[contatore].FindControl("chkSeleziona"
);ChkDeSeleziona.Checked =

false
;}

}



else
{



for (int
contatore = 0; contatore < GridView1.Rows.Count; contatore++){



CheckBox ChkSeleziona = (CheckBox)GridView1.Rows[contatore].FindControl("chkSeleziona"
);ChkSeleziona.Checked =

true
;}

}

}

Per selezionare l'elemento, dovrebbe eseguire la funzione passando come valore true, mentre per deselezionare tali elementi utilizzeremo false.

Di seguito si riporta un esempio di codice.
VB.Net



Protected Sub BtnSeleziona_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
BtnSeleziona.Click

Seleziona(

True
)



End Sub


Protected Sub BtnDeseleziona_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnDeseleziona.Click

Seleziona(

False
)

End Sub

C#
protected

void BtnSeleziona_Click(object sender, EventArgs
e){

Seleziona(

true
);}


protected

void BtnDeseleziona_Click(object sender, EventArgs
e){

Seleziona(

false
);}



Conclusioni:

In questo articolo, si è visto come applicare in un controllo gridiview delle checkbox e permettere la selezione e deselezione sia con il linguaggio VB.Net e sia con C#.

Tramite la parola download è possibile scaricare il file di esempio utilizzato nell'articolo.

Download



venerdì 2 maggio 2008

Creare un calendario per Microsoft Access 2007 tramite VBA.

Pubblicato sul sito iprogrammatori http://www.iprogrammatori.it/articoli/programmazione/creare_calendario_microsoft_access.asp un mio articolo riguardante la programazione Access tramite vba.
In questo articolo, vedremo come creare un calendario da utilizzare nelle maschere di Microsoft Access 2007, tramite codice Visual Basic Application. Il calendario verrà visualizzato al click di un pulsante e visualizzare in una casella di testo, la data selezionata.







Figura 1


Creazione del database.

Prima di vedere il codice Visual Basic Application, occorre creare il database, si crea un nuovo database vuoto, fatto ciò dobbiamo creare delle maschere nella quali tramite un pulsante richiama la maschera del calendario, la maschera calendario avrà il compito di inserire la data selezionata in una casella di testo della maschera che ha aperto il calendario.

Si crea un nuova maschera, selezionare la voce di menu crea e poi nella barra degli strumenti, la voce struttura maschera. Questa maschera avrà il compito di visualizzare il calendario.

Come mostrato in figura 2







Figura 2


Tramite il pulsante inserisci controllo ActiveX, nella finestra che viene aperta (figura 2) selezioniamo la voce “Controllo Calendario 12.0” selezioniamo tale voce e confermiamo tramite il pulsante ok.

Fatto ciò inseriamo due pulsanti, uno per la conferma della data selezionata il quale avrà come testo la dicitura “Conferma”, e l’altro per la chiusura della finestra con la dicitura “Chiudi”, senza che venga riportata la data selezionata. La finestra dev’essere simile come riportata in figura 2.

Terminata la fase per l’impostazione della finestra, scriviamo il codice VBA, che avrà il compito di riportare la data selezionata.

Selezioniamo il pulsante quello per la chiusura della finestra, e nell’evento click di tale pulsante, inseriamo il seguente codice che permette la chiusura della maschera.

Codice Vba per il pulsante della chiusura:


Private Sub Chiudi_Click()


On Error GoTo Errore


DoCmd.Close


Exit Sub


Errore:


MsgBox "Si è verificato il seguente errore: " & Err.Description, vbCritical, "Calendario"


End Sub



Sempre nell’editor VBA, inseriamo due variabili pubbliche, che avranno il compito di riportare il nome della maschera e del controllo che andrà aggiornato.

Il codice va messo in alto, come mostrato qui di seguito.


Option Compare Database


Public NomeControllo As String


Public NomeMaschera As String





Per l’evento click del pulsante conferma, andrà inserito il codice che avrà il compito di riportare nel controllo della maschera che ha avviato il calendario la data selezionata.

Di seguito si riporta il codice per l’evento click del pulsante di conferma.


Private Sub Conferma_Click()


On Error GoTo Errore


Dim Data As String


'Rilevo la data


Data = Calendario.Value


Dim intConta As Integer


'ciclo per tutte le machere e poi per tutti i controlli


Dim IntContaMaschere As Integer


For IntContaMaschere = 0 To CurrentProject.AllForms.Count - 1


If Application.Forms(IntContaMaschere).Name = NomeMaschera Then


Dim intContaControlli As Integer


For intContaControlli = 0 To Application.Forms(IntContaMaschere).Controls.Count - 1


If Application.Forms(IntContaMaschere).Controls.Item(intContaControlli).Name = NomeControllo Then


'Trova la mashcera e controllo, imposto la data


Forms(Application.Forms(IntContaMaschere).Name).Controls(Application.Forms(IntContaMaschere).Controls.Item(intContaControlli).Name).SetFocus


Forms(Application.Forms(IntContaMaschere).Name).Controls(Application.Forms(IntContaMaschere).Controls.Item(intContaControlli).Name).Text = Data


'chiudo la finestra


DoCmd.Close


Exit Sub


End If


Next intContaControlli



End If


Next IntContaMaschere


'chiudo la finestra


DoCmd.Close


Exit Sub



Errore:


MsgBox "Si è verificato il seguente errore: " & Err.Description, vbCritical, "Calendario"


End Sub





Creazione della maschera di esempio.

Terminata la creazione della maschera per la visualizzazione del calendario, non ci resta che creare una maschera di esempio.






Figura 3

La maschera dovrà avere tre caselle di testo, tre etichette ed un pulsante il quale avrà il compito di richiamare la maschera per la selezione della data. L’aspetto della maschera dev’essere simile a quella illustrata in figura 3.

Di seguito si riporta il codice per l’evento click del pulsante.


Private Sub calendario_Click()


On Error GoTo Errore



'apro la maschera calendario


DoCmd.OpenForm "Calendario"


'imposto le variabili pubbliche con il nome del controllo e della maschera


Form_Calendario.NomeControllo = Me.txtdata.Name


Form_Calendario.NomeMaschera = Me.Name


Exit Sub



Errore:


MsgBox "Si è verificato il seguente errore: " & Err.Description, vbCritical, "Calendario"



End Sub






Conclusioni:

In questo articolo, abbiamo visto come migliorare l’interfaccia grafica delle maschera con un calendario, il tutto tramite il codice Visual Basic Application. Tramite la parola Download è possibile scaricare il file Microsoft Access 2007 di esempio, completo del codice VBA.

Download esempio




venerdì 25 aprile 2008

Sharepoint 2007 inviare un email tramite .Net (VB.Net e C#)

In questo frammento di codice, viene illustrato come inviare un email in Sharepoint 2007, tramite la tecnologia .Net. Si ricorda di configurare il servizio smtp di sharepoint

Namespace

VB.Net

Imports microsoft.SharePoint.Utilities

C#
using Microsoft.SharePoint.Utilities;

Codice

VB.Net

SPUtility.SendEmail(SPContext.Current.Web, False, False, "destinatario@dominio.it", "oggetto", "testo nella email")

C#
SPUtility.SendEmail(SPContext.Current.Web, false, false,"destinatario@dominio.it", "oggetto", "testo nel corpo");

domenica 6 aprile 2008

Differenza tra due date (VB.Net e C#)

Questo frammento di codice, illustra un modo di come ottenere la differenza tra due date.

Tramite il metodo subtract otteniamo un oggetto timespan, di cui possiamo rilevare la differenza in giorni, ore, minuti e secondi.

Di seguito si riporta l'esempio di codice nel linguaggio VB.Net e C#

VB.Net


Dim data As New DateTime(2008, 3, 20, 10, 20, 5)


Dim data2 As New DateTime(2008, 5, 20, 11, 21, 7)


'ottengo la differenza tra due date


Dim diff As TimeSpan = data2.Subtract(data)


MessageBox.Show("Giorni: " & diff.Days)


MessageBox.Show("Ore: " & diff.Hours)


MessageBox.Show("Minuti: " & diff.Minutes)


MessageBox.Show("Secondi: " & diff.Seconds)


'differenza in un unico passaggio


MessageBox.Show(diff.ToString())


C#


DateTime data = new DateTime(2008, 3, 20, 10, 20, 5);


DateTime data2 = new DateTime(2008, 5, 20, 11, 21, 7);


//ottengo la differenza tra due date


TimeSpan diff = data2.Subtract(data);


MessageBox.Show("Giorni: " + diff.Days);


MessageBox.Show("Ore: " + diff.Hours);


MessageBox.Show("Minuti: " + diff.Minutes);


MessageBox.Show("Secondi: " + diff.Seconds);


//differenza in un unico passaggio


MessageBox.Show(diff.ToString());

VBA informazioni sul sistema Hard disk

Il seguente frammento di codice, permette di rilevare alcune informazione relativo al sistema, in particolare Hard Disk.
Aggiungere il riferimento a Microsoft Scripting RunTime.
'caricare il file system objectDim Fso As FileSystemObjectDim ObjDrive As DriveSet Fso = New FileSystemObjectSet ObjDrive = Fso.GetDrive("C:\")MsgBox "Il numero seriale Hard Disk: " & ObjDrive.SerialNumber, vbInformation, "Drive"MsgBox "Spazio libero: " & ObjDrive.FreeSpace, vbInformation, "Drive"MsgBox "Sistema: " & ObjDrive.FileSystem, vbInformation, "Drive"MsgBox "Quantità massima: " & ObjDrive.TotalSize, vbInformation, "Drive"MsgBox "Nome Hard Disk " & ObjDrive.VolumeName, vbInformation, "Drive"

domenica 6 gennaio 2008

Trucco Avviare la guida formato CHM, tramite Visual Basic Application

I file chm sono file utilizzati per fornire informazioni agli utenti,ossia delle guide, se vogliamo corredare il nostro programma, con una guida, possiamo crearli e poi richiamarli nelle nostre applicazioni.
Tramite le api di Windows, si può richiamare un file chm, in particolare tramite l'api HtmlHelpTopic Di seguito si riporta un esempio di codice.
'dichiarazione api Private Declare Function HtmlHelpTopic Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal hwnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As String) As Long
Di seguito si riporta una funzione che può essere utilizzate nella varie parti del programma.
'funzione per avviare il file chmSub AvviaHtmlHelp(ByVal sHelpFile As String, ByVal sHelpPage As String)Const HH_DISPLAY_TOPIC = &H0On Error Resume Next' apro il file chm nella pagina, passata tramite il parametro sHelpPage
HtmlHelpTopic 0, sHelpFile, HH_DISPLAY_TOPIC, sHelpPageEnd Sub
Frammento di codice da utilizzare nell'evento click di un pulsante o menu:
Call AvviaHtmlHelp("c:\guida.chm", "pagina.htm")

giovedì 20 dicembre 2007

Tools: Creazione di diagrammi in ambiente Visual Studio Net

Oggi segnalo un programma gratuito per Visual Studio Net riguardante la creazione dei diagrammi UML. Tale programma scaricabile dal seguente sito http://www.tangiblearchitect.net/modellingtools.html permette di aggiungere all'ambiente di sviluppo Visual Studio Net, la possibilità di creare diagrammi.

lunedì 17 dicembre 2007

Segnalazione tools:: CMS gratuito mojo


Oggi segnaliamo un programma gratuito di CMS, ossia un software per la gestione dei contenuti di un sito. Mojoportal http://mojoportal.com/ è un progetto gratuito, scritto in C#, per la gestione dei siti, il software funziona sia sotto Windows, che in ambiente Mono (linux o mac) davvero un ottimo strumento per la programmazione web, in ambito .Net.
Che dirvi... buona creazione dei siti :-)))

domenica 4 novembre 2007

Recensione libro: Programmare Microsoft Sql Server 2005

Eccomi qua, vi segnalo questa mia recensione del libro: Programmare Microsoft Sql Server
2005. La potete leggere dal seguente sito http://blog.shareoffice.it/emanuele/archive/2007/11/04/9270.aspx

venerdì 2 novembre 2007

Articolo Filenet: Inserire le queue (code) di Filenet tramite la tecnologia .Net

Articolo Filenet: Inserire le queue (code) di Filenet tramite la tecnologia .Net (Vb.Net e C#)



Figura 1


Introduzione.


In questo articolo vedremo come inserire delle code (valori queue) in Filenet Image Services (IS), utilizzando la tecnologia .Net in particolare con i linguaggi Visual Basic Net e C#. Si crea un nuovo form nel quale inseriamo tre label (per le varie etichette) due caselle di testo (per i valori da inserire, anche in questo caso l'etichette saranno nome e cognome come visto nell'articolo precedente) e due pulsanti, relativi all'inserimento ed alla chiusura della finestra. L'aspetto della finestra dovrà essere simile a quella mostrata in figura 1.


Dichiarazione a livello di form dei vari oggetti e modifica del costruttore.


A livello di form, si creano due oggetti, uno di tipo queue e l'altro di tipo queuequeryspecification, il primo ha il compito di gestire le code, mentre il secondo le ricerche delle queue, di seguito si riporta un esempio di codice.


Vb.Net


Dim ObjQueue As IDMObjects.Queue

Dim ObjQueueQuery As IDMObjects.QueueQuerySpecification

C#


IDMObjects.Queue ObjQueue;


IDMObjects.QueueQuerySpecification ObjQueueQuery;


A questo punto dobbiamo modificare il costruttore della nostra form, che tramite l'oggetto library utilizzato nella form di login discussa negli articoli precedenti, possiamo istanziare i vari oggetti. Di seguito si riporta un esempio di codice delle suddette operazioni. Da notare che la parola anagrafica, corrisponde al workspace mentre dati alla queue


Vb.Net


Public Sub New(ByVal Objlibreria As IDMObjects.Library)

InitializeComponent()


'inizializzo

ObjQueue =

New IDMObjects.Queue

ObjQueueQuery =

New IDMObjects.QueueQuerySpecification

'imposto la classe

ObjQueue = Objlibreria.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue,

"ANAGRAFICA/DATI")

ObjQueueQuery = ObjQueue.CreateQuerySpecification()


End Sub


C#


public

FrmInserisciCode(IDMObjects.Library objlibreria)

{



InitializeComponent();


ObjQueue =

new IDMObjects.Queue ();

ObjQueueQuery =

new IDMObjects.QueueQuerySpecification();

//imposto la classe

ObjQueue = (IDMObjects.Queue) objlibreria.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue,

"ANAGRAFICA/DATI", null, null, null );

ObjQueueQuery = ObjQueue.CreateQuerySpecification();


}


Funzione verifica dati


La funzione verifica dati ha il compito di accertarsi che il valore che si sta inserendo e più precisamente il cognome, non è già stato inserito. Tramite le classi QueueQuerySpecification e QueueEntry si verifica tale esistenza, la prima classe esegue una ricerca, mentre la seconda permette l'inserimento (tramite il metodo insert) dei dati. Se viene generato un errore, in particolare con il codice -2147208689 vuol dire che non esiste un dato relativo al valore di ricerca.


Di seguito si riporta il frammento di codice, utilizzato nella funzione di verifica dati.


Vb.Net



'funzione per la verifica dei dati

Private Sub VerificaDati()

Try

'oggetto

'flag per l'accesso al sistema di filenet

ObjQueueQuery.CheckUser =

False

'Indica i valori delle code

ObjQueueQuery.EvenIfDelayed =

False

'permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.

ObjQueueQuery.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteOK


ObjQueueQuery.MinPriority = 0


'restituisce tutti gli entry anche se sono loccati ossia bloccati

ObjQueueQuery.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK


'filtro i dati

ObjQueueQuery.Filters(

"Cognome").Value = Trim(txtCognome.Text)

'oggetto risultato della query

Dim objQueueEntry As New IDMObjects.QueueEntry()

'Eseguo la ricerca

objQueueEntry = ObjQueueQuery.Browse()


Catch ex As Exception

Dim ObjErrorManager As New IDMError.ErrorManager

Dim ObjErrori As IDMError.Errors

Dim StrTestoErrore As String = ""

Dim objErrore As IDMError.Error

'verifico il tipo di errore

If objErrore.Number = -2147208689 Then

'funzione di inserimento

InserisciCoda()


Else

'il dato esiste

If MessageBox.Show("Il dato esiste, si vuole inserire?", "Nuova Coda", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then

'inserisco il dato

InserisciCoda()


End If

End If


If ObjErrorManager.Errors.Count > 0 Then

ObjErrori = ObjErrorManager.Errors


'ciclo per tutti gli errori

For Each objErrore In ObjErrori

StrTestoErrore = objErrore.Description


Next

Else

StrTestoErrore = ex.Message


End If

MsgBox(StrTestoErrore)


End Try

End Sub

C#


//funzione per la verifica dei dati

private void VerificaDati()

{



try

{




//flag per l'accesso al sistema di filenet

ObjQueueQuery.CheckUser =

false;

//Indica i valori delle code

ObjQueueQuery.EvenIfDelayed =

false ;

//permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.

ObjQueueQuery.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteNotOK ;


ObjQueueQuery.MinPriority = 0;


//restituisce tutti gli entry anche se sono loccati ossia bloccati

ObjQueueQuery.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK ;


//filtro i dati

ObjQueueQuery.Filters[

"Cognome"].Value = txtCognome.Text.Trim();

//oggetto risultato della query

IDMObjects.QueueEntry objQueueEntry =

new IDMObjects.QueueEntry();

//Eseguo la ricerca

objQueueEntry = (IDMObjects.QueueEntry) ObjQueueQuery.Browse();



}


catch (Exception ex)

{




IDMError.ErrorManager ObjErrorManager =

new IDMError.ErrorManager();

IDMError.Errors ObjErrori;


string StrTestoErrore = "";

IDMError.Error ObjErrore;


//verifico che in filenet ci siano errori

if (ObjErrorManager.Errors.Count > 0)

{



ObjErrori = ObjErrorManager.Errors;


//ciclo per tutti gli errori

foreach (IDMError.Error objErrore in ObjErrori)

{



if (objErrore.Number == -2147208689)

{



//funzione di inserimento

InserisciCoda();


}





else

{



if (MessageBox.Show("Il dato esiste, si vuole inserire?", "Nuova Coda", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2) == DialogResult.Yes)

{



//inserisco il dato

InserisciCoda();







}


}


}


}


else

{



StrTestoErrore = ex.Message;


}



MessageBox.Show(StrTestoErrore, "FileNet");



}




Funzione per l' inserimento dati


La funzione per l'inserimento dei dati ha il compito di inserire i valori digitati nelle caselle di testo tramite il metodo insert, dell'oggetto queueentry si effettua l'inserimento, questo metodo va eseguito dopo aver impostato alcune proprietà, le più importanti sono quelle relative ai campi (nome e cognome) che devono essere inclusi tra parentesi (tonde per vb.net e quadre per c#) nella proprietà denominata properties sempre di tale proprietà, impostare a false, il valore del campo F_busy, il quale permette di bloccare la queue. Di seguito si riporta un esempio di codice delle suddette operazioni.


Vb.Net


'Funzione di inserimento code


Private Sub InserisciCoda()

Try

'oggetto per l'inserimento

Dim ObjQueueEntry As New IDMObjects.QueueEntry

ObjQueueEntry = ObjQueue.CreateEmptyEntry()


'imposto i valori per i vari campi

ObjQueueEntry(

"Nome").Value = txtNome.Text

ObjQueueEntry(

"Cognome").Value = txtCognome.Text

'look per il record

ObjQueueEntry(

"F_Busy").Value = False

'inserisco

ObjQueueEntry.Insert()


MessageBox.Show(

"Inserimento effettuato con successo", "Inserimento code", MessageBoxButtons.OK, MessageBoxIcon.Information)


Catch ex As Exception

Dim ObjErrorManager As New IDMError.ErrorManager

Dim ObjErrori As IDMError.Errors

Dim StrTestoErrore As String = ""

Dim objErrore As IDMError.Error

If ObjErrorManager.Errors.Count > 0 Then

ObjErrori = ObjErrorManager.Errors


'ciclo per tutti gli errori

For Each objErrore In ObjErrori

StrTestoErrore = objErrore.Description


Next

Else

StrTestoErrore = ex.Message


End If

MsgBox(StrTestoErrore)


End Try

End Sub


C#


private

void InserisciCoda()

{



try

{



//oggetto per l'inserimento

IDMObjects.QueueEntry ObjQueueEntry =

new IDMObjects.QueueEntry();

ObjQueueEntry = (IDMObjects.QueueEntry) ObjQueue.CreateEmptyEntry();


//imposto i valori per i vari campi

ObjQueueEntry.Properties[

"Nome"].Value = txtNome.Text;

ObjQueueEntry.Properties[

"Cognome"].Value = txtCognome.Text;

//look per il record

ObjQueueEntry.Properties[

"F_Busy"].Value = false;

//inserisco

ObjQueueEntry.Insert();


MessageBox.Show("Inserimento effettuato con successo", "Inserimento code", MessageBoxButtons.OK, MessageBoxIcon.Information);



}


catch (Exception ex)

{



IDMError.ErrorManager ObjErrorManager =

new IDMError.ErrorManager();

IDMError.Errors ObjErrori;


string StrTestoErrore = "";

IDMError.Error ObjErrore;


//verifico che in filenet ci siano errori

if (ObjErrorManager.Errors.Count > 0)

{



ObjErrori = ObjErrorManager.Errors;


//ciclo per tutti gli errori

foreach (IDMError.Error objErrore in ObjErrori)

{



StrTestoErrore = objErrore.Description;


}


}


else

{



StrTestoErrore = ex.Message;


}



MessageBox.Show(StrTestoErrore, "FileNet");

}



}


Conclusioni:


In questo articolo si è visto come inserire nuovi valori per le queue, informazioni importanti relativi ai documenti, gli oggetti utilizzati (queue, QueueQuerySpecification e QueueEntry) sono gli oggetti da utilizzare per la gestione delle queue. Tramite la parola download è possibile scaricare il progetto di esempio utilizzato nell'articolo


Download esempio


Siti web di riferimento:


http://www.filenet.com/Italiano/index.asp Italia


http://www.filenetinfo.com/mk/get/feis_ita_reg Per richiedere gratuitamente il cd "FileNet is Essential"


http://www.filenet.com/ (Inglese)


giovedì 1 novembre 2007

Segnalazione Tools: Editor Code Snippet per Visual Studio 2005

Segnalazione Tools: Editor Code Snippet per Visual Studio 2005
Da questo sito http://www.codeplex.com/CodeSnippetEditor potete scaricare i sorgenti del progetto riguardante l'editor per la creazione e gestione dei CodeSnippet di Visual Studio 2005.
Un ottimo strumento per gestire i frammenti di codice.

domenica 30 settembre 2007

Visualizzare le finestre del pannello di controllo di Windows

Articolo: Visualizzare le finestre delle proprietà di Windows
Introduzione:
In questo articolo, vedremo come visualizzare alcune finestre di Windows che si avviano dal panello di controllo, in particolare, la finestra per visualizzare le proprietà del video, quella per aggiungere un rete, quella per il pannello di controllo, quella per le impostazioni del suono e quella per la data ed ora.
Si crea un nuovo progetto windows, nel suo interno avremo 5 pulsanti, ogni pulsante avrà il compito di visualizzare una determinata funzionalità del pannello di controllo. Tramite il metodo Start della classe Process, verrà avviato il file rundll32 con il relativo argomento.

Per avviare il pannello di controllo:
VB.Net
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL")
C#
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL");
Proprietà del desktop
VB.Net
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL desk.cpl")
C#
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL desk.cpl");
Aggiungere una rete
VB.Net
System.Diagnostics.Process.Start("rundll32.exe", "netplwiz.dll,AddNetPlaceRunDll")
C#
System.Diagnostics.Process.Start("rundll32.exe", "netplwiz.dll,AddNetPlaceRunDll");
Finestra Data/ORa
VB.Net
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL timedate.cpl")
C#
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL timedate.cpl");
Finestra dei suoni/multimedia
VB.Net
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL mmsys.cpl")
C#
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Control_RunDLL mmsys.cpl");

importare i dati da access in outlook

Vi segnalo questo mio articolo http://blog.shareoffice.it/emanuele/archive/2007/09/29/9217.aspx riguardante la programmazione vba, in particolare come importare i dati da access in outlook.
Buona lettura.
Emanuele.

domenica 16 settembre 2007

Filenet Visualizzare le queue (code) tramite .Net (VB.Net e C#)

Filenet: Visualizzare le queue (code) di Filenet tramite la tecnologia .Net (Vb.Net e C#)



Figura 1


Introduzione:


In questo articolo, vediamo come visualizzare i valori delle queue (code) tramite la tecnologia .Net (Vb.Net e C#), in particolare alcuni campi (denominati nome e cognome) creati in precedenza. Si crea una nuova form, nella quale si aggiunge tre label (per i vari titoli) due controlli listbox ed un pulsante, la finestra dovrà avere un aspetto simile alla figura 1.


Per la gestione delle code, utilizzeremo le classi library, per la gestione delle librerie, queue per la gestione delle code, QueueQuerySpecification per effettuare le operazioni di ricerca ed infine la classe QueueBrowseSet che restituisce il risultato della ricerca.


Gli oggetti dichiarati a livello di form.


Utilizzeremo un solo oggetto, di tipo library a livello di form, il resto degli oggetti (istanze delle classi precedentemente descritte) saranno inseriti nei rispettivi eventi.


Si crea un oggetto di tipo library nella form, subito dopo la dichiarazione della form, come riportato qui di seguito.


Vb.Net


'oggetto libreria


Dim objLibrary As New IDMObjects.Library



C#


//oggetto libreria


IDMObjects.Library ObjLibrary = new IDMObjects.Library();


A questo punto, modifichiamo il costruttore della nostra form, in modo che possiamo utilizzare l'oggetto library, utilizzato nella form precedente in cui si è effettuato il login, di seguito si riporta un frammento di codice di esempio.


VB.Net


Sub New(ByVal libreria As IDMObjects.Library)


InitializeComponent()


objLibrary = libreria


End Sub



C#


public FrmVisualizzaCode(IDMObjects.Library objlibreria)


{


InitializeComponent();


ObjLibrary = objlibreria;


}



Ricerca e visualizzazione delle code


Di seguito si riporta un frammento di codice da utilizzare nell'evento load della form, per la visualizzazione delle queue. Il metodo Browse dell'oggetto QueueQuerySpecification restituisce un insieme di queuebrowsset, ossia il risultato della ricerca effettuata. In effetti con l'oggetto QueueQuerySpecification, impostando alcune proprietà, possiamo eseguire determinate ricerche, mentre con l'oggetto QueueBrowseSet possiamo gestire le varie informazioni ottenute dalla ricerca, scorrere tra i vari dati, rilevare determinati valori, ed altro ancora sulle queue. Se il metodo Browse non trova nulla, restituisce un errore, ossia –2147208689 in questo caso bisogna gestire tale eccezione, altrimenti se qualora il metodo browse restituisce dei valori, possiamo fare un ciclo, per rilevare tali dati, come riportato nel frammento di codice di esempio.


Vb.Net


Try



'oggetto coda


Dim objQueue As New IDMObjects.Queue


objQueue = objLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue, "ANAGRAFICA/DATI")


'oggetto per la ricerca delle code


Dim ObjQueueQuerySpecification As New IDMObjects.QueueQuerySpecification()


ObjQueueQuerySpecification = objQueue.CreateQuerySpecification()


''oggetto per la restituzione dei valori


Dim ObjQueueBrowseSet As New IDMObjects.QueueBrowseSet()


'flag per l'accesso al sistema di filenet


ObjQueueQuerySpecification.CheckUser = False


'Indica i valori delle code


ObjQueueQuerySpecification.EvenIfDelayed = False


'permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.


ObjQueueQuerySpecification.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteOK


ObjQueueQuerySpecification.MinPriority = 0


'restituisce tutti gli entry anche se sono loccati ossia bloccati


ObjQueueQuerySpecification.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK


'imposto l'oggetto per la ricerca


ObjQueueBrowseSet = ObjQueueQuerySpecification.Browse()


'ciclo per i valori


For intConta As Integer = 1 To ObjQueueBrowseSet.RecordCount



lstbNome.Items.Add(ObjQueueBrowseSet.Entry.Properties("Nome").Value)


lstCognome.Items.Add(ObjQueueBrowseSet.Entry.Properties("Cognome").Value)


'verifico la fine


If ObjQueueBrowseSet.MoreResults = True Then



ObjQueueBrowseSet.MoveNext()


End If


Next



Catch ex As Exception



Dim ObjErrorManager As New IDMError.ErrorManager


Dim ObjErrori As IDMError.Errors


Dim StrTestoErrore As String = ""


Dim objErrore As IDMError.Error



If ObjErrorManager.Errors.Count > 0 Then



ObjErrori = ObjErrorManager.Errors


'ciclo per tutti gli errori


For Each objErrore In ObjErrori



If objErrore.Number = -2147208689 Then


StrTestoErrore = "Non ci sono code"


Else


StrTestoErrore = objErrore.Description


End If


Next


Else



StrTestoErrore = ex.Message


End If


MsgBox(StrTestoErrore)


End Try


C#


try



{



//oggetto coda


IDMObjects.Queue objQueue = new IDMObjects.Queue ();


objQueue = (IDMObjects.Queue) ObjLibrary.GetObject(IDMObjects.idmObjectType.idmObjTypeQueue, "ANAGRAFICA/DATI",null,null,null);


//oggetto per la ricerca delle code


IDMObjects.QueueQuerySpecification ObjQueueQuerySpecification = new IDMObjects.QueueQuerySpecification();


ObjQueueQuerySpecification = objQueue.CreateQuerySpecification();


//oggetto per la restituzione dei valori


IDMObjects.QueueBrowseSet ObjQueueBrowseSet = new IDMObjects.QueueBrowseSet();


//flag per l'accesso al sistema di filenet


ObjQueueQuerySpecification.CheckUser = false;


//Indica i valori delle code


ObjQueueQuerySpecification.EvenIfDelayed =false ;


//permette di impostare o restituire un valore in base allo stato delle queue inserite, ossia se il ritorno della query è incompleta.


ObjQueueQuerySpecification.Incomplete = IDMObjects.idmQueueIncompleteOpt.idmIncompleteOK ;


ObjQueueQuerySpecification.MinPriority = 0;


//restituisce tutti gli entry anche se sono loccati ossia bloccati


ObjQueueQuerySpecification.Status = IDMObjects.idmQueueBusyOpt.idmBusyOK;


//imposto l'oggetto per la ricerca


ObjQueueBrowseSet = ObjQueueQuerySpecification.Browse();


//ciclo per i valori


for (int intconta = 1; intconta <= ObjQueueBrowseSet.RecordCount; intconta++ )


{



lstbNome.Items.Add(ObjQueueBrowseSet.Entry.Properties["Nome"].Value );


lstCognome.Items.Add(ObjQueueBrowseSet.Entry.Properties["Cognome"].Value);


//verifico la fine


if (ObjQueueBrowseSet.MoreResults == true)


{



ObjQueueBrowseSet.MoveNext();


}


}





}


catch (Exception ex)


{



IDMError.ErrorManager ObjErrorManager = new IDMError.ErrorManager();


IDMError.Errors ObjErrori;


string StrTestoErrore = "";


IDMError.Error ObjErrore;


//verifico che in filenet ci siano errori


if (ObjErrorManager.Errors.Count > 0)


{



ObjErrori = ObjErrorManager.Errors;


//ciclo per tutti gli errori


foreach (IDMError.Error objErrore in ObjErrori)


{



if (objErrore.Number = -2147208689)


{



StrTestoErrore ="Non ci sono code");


}


else


{



StrTestoErrore = objErrore.Description;


}



}


}


else


{



StrTestoErrore = ex.Message;


}


MessageBox.Show(StrTestoErrore, "FileNet");


}



Conclusioni:


In questo articolo, si è visto come visualizzare in un controllo listbox i valori delle queue, informazioni importanti relativi ai documenti, gli oggetti utilizzati (queue, QueueQuerySpecification e QueueBrowseSet) sono gli oggetti da utilizzare per la gestione delle queue. Tramite la parola download è possibile scaricare il progetto di esempio utilizzato nell'articolo.


Download esempio


Siti web di riferimento:


http://www.filenet.com/Italiano/index.asp Italia


http://www.filenetinfo.com/mk/get/feis_ita_reg Per richiedere gratuitamente il cd "FileNet is Essential"


http://www.filenet.com/ (Inglese)

venerdì 14 settembre 2007

Asp Inviare un email tramite CDO

Questo frammento di codice, permette di inviare in una pagina Asp tradizionale (VBscript) un email, tramite le funzionalità di CDO (dll del sistema Windows). Si fa presente che la dichiarazione e valorizzazione di alcune variabili è stata omessa (ma è facilmente deducibile).





'oggetto per l'invio dell'email



Dim CDOMsg



'oggetto per la configurazione



Dim CDOConf



'oggetto per i campi di configurazione



Dim Flds



'testo html da invniare via email



Dim strHTML



'parametro di sendusing



Const cdoSendUsingPort = 2



set CDOMsg = CreateObject("CDO.Message")



set CDOConf = CreateObject("CDO.Configuration")



Set Flds = CDOConf.Fields



'imposto i parametri del web server (sistemare per la lettura del registro di windows



With Flds



.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort



' parametri mail server.



.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Mail_Server



.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25



'autenticazione



.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1



.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = User_Email



.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = PSW_Email



.Update



End With



'imposto il percorso del file



PathFile = Server.MapPath(".") & "\CartellaFile\MioFile.doc"



' Imposto il testo



strHTML = "<HTML>"



strHTML = strHTML & "<HEAD>"



strHTML = strHTML & "<BODY>"



strHTML = strHTML & "<b> testo </b></br>"



strHTML = strHTML & "</BODY>"



strHTML = strHTML & "</HTML>"



' Invio



With CDOMsg



Set .Configuration = CDOConf



'destinatario.



.To = EmailDestinatari



'Mittente



.From = EmailMittente



'oggetto



.Subject = "oggetto"



'testo html



.HTMLBody = strHTML



'allego il file appena generato



.AddAttachment PathFile



.Send



End With



'cancello le variabili



Set CDOMsg = Nothing



Set CDOConf = Nothing



Set Flds = Nothing


giovedì 13 settembre 2007

javascript regular expression per validare l'indirizzo email

Il frammento di codice riportato qui di seguito, verifica che l'indirizzo email digitato in una casella di testo sia corretto.
var email = document.forms[0].emailField.value;
if (!email.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/)){
return false;
}

mercoledì 12 settembre 2007

Motore di ricerca

Oggi vi segnalo questo http://search.domainspa.com/ simpatico motore di ricerca, per fare delle ricerche sul web.
Buona ricerca.

lunedì 10 settembre 2007

segnalazione sito: pinvoke - frammenti di codice delle API


Da questo sito http://www.pinvoke.net/index.aspx si trova un ottima risorsa per la programmazione .Net, tramite l'utilizzo di API. I vari frammenti di codice di API, sono sia per l'ambiente Windows e sia per l'ambiente Mobile. Inoltre è possibile scaricare gratuitamente un plug-in per Visual Studio Net (2003 o 2005).


Che dirvi..... buona programmazione :-))).



mercoledì 5 settembre 2007

C# effettuare il beep del sistema operativo


Trucco C#: Simulare il beep del sistema operativo


Se vogliamo simulare il suono beep, del computer, dobbiamo utilizzare delle Api.


Inserire lo spazio dei nomi interopservices per gestire l'interoperabilità


using System.Runtime.InteropServices;



Dichiare nella classe form, la seguente dichiarazione di api:


[DllImport("Kernel32.dll")]


public static extern bool Beep(UInt32 frequency, UInt32 duration);


Per eseguire il suono utilizzare la funzione beep, come riportata qui di seguito:


Beep(1000, 300);


martedì 4 settembre 2007

Tools gratuito per Linq

Dal seguente blog http://blogs.msdn.com/socaldevgal/archive/2007/09/04/download-linqpad-a-free-linq-query-expression-tool.aspx ho trovato interessato questo tools http://www.albahari.com/linqpad.html per il linguaggio Linq.
Mi sembra un ottimo strumento per la gestione e creazione delle query expression in Linq, una nuova funzionalità del Framework 3.0.
Per download ed informazioni visitate il seguente sito http://www.albahari.com/linqpad.html

lunedì 3 settembre 2007

impostare un numero massimo di carattere in un controllo html textarea (maxlength)

Il controllo html TextArea non ha una proprietà maxlength come il controllo text, per tanto per limitare l'inserimento dei caratteri in tale controllo, dobbiamo utilizzare uno script.
Nell'evento keypress, del controllo TextArea, utilizziamo una funzione che permette limitare l'inserimento dei caratteri.
< name="note" onkeypress="return MaxCaratteri(this, 499);" style="width:100%">
mentre la funzione javascript, sarà la seguente.