sabato 12 luglio 2008

Sharepoint 2007 creare un workflow con .Net 3.0 (VB.Net e C#) utilizzando una pagina asp.net e Infopath 2007

In questo articolo verrà illustrata la procedura per la creazione di un WorkFlow, il quale intercetta e visualizza il valore di una casella di testo in una pagina Asp.net e la gestione delle attività tramite Infopath 2007.

Per la creazione del Worflow da utilizzare in Sharepoint, utilizzeremo Windows Workflow Foundation, questo workflow viene avviato da una pagina aspx.


Creazione del progetto e progettazione Workflow

Da Visual Studio 2005 si crea un nuovo progetto di tipo sharepoint, selezionare il modello “Sharepoint Server Sequential Workflow Library”.

Il workflow sarà composto di alcuni elementi e precisamente del controllo createTask, un controllo onTaskChanged, un controllo logToHistoryListACtivity ed un controllo completeTask come illustrato in figura 1.


Il Workflow dovrà avere l’aspetto simile a quello della figura 1.



Figura 1

Per il controllo create Task, impostiamo la proprietà TaskID, con l’assegnazione di un campo (Es. Taskid), per crearlo,tramite il designer selezionare nella finestra delle proprietà del controllo, il campo taskid, tramite il pulsantino, posto sul lato destro, nella finestra di dialogo selezionare la linguetta “Bind to a new member”. Selezioniamo l’opzione “Create Field” e nella casella di testo digitate il seguente testo “Taskid”, chiudete la finestra confermando con il pulsante OK.


Sempre nella finestra delle proprietà del controllo CreateTask, selezionate la voce “TaskProperties”, nella parte destra, fate click sul pulsantino con i tre punti, nella finestra che viene aperta, selezionate la linguetta “Bind To a new member” e nella casella di testo impostate il valore “TaskProperties” sempre selezionando l’opzione “Create Field”.


Continuando ad impostare le varie proprietà di tale controllo, per la proprietà Correlation token, impostiamo il valore “TaskToken” e OwnerActivityName con il valore “Workflow1”.

Per l’evento MethodInvoking , impostiamo le proprietà della classe SPWorkflowTaskProperties denominata in precedenza con il valore TaskProperties per la gestione delle attività


Di seguito si riporta il codice, delle suddette operazioni.


VB.Net


'imposto il task


TaskId = Guid.NewGuid()


TaskProperties.AssignedTo = "WIN2KSP2K7\Administrator"


TaskProperties.Description = "Mia descrizione"


TaskProperties.Title = "Mio Titolo"


TaskProperties.PercentComplete = 2


TaskProperties.StartDate = DateTime.Today


TaskProperties.DueDate = DateTime.Today.AddDays(2)



C#


//imposto il task


TaskId = Guid.NewGuid();


TaskProperties.AssignedTo = @"WIN2KSP2K7\Administrator";


TaskProperties.Description = "Mia descrizione";


TaskProperties.Title = "Mio Titolo";


TaskProperties.PercentComplete = 2;


TaskProperties.StartDate = DateTime.Today;


TaskProperties.DueDate = DateTime.Today.AddDays(2);


Passiamo al controllo onTaskChanged, impostiamo le varie proprietà di questo elemento, nella finestra delle proprietà, nella voce “AfterProperties” , impostiamo un campo con il valore “AfterProperties”, mentre per la proprietà BeforeProperteis, impostiamo un campo con il valore “BeforeProperties” per la proprietà CorrelationToken, impostiamo il valore “TaskToken”. Infine per la proprietà TaskId, dalla finestra che viene aperta, impostiamo il valore, taskid, che compare nella paginetta “Bind to an existing member”

Per il controllo logToHistoryListACtivity, impostiamo la proprietà HistoryDescription,con un campo denominato (dalla finestra di questa proprietà, selezionare il tab “Bind To a new member”, opzione create Field ) HistoryDescription .

Mentre per la proprietà HistoryOutCome, impostiamo il seguente valore (di tipo field) HistoryOutcome.

Infine per la proprietà Userid, impostiamo si crea un nuovo campo (dalla finestra di questa proprietà, selezionare il tab “Bind To a new member”, opzione create Field ) con il valore UserId.

Fatto ciò aggiungiamo un metodo per l’evento MethodInvoking, in questo evento, visualizzeremo il testo che verrà riportato nel dettaglio del workflow, in particolare nella sezione “Cronologia flusso di lavoro”.


Il codice di tale operazioni è il seguente:


VB.Net


Private Sub logAttivita_MethodInvoking(ByVal sender As System.Object, ByVal e As System.EventArgs)


HistoryDescription = "Valore passato: " & workflowProperties.InitiationData


HistoryOutcome = "Workflow Terminato"



End Sub



C#


private void logAttivita_MethodInvoking(object sender, EventArgs e)


{


HistoryDescription = "Valore Passato: " + workflowProperties.InitiationData;


HistoryOutcome = "Workflow Terminato";


}


Ora non ci resta completare l’ultimo elemento, il controllo complete Task, per tale controllo, impostate la proprietà CorrelationToken, con il valore “TaskToken”, mentre per la proprietà TaskId, con il valore TaskId, che abbiamo creato in precedenza.


Creazione dei file XML:-


Terminata la fase per di modellazione del nostro workflow, non ci resta che impostare i file di configurazioni, quali feature.xml e workflow.xml, creati di default nel progetto, nel momento in cui si crea un nuovo progetto di Sharepoint.

Selezionare il file Feature.xml, inseriamo il code snippet denominato Feature.xml (Snippets->SharePoint Workflow).

Di seguito si riporta il file Feature.xml, completato in ogni sua parte.


Di seguito si riporta il file Feature.xml, completato in ogni sua parte.



<?xml version="1.0" encoding="utf-8"?>


<!-- _lcid="1033" _version="12.0.3111" _dal="1" -->


<!-- _LocalBinding -->



<!-- Insert Feature.xml Code Snippet here. To do this:


1) Right click on this page and select "Insert Snippet" (or press Ctrl+K, then X)


2) Select Snippets->SharePoint Workflow->Feature.xml Code -->


<Feature Id="055264CF-F7D9-457f-B250-46E70F0D965D"


Title="WorkFlow con uso di Infopath"


Description="Questo Worfklow utilizza Infopath"


Version="12.0.0.0"


Scope="Site"


ReceiverAssembly="Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"


ReceiverClass="Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver"


xmlns="http://schemas.microsoft.com/sharepoint/">


<ElementManifests>


<ElementManifest Location="workflow.xml" />


</ElementManifests>


<Properties>


<Property Key="GloballyAvailable" Value="true" />



<!-- Value for RegisterForms key indicates the path to the forms relative to feature file location -->


<!-- if you don't have forms, use *.xsn -->


<Property Key="RegisterForms" Value="*.xsn" />


</Properties>


</Feature>



Terminata la fase di compilazione del file Feature.xml non ci resta che completare il file Workflow.xml.


Anche in questo caso, una volta selezionato il file Workflow.xml, inseriamo il code snippet, denominato Workflow.xml (Snippets->SharePoint Workflow).

Di seguito si riporta il file workflow.xml, completo in ogni sua parte, da ricordare che l’attributo publickeytoken si ottiene registrando la dll nella gac, la quale dll dev’essere compilata con una firma sicura.

File Workflow.xml


<?xml version="1.0" encoding="utf-8" ?>


<!-- _lcid="1033" _version="12.0.3015" _dal="1" -->


<!-- _LocalBinding -->



<!-- Insert Workflow.xml Code Snippet here. To do this:


1) Right click on this page and select "Insert Snippet" (or press Ctrl+K, then X)


2) Select Snippets->SharePoint Workflow->Workflow.xml Code -->



<Elements xmlns="http://schemas.microsoft.com/sharepoint/">


<Workflow


Name="WorkflowInfopath"


Description="Dimostrazione di utilizzo di Infopath in Workflow"


Id="{512BC939-0684-475e-9107-8AE8996E5A0E}"


CodeBesideClass="SPWFInfopath.Workflow1"


CodeBesideAssembly="SPWFInfopath, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c051e283858a6d51"


TaskListContentTypeId="0x01080100C9C9515DE4E24001905074F980F93160"


InstantiationUrl="_layouts/PaginaValore.aspx"


>



<Categories/>


<!-- Tags to specify InfoPath forms for the workflow; delete tags for forms that you do not have -->


<MetaData>


<Task0_FormURN>taskFormURN</Task0_FormURN>


<AssociateOnActivation>false</AssociateOnActivation>


</MetaData>


</Workflow>


</Elements>


Creazione della pagina Asp.Net
La creazione del nostro progetto sta giungendo alla fine, ora rimane sola la parte web, in particolare la creazione di una pagina Asp.Net, la quale conterrà una casella di testo, ed un pulsante, quest’ultimo avrà il compito di avviare il workflow.

Aggiungiamo nella soluzione, un nuovo progetto di tipo applicazione Web Asp.net.

A differenza della maggior parte dei progetti web, in questo progetto web, la pagina web, non sarà gestita con il code behind, ossia di avere due file, una con il codice ed una con la parte html della pagina, ma sarà tutto incluso in una pagina aspx.

La pagina web, farà parte di una masterpage (application.master) ed eredita dalla pagina Microsoft.SharePoint.WebControls.LayoutsPageBase , da cui derivano tutte le pagine per sharepoint 2007.

Utilizzeremo i namespace di sharepoint ossia Microsoft.SharePoint, Microsoft.SharePoint.Workflow, Microsoft.SharePoint.Utilities, Microsoft.SharePoint.WebControls


La pagina, avrà una tabella contenente un controllo di tipo casella di testo, un controllo pulsante ed controllo label.

Di seguito si riporta la pagina Aspx, con il relativo codice e script html


VB.Net


<%@ Assembly Name="Microsoft.SharePoint.ApplicationPages, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>


<%@ Page Language="VB"Inherits="Microsoft.SharePoint.WebControls.LayoutsPageBase" MasterPageFile="~/_layouts/application.master" EnableViewState="false" EnableViewStateMac="false" %>


<%@ Import Namespace="Microsoft.SharePoint" %>


<%@ Import Namespace="Microsoft.SharePoint.Workflow"%>


<%@ Import Namespace="Microsoft.SharePoint.Utilities"%>


<%@ Import Namespace="Microsoft.SharePoint.WebControls"%>



<script runat="server">


'dichiarazioni campi


'oggetto per la gestione del sito


Protected List As SPList


'oggetto elemento o riga di una lista


Protected ListItem As SPListItem


'classe che rappresenta l'assocazione di un workflow


Protected WorkflowAssociation As SPWorkflowAssociation


'oggetto che rappresenta un sito o un tipo di contenuto lista


Protected CCType As SPContentType




Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)



Dim paramList As String = Request.Params("List")


Dim paramID As String = Request.Params("ID")


List = Web.Lists(New Guid(paramList))


ListItem = List.GetItemById(Convert.ToInt32(paramID))


Dim WorkflowAssociationID As Guid = New Guid(Request.Params("TemplateID"))


WorkflowAssociation = List.WorkflowAssociations(WorkflowAssociationID)


'verifico che non sia nulla, altrimenti ritento un associazione


If (WorkflowAssociation Is Nothing) Then


'ottengo il riferimento al workflow


Dim CTypeID As SPContentTypeId = CType(ListItem("ContentTypeId"), SPContentTypeId)


CCType = List.ContentTypes(CTypeID)


WorkflowAssociation = CCType.WorkflowAssociations(WorkflowAssociationID)


End If



If (WorkflowAssociation Is Nothing) Then Throw New SPException("Nessun Workflow trovato")


End Sub





Protected Sub BtnOk_Click(ByVal sender As Object, ByVal e As System.EventArgs)




Try



Dim valore As String = txtNome.Text


Web.Site.WorkflowManager.StartWorkflow(ListItem, WorkflowAssociation, valore)





Catch ex As Exception


'nel caso che è un eccezione vado alla pagina degli errori


SPUtility.Redirect("Error.aspx", _


SPRedirectFlags.RelativeToLayoutsPage, _


HttpContext.Current, _


"ErrorText=" + "Errore")


End Try


SPUtility.Redirect(List.DefaultViewUrl, _


SPRedirectFlags.Default, _


HttpContext.Current)


End Sub


</script>



<asp:Content ID="Main" ContentPlaceHolderId="PlaceHolderMain" runat="server">



<table cellspacing="0" cellpadding="0" border="0" >


<TR>


<td valign=top><asp:Label Text="Nome:" ID="LblNome" runat=server></asp:Label></td>


<td> <asp:TextBox ID="txtNome" runat="server"></asp:TextBox></td>


</tr>


<tr>


<td colspan="1">


<asp:Button ID="BtnOk" runat="server" Text="OK" OnClick="BtnOk_Click" /></td>


</tr>


</TABLE>




</asp:Content>



C#


<%@ Assembly Name="Microsoft.SharePoint.ApplicationPages, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>


<%@ Page Language="C#" Inherits="Microsoft.SharePoint.WebControls.LayoutsPageBase" MasterPageFile="~/_layouts/application.master" EnableViewState="false" EnableViewStateMac="false" %>


<%@ Import Namespace="Microsoft.SharePoint" %>


<%@ Import Namespace="Microsoft.SharePoint.Workflow"%>


<%@ Import Namespace="Microsoft.SharePoint.Utilities"%>


<%@ Import Namespace="Microsoft.SharePoint.WebControls"%>



<%--Codice C#--%>


<script runat="server">


//dichiarazioni campi


//oggetto per la gestione del sito


protected SPList List;


//oggetto elemento o riga di una lista


protected SPListItem ListItem;


//classe che rappresenta l'assocazione di un workflow


protected SPWorkflowAssociation WorkflowAssociation;


//oggetto che rappresenta un sito o un tipo di contenuto lista


protected SPContentType CType;



protected void Page_Load(object sender, EventArgs e)


{


string paramList = Request.Params["List"];


string paramID = Request.Params["ID"];


List = Web.Lists[new Guid(paramList)];


ListItem = List.GetItemById(Convert.ToInt32(paramID));


Guid WorkflowAssociationID = new Guid(Request.Params["TemplateID"]);


WorkflowAssociation = List.WorkflowAssociations[WorkflowAssociationID];


//verifico che non sia nulla, altrimenti ritento un associazione


if (WorkflowAssociation == null)


{ // ottengo il riferimento al workflow


SPContentTypeId CTypeID = (SPContentTypeId)ListItem["ContentTypeId"];


CType = List.ContentTypes[CTypeID];


WorkflowAssociation = CType.WorkflowAssociations[WorkflowAssociationID];


}



if (WorkflowAssociation == null)


throw new SPException("Nessun Workflow trovato");



}





protected void BtnOk_Click(object sender, EventArgs e)


{


try


{


string valore = txtNome.Text;


Web.Site.WorkflowManager.StartWorkflow(ListItem,


WorkflowAssociation,


valore);


}


catch (Exception ex)


{


//nel caso che è un eccezione vado alla pagina degli errori


SPUtility.Redirect("Error.aspx",


SPRedirectFlags.RelativeToLayoutsPage,


HttpContext.Current,


"ErrorText=" + "Errore");


}


SPUtility.Redirect(List.DefaultViewUrl,


SPRedirectFlags.Default,


HttpContext.Current);



}


</script>



<asp:Content ID="Main" ContentPlaceHolderId="PlaceHolderMain" runat="server">



<table cellspacing="0" cellpadding="0" border="0" >


<TR>


<td valign=top><asp:Label Text="Nome:" ID="LblNome" runat=server></asp:Label></td>


<td> <asp:TextBox ID="txtNome" runat="server"></asp:TextBox></td>


</tr>


<tr>


<td colspan="1">


<asp:Button ID="BtnOk" runat="server" Text="OK" OnClick="BtnOk_Click" /></td>


</tr>


</TABLE>




</asp:Content>



Terminata la preparazione del workflow e della pagina web, non resta che copiare i file (dll, aspx, xml) nella macchina (nel nostro caso in una virtual machine) e testare il tutto.

Creazione del modulo Infopath.


Si crea un nuovo modulo infopath (figura 2)


Figura 2.

Nel modulo inseriamo un controllo casella di testo, ed un pulsante, come mostrato in figura 3, tramite la finestra delle proprietà della casella di testo, impostiamo il nome del controllo, in particolare nella pagina “Dati”, impostiamo la casella Nome Campo: con il valore “ValoreA” In questo modo abbiamo impostato al controllo un nome.




Figura 3

Facciamo click sul pulsante con la scritta Regole, che si trova nelle proprietà del pulsante come mostrato in figura 4



Figura 4


A questo punto occorre creare un regola, per l’invio dei dati e per la chiusura del modulo, una volta fatto click sul pulsante del modulo.


Dalla finestra regole, facciamo click sul pulsante aggiungi, e poi sul pulsante aggiungi azione, nella finestra azione (figura 5) selezionare la voce “Invia tramite una connessione dati”



Figura 5



A questo punto fate click sul pulsante aggiungi (figura 6)



Figura 6.


Selezionate l’opzione Crea nuova connessione per Invio dati, e fate click sul pulsante Avanti.


Nella finestra successiva, selezionate l’opzione “all’ambiente host, ad esempio una pagina ASP.Net o un’applicazione Host”



Figura 7


Fate click sul pulsante avanti.

Sulla finestra successiva, fate click sul pulsante fine.

Tramite il pulsante ok, confermate le scelte effettuate.


Inserite una nuova azione, selezionate l’opzione Chiudi il modulo(figura 8), in questo modo, il modulo verrà chiuso subito dopo il click del pulsante.



Figura 8


Chiudete tutte le finestre, dando conferma tramite il pulsante OK.

Il modulo, oltre ad inviare i dati nella sezione attività, dovrà anche visualizzarli, nel caso che si vuole modificare il loro valore.


Occorre creare un file xml,chiamato ItemMetaData.xml, tale file, inseriamo il seguente tag.


<z:row xmlns:z="#RowsetSchema" ows_valoreA="" />


Questo tag, permette di leggere le informazioni salvate nelle attività di sharepoint 2007, l’attributo ows_valoreA, indica il riferimento al campo valoreA, da notare che tale nome, dev’essere preceduto dal seguente Testo ows_ .


Dalla voce di menu strumenti, selezionare la voce “Connessioni Dati”, nella finestra che viene aperta fate click sul pulsante “aggiungi”, nella finestra che viene aperta (figura 9),selezionare l’opzione, crea nuova connessione per : Ricezione Dati



Figura 9



Fate click sul pulsante, nella finestra successiva, selezionate l’opzione documento xml (figura 10)



Figura 10


Fate click sul pulsante avanti.

Nella finestra successiva, selezionate il file xml (salvato nella cartella del progetto, in feature)


Come mostrato in figura 11.



Figura 11



Lasciate l’opzione di default(Figura12), ossia “includi i dati come file di risorse nel modello di modulo o nella parte modello”



Figura 12.



Fate click sul pulsante avanti, lasciando invariate le impostazioni (figura 13).



Figura 13


Fate click sul pulsante fine


A questo punto nella connessione dati, avrete due valori, Invio ed itemmetadata.


A questo punto occorre impostare un valore predefinito per il controllo casella di testo (denominato valoreA) nella finestra delle proprietà di tale controllo, selezionare il pulsante formula (fx) (figura 14), nella finestra che viene aperta (inserisci formula) fate click sul pulsante “Inserisci campo o gruppo” (figura 14) nella finestra che viene aperta, selezionate dalla casella combinata origine dati, la voce ItemMetadata (secondaria) e selezionate la voce :owns_valoreA, come mostrato in figura 14.



Figura 14

Confermate tutte le finestre con il pulsante ok.


Siamo giunti alla pubblicazione di tale modulo, prima di pubblicarlo, occorre impostare le opzioni del modulo, in particolare la protezione. Dal menu strumenti, selezionare la voce “opzioni modulo” nella finestra che viene aperta, selezionare nella parte sinistra, la voce dominio come mostrato in figura 15.



Figura 15

Continuando con la finestra delle opzioni modulo, selezionare la voce “Promozioni Proprietà” ed aggiungete il campo relativo alla casella di testo (Figura 16).


Figura 16


Sempre nella finestra opzioni modulo, selezionare la voce compatibilità, mettete una spunta, sull’opzione


“Progetta Modello di modulo da aprire in un browser o in Infopath”





Figura 16


Confermate le opzioni, facendo click sul pulsante ok.

Dal menu File, salvate il modulo, a questo punto, non ci resta che pubblicarlo, per utilizzarlo nel nostro portale di sharepoint 2007.


Dal menu file, selezionate l’opzione Pubblica, nella finestra che viene aperta (figura 17) selezionate l’opzione “In un percorso di rete” , a questo punto fate click sul pulsante avanti.



Figura 17



La successiva finestra (figura 18) ci indica, in quale cartella pubblicare il nome e con quale nome, potete salvare il file xsn, nella cartella in cui si trovano i file xml del nostro progetto, situata nella cartella Feature.



Figura 18



A questo punto, fate click sul pulsante avanti, nella successiva finestra, lasciate vuoto la casella,nel momento in cui fate click sul pulsante avanti, verrà visualizzato un messaggio(figura 19), fate click sul pulsante ok, per via che non si ha un percorso alternativo al nostro modulo.


Figura 19



A questo punto fate click sul pulsante pubblica, fate click sul pulsante chiudi, da notare che l’opzione “Apri il modello di modulo dalla posizione di pubblicazione..” non deve avere il flag.



Figura 20



Ora che il nostro modulo infopath, è stato pubblicato, dovremmo rilevare il codice id, ossia il codice identificativo, questo codice va inserito nel file xml, e precisamente in Workflow. Per rilevare il codice id, aprite il modulo pubblicato in modalità struttura (Designer) , dal menu file, selezionate la voce “Proprietà” nella finestra che viene aperta, copiate tutto il codice, che si trova nella casella ID, come mostrato in figura 21




Figura 21



Aprite il file Workflow.xml, e nel tag Task0_formUrn, copiate il codice id del modulo di infopath, come mostrato qui di seguito.


<Task0_FormURN>urn:schemas-microsoft-com:office:infopath:Infopath:-myXSD-2008-04-02T14-18-10</Task0_FormURN>


Configurazione ed installazione
A questo punto non ci resta che installare e configurare il nostro progetto, copiando i vari file della macchina in questione (nel mio caso è una macchina virtuale virtual pc 2007), nella cartella FEATURES (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\) create una cartella (per esempio SPWFInfopath) in essa copiate i file xml (feature.xml e workflow.xml).
Copiante nella cartella assebly (C:\WINDOWS\assembly) la dll, in questo modo viene registrata nella GAC.
Ora non resta che copiare la nostra pagina Aspx, nella cartella delle pagine di sharepoint, e precisamente nella cartella layouts (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS ).
A questo punto occorre eseguire dal prompt dei comandi, l’installazione del file feature,xml.
La registrazione avviene tramite il file stsadm.exe di seguito si riporta il comando da eseguire
stsadm.exe -o installfeature -filename SPWFInfopath \feature.xml -force
Riavviamo il WebServer IIS, tramite il comando IISReset.
Attivazione del WorkFlow

Terminata la fase di registrazione del componente non ci resta che attivare il workflow, apriamo il portale di sharepoint, e selezioniamo la nostra applicazione web, dal menu azioni sito, selezionare la voce impostazioni sito, nella sezione Amministrazione raccolta siti, selezionare la voce “Caratterestiche raccolta siti” .



Figura 22


Nella pagina che viene aperta, troviamo l’elenco dei vari Workflow disponibili, tramite il pulsante attiva, del nostro Workflow rendiamo attivo il nostro Workflow, come mostrato in figura 2.

Ora che il workflow è attivo, dobbiamo aggiungerlo nella nostra raccolta ed elenchi sito, dalla pagina delle impostazioni sito, selezioniamo la voce “Raccolte ed elenchi del sito”, che si trova nella sezione “amministrazione sito”.

Selezioniamo il contenuto con la dicitura “Documenti condivisi” .


Nella pagina che viene aperta, selezioniamo la voce “Impostazioni flusso di lavoro” che si trova nella sezione “Autorizzazioni e gestione”, nella pagina che viene aperta, aggiungiamo il nostro workflow, valorizzando gli opportuni campi. Prima di procedere all’esecuzione del nostro Workflow, occorre aggiungere una colonna nella attività, nella quale verrà visualizzato il valore del campo del modulo di infopath.


Per creare una colonna, andate nella sezione attività, e fate click sul menu “impostazioni elenco” che si trova nel menu a tendina “impostazioni” in modo da andare alla pagina Personalizza attività (figura 23).



Figura 23

Tramite la voce “Crea Colonna” si crea una nuova colonna, nel campo Nome Colonna, inserite lo stesso nome della colonna del nostro modulo ossia “valoreA” , lasciate i valori di default (stringa).


Sempre nella pagina personalizza Attività, selezionate nella sezione Visualizzazioni, il nome della visualizzazione predefinita, in questo modo, nella pagina che viene aperta, potete abilitare la visualizzazione della colonna appena creata.


Esecuzione del Workflow.



Ora che nel nostro progetto è stato creato il workflow, non ci resta che eseguirlo, nella cartella documenti, selezioniamo un documento e dal menu di scelta rapida, selezioniamo la voce “Flussi di lavoro”, nella pagina che viene aperta (figura 24) , facciamo click sul nostro workflow.



Figura 24



A questo punto verrà avviata la nostra pagina (figura 25), come illustrato precedentemente, il worfklow, avrà il compito di visualizzare il testo della casella, nella cronologia del flusso di lavoro .




Figura 25



Il workflow, però non è ancora terminato, infatti occorre gestire le attività, tramite il modulo Infopath, il workflow risulterà con la dicitura “in corso” come mostrato in figura 26.



Figura 26


Fate click su tale voce, in modo che venga visualizzato il dettaglio del nostro workflow, fate click sul testo del titolo (figura 27), in questo modo verrà aperto il modulo infopath .




Figura 27



Verrà aperto il modulo infopath, all’interno di sharepoint, in una pagina Aspx (WrkTaskIp) come mostrato in figura 28.



Figura 28.



Dopo aver valorizzato la casella di testo, e fatto click sul pulsante di azione(con la dicitura "Pulsante"), i dati verranno inviati e verrà aperta la finestra del dettaglio del workflow, come mostrato in figura 29, riportando i dati della sola casella di testo della nostra pagina aspx nella cronologia del flusso.



Figura 29



Mentre per visualizzare i dati del inseriti nella casella di testo del modulo infopath, occorre andare nelle attività (ritornate in documenti condivisi, e nella parte sinistra, elenci, fate click sulla voce attività ) troverete nella colonna creata in precedenza con il nome “valoreA” il testo inserito nella casella del modulo di infopath, il tutto come illustrato in figura 30.



Figura 31

Conclusioni:

In questo articolo è stata fornita la tecnica di come eseguire un workflow da una pagina Asp.net, utilizzare Infopath 2007, per la gestione delle attività, in particolare visualizzare il valore di una casella del modulo in una colonna delle attività.

L'articolo ha voluto fornire l'utilizzo di più software (Sharepoint 2007, Infopath 2007, Visual Studio 2005 (VB.Net – C#) Windows Workflow Foundation, XML.


Tramite la parola download è possibile scaricare il file di esempio.


Download.


d





Avat programma antivirus gratuito

In questi ultimi anni, sul web, si trovano diversi programmi gratuiti.
Avast antivirus è un programma gratuito per la protezione di virus. il programma si può scaricare dal seguente sito http://www.avast.com/ita/download-avast-home.html
Il programma, può essere installato in diverse lingue, tra cui anche in italiano.
Per il download o maggiori informazioni, visitate il sito indicato.

venerdì 11 luglio 2008

Materiale informativo per l'accessibilità dei siti

Vi segnalo questo sito http://www.pubbliaccesso.gov.it/ nel quale si trovano informazioni e strumenti riguardanti le linee guide per la creazione di siti in ambito di accessibilità. Molto indicato per lo sviluppo di siti per la pubblica amministrazione..

giovedì 10 luglio 2008

Infopath 2007 applicare un immagine ad un pulsante


Tempo fa ho scritto un articolo per il sito http://www.iprogrammatori.it/articoli/programmazione/Infopath_2007_Applicare_immagine_di_sfondo_ad_un_pulsante..asp che illustra una tecnica di come applicare ad un pulsante un immagine di sfondo, nel programma Microsoft Infopath 2007. Di seguito qui l'articolo.

Introduzione.

In questo articolo, vedremo come applicare ad un pulsante un immagine di sfondo, in questo modo rendiamo i pulsanti graficamente più accattivante, come mostrato in figura 1.





Figura 1


Creazione del modulo

Si crea un nuovo modulo vuoto in Infopath 2007, dalla barra riquadro attività, selezionare la voce controlli, trasciniamo nel modulo il controllo pulsante.

Nel caso, si vuole creare un pulsante senza etichetta, possiamo applicare la funzione sostituisci, in questo modo il controllo sull’etichetta del pulsante non visualizzerà il messaggio di errore, per la mancanza di un testo.

La formula da applicare alla proprietà etichetta, è la seguente sostituisci(“a”; “a”; “”)


Dove il valore il primo campo è il valore che contiene il testo da esaminare, mentre il secondo argomento riguarda il testo da cercare ed il terzo, il nuovo valore da applicare nel caso che viene trovato il valore.


Come mostrato in figura 2.


Sempre nella finestra delle proprietà, selezioniamo il tab con la scritta dimensione, in questo modo impostiamo la larghezza e l’altezza delle stesse dimensioni della immagine. Impostare il valore 32 per altezza e larghezza, e px, nella casella combinata. Inoltre nella finestra bordi e sfondi, selezionare l’opzione.



Figura 2


Dal menu strumenti, selezioniamo la voce File di risorse, in questo modo aggiungiamo al nostro modulo una risorsa di tipo immagine.


Dalla finestra che viene aperta, selezioniamo la voce aggiungi e selezioniamo l’immagine di nostro interesse, con dimensioni 32x32.

A questo punto non ci resta che salvare il nostro modulo appena creato.

Modifica del file .xsn


Il file creato, con estenzione xsn, contiene al suo interno diversi file, in particolare dovremo modificare un file, e precisamente il file denominato view1.xls.

Per visualizzare i file al suo interno, rinominiamo il file modulo da xsn in zip, in effetti il file con estensione xsn, non è nient altro che un file compresso, con all’interno altri file.

Apriamo tramite notepad il file view1.xsl, posizioniamo sul tag <input, dove il tag input è il nostro pulsante (creato in formato html).

Tale tag, ha un attributo chiamato style, all’interno di questo tag, nella parte finale, inseriamo la seguente stringa di codice:


; BACKGROUND-IMAGE: url(delete.png); BACKGROUND-REPEAT: no-repeat


Dove delete.png è il nostro file immagine.

Di seguito si riporta il tag input completo del nostro esempio:


<input class="langFont" title="" style="BORDER-RIGHT: #808080 6pt; BORDER-TOP: #808080 6pt; BORDER-LEFT: #808080 6pt; WIDTH: 32px; BORDER-BOTTOM: #808080 6pt; HEIGHT: 32px ; BACKGROUND-IMAGE: url(delete.png); BACKGROUND-REPEAT: no-repeat" type="button" xd:xctname="Button" xd:CtrlId="CTRL1_5" tabIndex="0">


A questo punto chiudiamo notepad e salviamo le modifiche.

Avviare il modulo.

Terminata la fase di progettazione, non ci resta che testare il modulo, sempre nella cartella dove abbiamo scompattato il file xns, apriamo in modalità struttura, il file manifest.xsn, a questo punto dovremmo vedere il pulsante con lo sfondo dell’immagine inserita nel nostro file di risorse.

Conclusioni:


In questo articolo, abbiamo visto come migliorare l’aspetto grafico dei nostri moduli, Infopath 2007, è un sofware per la creazione dei moduli molto flessibile, basta un minimo di conoscenza di programmazione html per effettuare delle personalizzazoini.


Tramite la parola Download è possibile scaricare il file di esempio utilizzato nell’articolo.


Download

Programma gratuito di contabilità

Oggi vi segnalo un programma gratuito open source, sviluppato con la tecnologia .Net.
Il programma GEa.Net http://www.fborghi.it/geanet.htm è un programma per la gestione delle piccole e medie imprese, tutto ciò che ha bisogno un'azienda.
Il programma ed il sito è in lingua italiana, interessante la tecnologia utilizzata, complimenti all'autore del sito.
Per il download del programma e maggiori informazioni, visitate il seguente sito http://www.fborghi.it/geanet.htm .

nuova comunità italiana riguardante la virtualizzazione

Oggi vi segnalo una nuova comunità italiana, riguardante il mondo della virtualiazzione.
Da questo sito http://www.vmexperts.org/ si può partecipare ad una nuova comunità, su ciò che concerne la virtualizzazione. Nel sito si trovano articoli, blog, forum e tant altro.

Software antivirus gratuito

AVG è un programma per la protezione del proprio pc.
In particolare è un antivirus, molto diffuso proprio per la sua qualità del proteggere il computer, il programma scaricabile dal seguente sito http://gratis.avg.it/it.pagina-iniziale , inoltre la definizione dei virus è in costante aggiornamento.
Per il download e maggiori informazioni, visitate il sito indicato

Aggiornamento per Microsoft Office Outlook 2007 (KB952142) e Aggiornamento per Microsoft Office Outlook 2003 (KB953432)

Nuovi aggiornamenti per il programma di posta elettronica Microsoft Outlook 2007. Da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=05bdd58f-45de-406b-821d-eb23659264de&DisplayLang=it potete scaricare un aggiornamento che consente di risolvere un problema a causa del quale Microsoft Office Outlook 2007 mostra comportamenti imprevisti in determinate circostanze.
Mentre per coloro che utilizzano la versione 2003, il sito è il seguente http://www.microsoft.com/downloads/details.aspx?FamilyID=fd072a64-f1d5-4da9-b19c-1afbf0e651e8&DisplayLang=it.
Per maggiori informazioni e download visitate i siti indicati.

Segnalazione sito: Un aiuto per l'uso del computer

Oggi vi segnalo un sito molto simpatico, in particolare http://www.aiutocomputer.org/ aiutocomputer si rivolge a coloro che hanno problemi con il computer, fornendo notizie, trucchi ed articolo sull'utilizzo del pc.
Un ottima risorse per risolvere i problemi che il computer va incontro.

mercoledì 9 luglio 2008

Programma gratuito portatile per masterizzare

Amok cd/dvd è un programma gratuito, che permette di scrivere dati sul cd o dvd.
Il programma è molto leggero, al punto che non richiede l'installazione, un buon programma portable da portare nella propria chiavetta.
Il software si può scaricare dal seguente sito http://www.amok.am/en/freeware/amok_cd-dvd_burning/

download freepops

Oggi vi segnalo un programma gratuito, riguardante la posta elettronica.
Da questo sito http://www.freepops.org/it/ potete scaricare il programma freepops, il quale permette di gestire la posta elettronica e i feed rss.
Per maggiori informazioni e download visitate il sito indicato.

Recensione libro: Access 2007 Programmazione VBA



Scheda del libro:



























Autore:Alessandra Salvaggio
Prezzo:Euro 19,90
Caratteristiche280 pag - 15x21 bn
ISBN
9788882336141
anno di edizione2007
numero dell'edizione2
Argomento:Informatica
Collanadigital lifestyle pro


Il libro Acess 2007 Programmazione VBA, fa parte di quella serie dei libri, che la casa editrice FAG http://www.fag.it/ ha pubblicato di recente, riguardante l'utilizzo degli applicativi Microsoft Office 2007. Questo libro, si prefigge il compito di fornire al lettore le basi per utilizzare l'applicativo Microsoft Access 2007, lato programmazione, ed in particolare con il linguaggio Visual Basic Application. Il libro è composto da ben 33 capitoli nel quale si trovano numerosi esempi di codice ed immagini per comprendere l'argomento che si sta trattando


L'autore del libro, Alessandra Selvaggio, ha pubblicato diversi libri riguardante il pacchetto Microsoft Office 2007 e versioni precedenti, con questo libro illustra varie tecniche di utilizzo di Microsoft Office Access 2007, diversamente dal suo utilizzo a livello utente, ma fornendo una base per utilizzarlo in modo da creare delle proprie procedure e funzionalità aggiuntive. Nel libro non è incluso nessun CD-Rom o dvd, i sorgenti degli esempi utilizzati nei vari capitoli si possono scaricare dal seguente sito http://www.fag.it/booksite/614-1.htm.


Ma vediamo in dettaglio i vari capitoli che compongono questo libro.


Il capitolo 0 è un capitolo introduttivo alla programmazione Visual Basic Application (VBA), il capitolo è molto ricco di immagini, in questo modo il lettore può comprendere con facilità l'argomento, nel caso che sia la prima volta che si studia questo nuovo modo di utilizzare Access. Nel capitolo si parla dell'editor di VBA, ed altre interessanti temi su questo argomento.


Con il capitolo primo, ci si addentra alla programmazione vera e propria, ossia all'utilizzo del VBA. In questo capitolo, l'autore illustra al lettore la possibilità di creare un navigatore personalizzato, ossia come spostarsi tra i vari record. Nel capitolo viene affrontato l'oggetto docmd, inoltre come genere un evento del controllo pulsante.


Il secondo capitolo, continua la creazione di un navigatore personalizzato, in questo capitolo, viene illustrato l'istruzione condizionale, ossia la parola chiave if then end if , la proprietà enabled per abilitare o disabilitare un pulsante, la proprietà recordcount dell'oggetto RecordSet, ed altre tecniche di programmazione.


Con il terzo capitolo, viene illustrato l'operatore And ed Or da utilizzare nell'istruzione if. Il capitolo è breve, per fornire informazioni su questi operatori


Con il quarto capitolo, si passa più sulla parte grafica che sul codice, in questo capitolo viene illustrato come copiare i controlli da una maschera all'altra, e come copiare frammenti di codice, sempre da una maschera all'altra.


Il quinto capitolo, molto breve anch'esso, illustra come utilizzare il metodo setFocus per impostare lo stato attivo ad un determinato controllo.


Nel sesto capitolo, viene illustrato come rendere una maschera in sola lettura, ossia in cui non è possibile modificare le informazioni di tale maschera. Tramite la proprietà AllowEdits, si può rendere la maschera in sola lettura, senza apportare le modifiche.


Il settimo capitolo, illustra il metodo Refresh per aggiornare i record della tabella associata alla maschera.


Con l'ottavo capitolo, l'autore del libro, illustra l'utilizzo dell'oggetto msgbox e le varie opzioni che si possono applicare a questo oggetto per visualizzare a video dei messaggi.


Il nono capitolo, è un capitolo molto interessante, infatti in questo capitolo viene illustrato l'utilizzo delle proprietà Filter e Filteron, per filtrare i dati di una maschera, l'utilizzo del controllo gruppo di opzioni ed altre operazioni con la maschera.


Con il capitolo decimo, viene illustrato come personalizzare la nostra maschera per la visualizzazione dei record filtrati, come cambiare il colore di sfondo della maschera, l'utilizzo della proprietà visible per visualizzare o nascondere i vari controlli l'utilizzo dei controlli etichetta ed immagine.


L'undicesimo capitolo, riguarda sempre il filtro dei dati, nel capitolo viene illustrato come filtrare i dati nonostante la maschera è in sola lettura e l'utilizzo dell'evento mousedown.


Il dodicesimo capitolo è un capitolo dedicata alla gestione dei dati, in particolare come visualizzare i dati da un origine multipla, ossia da più tabelle. Visto l'importanza e la complessità dell'argomento, il capitolo è più lungo degli altri, inoltre nel capitolo viene illustrato come utilizzare una casella combinata, l'utilizzo della parola chiave SET, utilizzare il metodo clone di un recordset, per avere una copia dei record, l'utilizzo delle funzioni Str e Nz per le stringhe, l'operatore not e le proprietà EOF e bookmark.


Con il tredicesimo capitolo viene illustrato come richiamare e gestire le sottomaschere, l'utilizzo degli eventi gotfocus, momento in cui si riceve lo stato attivo e lostfocus, momento in cui si perde lo stato attivo delle caselle combinate.


Il quattordicesimo, affronta un tema molto sentito in questo periodo, ossia l'invio di email. Infatti oggi come oggi un numero elevato di utenti, possiede ed utilizza costantemente internet, in questo capitolo si vede come utilizzare il metodo Sendobject per inviare il database tramite posta elettronica. Inoltre nel capitolo, viene suggerito di come convertire gli oggetti del database in formato pdf, tramite l'aggiunta di un componente gratuito di Microsoft.


Il capitolo successivo, ossia il quindicesimo, viene illustrato l'utilizzo delle variabili, alcune impostazioni da applicare all'editor VBA, utilizzo della funzione ISnull per verificare se un dato è nullo o no.


Il capitolo 16, riguarda l'utilizzo dell'oggetto msgbox, ossia un oggetto che visualizza a video un messaggio, con questa tecnica è possibile interagire con l'utente, e l'autore del libro, illustra come utilizzarlo e le varie opzioni da applicare, inoltre viene spiegato come utilizzare l'istruzione if annidate.


Il capitolo 17, continua l'argomento sul salvataggio di un oggetto del database in formato pdf, in questo capitolo, se pur molto breve, viene preso un esempio di codice, sull'utilizzo del metodo output dell'oggetto docmd, per esportare in formato pdf.


Il successivo capitolo, ossia il diciottesimo, prende in esame un argomento molto importante, fondamentale per coloro che sono interessati alla programmazione, in particolare la gestione degli errori, infatti per quanto bravi si è, nel programma si può verificare un errore. In questo capitolo l'autore illustra come utilizzare la parola chiave del vba, on error goto e on error resume next


Il capitolo 19, illustra come creare una funzione per verificare che l'utente ha compilato i vari campi della maschera, in questo capitolo viene illustrato il ciclo for each per effettuare una verifica sui vari controlli posti nella maschera. Nel capitolo viene illustrato l'istruzione Select case, utilizzo della proprietà controls per effettuare il ciclo dei vari controlli, la proprietà Controltype per distinguere il tipo di controllo.

Il capitolo ventesimo, riguarda l'utilizzo di una barra per mostrare un determinato dato. Inoltre si vede come utilizzare il metodo openform per aprire una maschera e filtrarla.

Il capitolo successivo, se pur molto breve, illustra una simpatica tecnica, di come creare una finestra di zoom.

Il ventiduesimo capitolo, riguarda sempre i controlli, in questo capitolo, viene illustrato come attivare e disattivare i controlli di una maschera.

Interessante il capitolo ventitreesimo, l'autore del libro, spiega un argomento molto sentito tra i programmatori, l'oggetto ADO, una libreria che permette di gestire il database, o meglio i vari record del nostro db access. In questo capitolo viene illustrato come utilizzare tale oggetto, i vari metodi (update, addnew) messi a disposizione da questa libreria.

Nel capitolo ventiquattresimo, viene illustrata la creazione di una funzione per la verifica della partita iva, molto utile per coloro che devono verificare alcuni dati sensibili, nel capitolo sono presi in esami alcune funzione del vba, come la funzione le, isnumeric, mid, mod e right.

Anche il capitolo successivo ossia il venticinquesimo, è un capitolo dedicato alla creazione di una funzione di verifica, in questo capitolo viene creata una funzione per la verifica del codice fiscale.
In questo capitolo verranno illustrate le funzioni ucase, lcase e asc e l'utilizzo degli array.

Il capitolo 26, si conclude la serie dei capitoli dedicati alla verifica della correttezza di alcuni dati, in questo capitolo, si vedrà come creare una funzione per il controllo della correttezza del codice IBAN.

Il ventisettesimo capitolo, riguarda i report, molto utile questo capitolo, perchè nel caso che si devono effettuare delle stampe, i report sono un ottimo strumento per la gestione della stampa.
Nel capitolo vedremo come formattare tramite la proprietà backcolor e stampare i report tramite il metodo print.

Il capitolo 28, continua la parte dedicata ai report, in questo capitolo, vedremo come impostare il colore dei vari oggetti, con questo capitolo si conclude la parte dedicata ai report.

Il capitolo ventinovesimo, illustra l'utilizzo di Microsoft Word in Access. In particolare vedremo come utilizzare l'oggetto word.application per la gestione di un documento word, i vari metodi che espone e l'utilizzo di un segnalibro.

Con il capitolo trentesimo, continua l'argomento sull'utilizzo di Microsoft Word in Access, dopo aver visto nel capitolo precedente la stampa di lettere, in questo capitolo si vede come applicare altre opzioni per la stampa delle lettere.

Il capitolo 31, non riguarda il codice vba, ma l'utilizzo di maschera a livello di impostazione, ossia come creare una maschera di avvio, sostituire la finestra del database con una maschera personalizzata, l'utilizzo dell'autocomposizione ed altro ancora.

Il capitolo trentaduesimo, affronta un argomento molto sentito in questi ultimi anni, ossia l'utilizzo della posta elettronica. In questo capitolo, vedremo come inviare un e-mail, utilizzando il programma di posta elettronica Microsoft Outlook. Verranno illustrati gli oggetti outlook.application per la gesteione di outlook, e outlook.mailitem, per la gestione dell'email, in quest'ultimo oggetto, si vedranno le varie proprietà (body, to, subject, ecc) e metodi (send) messi a disposizione. Inoltre si vedrà come verificare la correttezza di un indirizzo email.

Il capitolo conclusivo, ossia il 33, illustra un argomento fondamentale per coloro che programmano. Nel capitolo verrà spiegato come effettuare il debug del codice e gli strumenti messi a disposizione dall'editor VBA.


Di seguito si riportano i titoli dei capitoli


0) Introduzione al VBA


1) Creare Un Navigatore Personalizzato


2) Disabilitare Alcuni Pulsanti


3) Risolvere un piccolo Problema: Gli operatori And e OR


4) Copiare i Controlli e il Codice da una maschera all'altra


5) Assegnare il fuoco al controllo corretto


6) Una Maschera in sola lettura


7) Terminare le modifiche alla maschera.


8) Creare un messaggio personalizzato in risposta a un'azione dell'utente


9)Filtrare i dati di una maschera


10) Mostrare visivamente che i record sono filtrati


11) Filtrare la maschera in modalità di sola lettura


12) Creare una maschera a origine multipla


13) Attivare e disattivare le sottomaschere


14) Inviare e-mail


15) Le variabili


16) Interagire con l'utente


17) Salvare un oggetto del database in PDF


18) Gestire gli errori


19) Verificare che l'utente abbia compilato integralmente una maschera


20) Mostrare un dato con una barra


21) Una finestra di zoom


22) Attivare e disattivare un controllo


23) ADO


24) Verifica della partita IVA


25) Verifica del codice Fiscale


26) Verifica del codice IBAN


27) I Report


28) Cambiare colore agli oggetti grafici


29) Interazione con Microsoft Word


30) Un gruppo di opzioni


31) Applicazione database


32) Ancora sull'invio di e-mail


33) il debug del codice



Conclusioni:


Un buon libro, per coloro che si vogliono avvicinare alla programmazione per Microsoft Office, in particolare per Microsoft Access 2007. Il libro fornisce al lettore, informazioni utili, per acquisire famigliarità con questo strumento avanzato, il linguaggio Visual Basic Application si può utilizzare in qualsiasi applicazione Microsoft Office. Un libro indicato per coloro che non hanno mai programmato e che sono interessati a questo nuovo mondo. Molto ricco di codice ed immagini, gli esempi utilizzati nel libro, si possono scaricare dal sito indicato in precedenza.



download Aggiornamento per il filtro per la posta indesiderata di Microsoft Office Outlook 2007 e 2003


Nuovo aggiornamento per Microsoft Outlook, in particolare da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=e269e6f4-afaf-4703-9238-5b84951f6324&DisplayLang=it potete scaricare l'aggiornamento per il filtro per la posta indesiderata di Microsoft Outlook 2007. Mentre per la versione di outlook 2003, l'aggiornamento si può scaricare dal seguente sito http://www.microsoft.com/downloads/details.aspx?FamilyID=8f008afb-f6a9-42b2-8472-279623063dfb&DisplayLang=it .

Download Expression Studio 2, Expression Web 2, Expression Design 2, Expression Blend 2

Vi segnalo delle copie di valutazione di alcuni ambienti per la creazione delle pagine web.
In particolare da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=7ae2720c-72ba-489b-adbb-ee6f3c79066d&DisplayLang=it potete scaricare la trial dei Microsoft Expression Studio 2, mentre da qui http://www.microsoft.com/downloads/details.aspx?FamilyID=28ca49cc-5f30-4b1f-a569-e7fdc83cef4f&DisplayLang=it il programma per la creazione dei siti web Expression web 2.
Mentre la versione di Microsoft Expression Design 2 si può scaricare da qui http://www.microsoft.com/downloads/details.aspx?FamilyID=369b8681-57f9-49e9-a585-ecc5cac40959&DisplayLang=it mentre da qui http://www.microsoft.com/downloads/details.aspx?FamilyID=5ff08106-b9f4-43cd-abad-4cc9d9c208d7&DisplayLang=it potete scaricare la versione di Microsoft Express Blend 2.
Per poter utilizzare le copie, è necessario ricevere il codice di attivazione, rilevabile dai siti indicati.
Che dirvi... buon download.

Creazione di grafici in .Net

Vi segnalo questo sito http://zedgraph.org/wiki/index.php?title=Main_Page in cui è possibile scaricare un componente gratuito, riguardante la creazione dei grafici.
ZedGraph, è una dll, gratuita, che permette di creare dei spettacolari grafici con la tecnologia .Net.
La dll si può scaricare dal seguente sito http://sourceforge.net/project/showfiles.php?group_id=114675 mentre alcuni esempi si possono vedere dal seguente sito http://zedgraph.org/wiki/index.php?title=Sample_Graphs

Creare un grafico con Excel 2007 tramite Infopath 2007

Riporto un articolo scritto per il sito iprogrammatori http://www.iprogrammatori.it/articoli/programmazione/creare_un_grafico_di_excel_tramite_infopath_2007.asp .



Figura 1


Introduzione

In questo articolo, vedremo come creare un grafico in Excel, dal programma Microsoft Infopath 2007. Verrà creato un grafico stile Istogramma, come mostrato in figura 1.

Durante la creazione di tale grafico verrà effettuata una rotazione a 180 gradi, il linguaggio di scripting utilizzato è il Visual Basic Script.

Creazione modulo e script.

Si crea un nuovo modulo vuoto di Infopath 2007, fatto ciò inseriamo nel modulo un pulsante. Nell’evento click del pulsante, dobbiamo inserire il codice per la crazione del grafico.

Per creare l’evento click del pulsante, selezionare la voce proprietà dal menu di scelta rapida del pulsante. Nella prima linguetta (“Generale”), facciamo click sul pulsante “ modifica codice modulo” in questo modo verrà aperto l’editor di scripting direttamente nell’evento click del pulsante. VA ricordato di impostare come linguaggio scripting, il Visual Basic.

Lo script di seguito permette la creazione del grafico in Excel, si creano diversi oggetti, in particolare per la gestione di Excel e dei vari foglio di lavoro.

Tramite la proprietà Rotation dell’oggetto grafico, si effettua sul grafico una rotazione.


Dim objXL


Dim objXLchart


Dim intRotate



Set objXL = CreateObject(“Excel.Application”)


objXL.Workbooks.Add


objXL.Cells(1,1).Value = 5


objXL.Cells(1,2).Value = 10


objXL.Cells(1,3).Value = 15


objXL.Range(“A1:C1”).Select



Set objXLchart = objXL.Charts.Add()


objXL.Visible = True


objXLchart.Type = -4100



For intRotate = 5 To 180 Step 5


objXLchart.Rotation = intRotate


Next



For intRotate = 175 To 0 Step -5


objXLchart.Rotation = intRotate


Next


Conclusioni:


In questo articolo, si è visto come utilizzare il programma Microsoft Excel 2007, da un modulo di Infopath 2007, tramite il linguaggio di Scripting Visual Basic. Anche se l’esempio è molto semplice, si fa presente che si possono fare operazioni più complesse.

Tramite la parola Download è possibile scaricare il file di esempio utilizzato in questo articolo, aprirlo in modalità struttura.


Download


martedì 8 luglio 2008

Vedere film gratuitamente sul web

Oggi segnalo un simpatico servizio gratuito, che offre la possibilità di vedere via web dei film (di diversi anni fa) semplicemente visitando la pagina del film.
Il sito http://www.first.tv/index.php offre ogni giorni, diversi titoli di film, dove aver fatto click sul film desiderato, viene visualizzato nel proprio browser di navigazione il film.
Un ottimo sito italiano, per coloro che sono amanti dei film.

domenica 6 luglio 2008

Programma gratuito per la gestione documentale

Da questo sito http://www.knowledgetree.com/ è possibile scaricare una versione gratuita per la gestione documale.
Il programma, utilizza la tecnologia PHP, una soluzione free e open source per coloro che devono gestire i documenti.

CF Creare db con SQLCE

L'esempio di codice qui riportato, illustra una tecnica di come creare una database in ambiente windows Mobile.
Dopo aver aggiunto i riferimenti (dal menu progetti,selezionare aggiungi riferimenti) System.data.Sqlce e System.data , aggiungere i namespace per la gestione dei database.
Di seguito si riportano i namaspace.

VB.Net


Imports System.IO


Imports System.Data.SqlServerCe


Imports System.Data


C#


using System.Data.SqlServerCe;

La creazione del database, avviene nell'evento click di un pulsante inserito precedentemente.


VB.Net



Private Sub BtnCreaDB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCreaDB.Click



Dim conDati As SqlCeConnection


Try


'elimino eventualmente il db creato


System.IO.File.Delete("\My Documents\Miodb.sdf")



Dim SQLEngine As New SqlCeEngine("data source=\My Documents\Miodb.sdf")


SQLEngine.CreateDatabase()



' mi connetto al db


conDati = New SqlCeConnection("Data Source=\My Documents\Miodb.sdf")


conDati.Open()



'Creazione di un tabella


Dim SQL As [String] = "CREATE TABLE MiaTabella (ID int Primary Key " + "NOT NULL,Nome nvarchar(50) NOT NULL)"


Dim cmdDati As New SqlCeCommand(SQL, conDati)


cmdDati.CommandType = CommandType.Text


cmdDati.ExecuteNonQuery()


SQL = ""



'Inserisco i dati


SQL = "INSERT INTO MiaTabella (ID, Nome) VALUES " + "('0','Emanuele')"


cmdDati.CommandText = SQL


cmdDati.ExecuteNonQuery()



SQL = ""


SQL = "INSERT INTO MiaTabella (ID, Nome) VALUES " + "('1','Emanuele2')"


cmdDati.CommandText = SQL


cmdDati.ExecuteNonQuery()



SQL = ""


SQL = "Select * from MiaTabella "


cmdDati.CommandText = SQL


Dim rdrDati As SqlCeDataReader = cmdDati.ExecuteReader()


While rdrDati.Read()


MessageBox.Show(rdrDati.GetString(1))


End While




Catch ex As SqlCeException


MessageBox.Show(ex.Message)


Finally


conDati.Close()


End Try



C#


private void btnCreaDB_Click(object sender, EventArgs e)


{


SqlCeConnection conDati = null;


try


{


//elimino eventualmente il db creato


System.IO.File.Delete(@"\My Documents\Miodb.sdf");



SqlCeEngine SQLEngine = new SqlCeEngine("data source=" + @"\My Documents\Miodb.sdf");


SQLEngine.CreateDatabase();



// mi connetto al db


conDati = new SqlCeConnection("Data Source=" + @"\My Documents\Miodb.sdf");


conDati.Open();



//Creazione di un tabella


string SQL = "CREATE TABLE MiaTabella (ID int Primary Key " + "NOT NULL,Nome nvarchar(50) NOT NULL)";


SqlCeCommand cmdDati = new SqlCeCommand(SQL, conDati);


cmdDati.CommandType = CommandType.Text;


cmdDati.ExecuteNonQuery();


SQL = "";



//Inserisco i dati


SQL = "INSERT INTO MiaTabella (ID, Nome) VALUES " + "('0','Emanuele')";


cmdDati.CommandText = SQL;


cmdDati.ExecuteNonQuery();



SQL = "";


SQL = "INSERT INTO MiaTabella (ID, Nome) VALUES " + "('1','Emanuele2')";


cmdDati.CommandText = SQL;


cmdDati.ExecuteNonQuery();



SQL = "";


SQL = "Select * from MiaTabella ";


cmdDati.CommandText = SQL;


SqlCeDataReader rdrDati = cmdDati.ExecuteReader();


while (rdrDati.Read())


{


MessageBox.Show(rdrDati.GetString(1));


}



}



catch (SqlCeException ex)


{


MessageBox.Show(ex.Message);



}


finally


{


conDati.Close();



}



}

Tramite la parola Download, è possibile scaricare il file di esempio
Download

Spazio web gratuito Asp.Net 3.5

Per coloro che sono interessati allo spazio web gratuito, che supporti la tecnologia Asp.Net, segnaliamo il sito somee http://www.somee.com/ .
Il sito http://www.somee.com/ offre la possibilità di crearsi un proprio sito, che supporti la tecnologia Asp.Net (1.1, 2.0, 3.0).
Il servizio gratuito, offre 105 mb di spazio, 3 gb di banda al mese, la possibilità di utilizzare il database access, ed altre opzioni.
Per maggiori informazioni su questo spazio web, potete visitate il seguente sito http://www.somee.com/FreePackage.aspx .