CF Creazione di un database

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

CF utilizzare le api di Windows Mobile, per effettuare le telefonate o rilevare informazioni alla SIM tramite C#

Questo esempio di codice, illustra come utilizzare le api di Windows Mobile, per effettuare delle telefonate e rilevare informazioni della SIM.

Effettuare una telefonata:

Namespace:

 

using

 

System.Runtime.InteropServices;

A livello di classe creare la seguente struttura e i due campi.

 

 

 

 

 

private static long PMCF_DEFAULT = 0×00000001;private static long PMCF_PROMPTBEFORECALLING = 0×00000002;private struct PhoneMakeCallInfo{

 

 

 

 

 

 

}

 

public IntPtr cbSize;public IntPtr dwFlags;public IntPtr pszDestAddress;public IntPtr pszAppName;public IntPtr pszCalledParty;public IntPtr pszComment;

Dichiarazione di api per effettuare la telefonata

 

[

 

 

DllImport("phone.dll")]private static extern IntPtr PhoneMakeCall(ref PhoneMakeCallInfo ppmci);

Funzione che effettua la chiamata

 

unsafe

{

 

 

 

 

private void Telefona(string numero)bool avvisa = true;IntPtr res;//numero += ”; 

 

{

 

info.cbSize = (

info.pszDestAddress = (

 

{

info.dwFlags = (

}

 

 

char[] cPhoneNumber = numero.ToCharArray();fixed (char* pAddr = cPhoneNumber)PhoneMakeCallInfo info = new PhoneMakeCallInfo();IntPtr)Marshal.SizeOf(info);IntPtr)pAddr;if (avvisa)IntPtr)PMCF_PROMPTBEFORECALLING;else{

info.dwFlags = (

}

res = PhoneMakeCall(

}

}

 

IntPtr)PMCF_DEFAULT;ref info);

Eseguire la funzione per effettuare la chiamata

 

 

{

Telefona(

}

 

private void btnChiama_Click(object sender, EventArgs e)“4250010001″);

 

Rilevare il numero di telefono, individuare gli sms che si possono ricevere ed il numeri di quelli ricevuti.

Dichiarazione a livello di classe

 

//Identificazione numero

 

 

 

public enum AddressType{

 

 

Unknown,

 

 

International,

 

 

National,

 

 

NetworkSpecific,

 

 

Subscriber,

 

 

Alphanumeric,

 

 

Abbreviated

}

 

 

//informazioni numero 

 

public struct PhoneAddress{

 

 

/// <summary>The address type.</summary> 

 

 

public AddressType AddressType;/// <summary>The phone number in string format.</summary> 

}

 

[

 

 

public String Address;private static long SERVICE_PROVIDER = 0x00006F46;StructLayout(LayoutKind.Sequential)]private struct SimRecord{

 

 

 

 

 

}

 

public IntPtr cbSize;public IntPtr dwParams;public IntPtr dwRecordType;public IntPtr dwItemCount;public IntPtr dwSize;Dichiarazione api

 

[

 

[DllImport("cellcore.dll")]

public static extern int SimInitialize(uint dwFlags, int lpfnCallBack, uint dwParam, ref int lphSim);

//private static extern IntPtr SimInitialize(IntPtr dwFlags, IntPtr lpfnCallBack, IntPtr dwParam, out IntPtr lphSim);[DllImport("cellcore.dll")]

private static extern IntPtr SimGetRecordInfo(IntPtr hSim, IntPtr dwAddress, ref SimRecord lpSimRecordInfo);

[DllImport("cellcore.dll")]

private static extern IntPtr SimReadRecord(IntPtr hSim, IntPtr dwAddress, IntPtr dwRecordType, IntPtr dwIndex, byte[] lpData, IntPtr dwBufferSize, ref IntPtr lpdwBytesRead);

[DllImport("cellcore.dll")]

private static extern IntPtr SimDeinitialize(IntPtr hSim);

[DllImport("cellcore.dll")]

public static extern int SimGetSmsStorageStatus(int hSim, uint dwStorage, ref uint lpdwUsed, ref uint lpdwTotal);

 

 

DllImport(“sms.dll”)]private static extern IntPtr SmsGetPhoneNumber(IntPtr psmsaAddress);Funzione che rileva il numero del telefono e tipo

 

unsafe private PhoneAddress GetPhoneNumber()

{

PhoneAddress phoneaddr = new PhoneAddress();

Byte[] buffer = new Byte[516];

fixed (byte* pAddr = buffer)

{

IntPtr res = SmsGetPhoneNumber((IntPtr)pAddr);

if (res != IntPtr.Zero)

throw new Exception(“Could not get phone number from SIM”);

byte* pCurrent = pAddr;

phoneaddr.AddressType = (AddressType)Marshal.ReadInt32((IntPtr)pCurrent);

pCurrent += Marshal.SizeOf(phoneaddr.AddressType);

phoneaddr.Address = Marshal.PtrToStringUni((IntPtr)pCurrent);

}

return phoneaddr;

}

 

Richiamare la funzione da un evento click del pulsante (numero telefono e tipo)

 

private void btnnumero_Click(object sender, EventArgs e)

{

string informazioni = “Numero: “ + GetPhoneNumber().Address + ” Tipo: “ + GetPhoneNumber().AddressType;

MessageBox.Show(informazioni);

}

 

Richiamare la funzione da un evento click di un pulsante per la gestione degli sms (totali e ricevuti)

 

private

{

 

 

 

 

SimInitialize(0, 0, 0,

SimGetSmsStorageStatus(hSim, SIM_SMSSTORAGE_SIM,

 

 

}

 

void btnSms_Click(object sender, EventArgs e)int hSim = 0;uint smsUsed = 0;uint smsTotal = 0;uint SIM_SMSSTORAGE_SIM = 0×2;ref hSim);ref smsUsed, ref smsTotal);MessageBox.Show(“Sms Usati: “ + smsUsed.ToString());MessageBox.Show(“Sms Totali: “ + smsTotal.ToString());Tramite la parola download è possibile scaricare il file di esempio

Download

       

CF avviare un processo

In questo esempio di codice, vedremo come utilizzare le api di Windows Mobile, per avviare un programma eseguibile.
In alternativa al metodo start della classe process (il cf 1.1 non ne dispone) per avviare i vari processi, si può ricorrere alla dichiarazione di api (CreateProcess) per avviare un determinato programma.
Di seguito si riporta un esempio di codice.

Dichiarazione di Api e struttura

 

VB.Net

Declare Function CreateProcess Lib “coredll.dll” (ByVal imageName As String, ByVal cmdLine As String, ByVal lpProcessAttributes As IntPtr, ByVal lpThreadAttributes As IntPtr, ByVal boolInheritHandles As Int32, ByVal dwCreationFlags As Int32, ByVal lpEnvironment As IntPtr, ByVal lpszCurrentDir As IntPtr, ByVal si As Byte(), ByVal pi As ProcessInfo) As Integer

Public Class ProcessInfo

Public hProcess As IntPtr

Public hThread As IntPtr

Public ProcessId As Int32

Public ThreadId As Int32

End Class

C#

[DllImport("coredll.dll", SetLastError = true)]

static extern bool CreateProcess(String imageName,

String cmdLine,

IntPtr lpProcessAttributes,

IntPtr lpThreadAttributes,

bool boolInheritHandles,

Int32 dwCreationFlags,

IntPtr lpEnvironment,

IntPtr lpszCurrentDir,

byte[] si,

ProcessInfo pi);

public class ProcessInfo

{

public IntPtr hProcess;

public IntPtr hThread;

public Int32 ProcessId;

public Int32 ThreadId;

}

Codice da inserire in un evento click di un pulsante

VB.Net

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

Dim pi As New ProcessInfo

Dim si(128) As Byte

Dim resultato As Int32

 

resultato = CreateProcess(“calc.exe”, “”, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero, si, pi)

 

 

 

End Sub

C#

private void button1_Click(object sender, EventArgs e)

{

ProcessInfo pi = new ProcessInfo();

byte[] si = new byte[128];

bool resultato = CreateProcess(“calc.exe”, ” “, IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, IntPtr.Zero, si, pi);

 

}

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

Download esempio

Paginazione di un controllo gridview in Asp.Net 2.0

Per il sito iprogrammatori http://www.iprogrammatori.it/articoli/programmazione/paginazione_controllo_gridview.asp

Figura 1

Introduzione:

In questo articolo, vedremo come applicare ad un controllo GridView (Asp.Net) la paginazione ed inserire nella prima colonna un pulsante per il rilevamento del dato della riga a cui si è fatto click. Si crea un nuovo progetto Web, inseriamo nella nuova pagina, un controllo gridView ed una label, l’aspetto dev’essere simile come mostrato in figura 1.

Fatto ciò si creano tre colonne per il controllo gridView, due di tipo boundfield ed una tipo buttonField

Di seguito è riportato il frammento di codice delle suddette operazioni.

<Columns>

 

<asp:ButtonField ButtonType=”Button” CommandName=”Seleziona” Text=”Seleziona” />

<asp:BoundField DataField=”Valore A” HeaderText=”Valore A” />

<asp:BoundField DataField=”Valore B” HeaderText=”Valore B” />

Columns>

Impostare le proprietà del controllo GridView.

Per applicare la paginazione ad un controllo GridView, occorre impostare a true la proprietà “AllowPaging” del controllo, fatto ciò si imposta la proprietà EnabledSortingAndPagingCallBacks a true (figura 2), in questo modo ci permette di evitare di scrivere il codice per la gestione della paginazione, tale proprietà indica se deve essere eseguito il rendering dello script client per l’ordinamento e la paginazione ai client browser che supportano il callback. La proprietà pageSize, la impostiamo a 5, in questo modo avremo per ogni pagina 5 record.

Figura 2

A questo punto non ci resta, che scrivere nell’evento load della pagina, il codice per il caricamento dei dati nel controllo gridiview.

Di seguito si riporta il frammento di codice per il caricamento dei dati, il dataTable, verrà popolata con 15 righe.

VB.Net

 

Dim dtcColonnaA As New DataColumn(“Valore A”

)

Dim dtcColonnaB As New DataColumn(“Valore B”

)

Dim dttDati As New

DataTable()

dttDati.Columns.Add(dtcColonnaA)

dttDati.Columns.Add(dtcColonnaB)

For conta As Integer = 1 To

15

Dim dtrRiga As

DataRow = dttDati.NewRow()

dtrRiga(0) =

“Valore A di “

& conta

dtrRiga(1) =

“Valore B di “

& conta

dttDati.Rows.Add(dtrRiga)

Next

GridView1.DataSource = dttDati

GridView1.DataBind()

 

C#

 

DataColumn

dtcColonnaA = new DataColumn(“Valore A”

);

DataColumn dtcColonnaB = new DataColumn(“Valore B”

);

DataTable dttDati = new DataTable

();

dttDati.Columns.Add(dtcColonnaA);

dttDati.Columns.Add(dtcColonnaB);

for (int

conta = 1; conta < 16; conta++)

{

DataRow

dtrRiga = dttDati.NewRow();

dtrRiga[0] =

“Valore A di “

+ conta;

dtrRiga[1] =

“Valore B di “

+ conta;

dttDati.Rows.Add(dtrRiga);

}

GridView1.DataSource = dttDati;

GridView1.DataBind();

A questo punto non ci resta che eseguire la nostra pagina.

Altri consigli.

Con il metodo precedente, si è visto come dotare il controllo gridiview,di paginazione, se nel caso, lasciamo la proprietà EnabledSortingAndPagingCallBacks a false, possiamo gestire la paginazione da codice, nel seguente modo.

Nell’evento PageIndexChanging, del controllo GridView, assegniamo alla proprietà PageIndex, del gridiview il valore della proprietà NewPageIndex della classe GridViewPageEventArgs .

Di seguito si riporta il codice, che permette di gestire la paginazione del controllo.

VB.Net

 

Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles

GridView1.PageIndexChanging

GridView1.PageIndex = e.NewPageIndex

GridView1.DataBind()

End Sub

C#

 

protected

void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs

e)

{

GridView1.PageIndex = e.NewPageIndex;

GridView1.DataBind();

}

Il pulsante buttonField

Tramite il pulsante buttonField, possiamo aggiungere al controllo GridView, un pulsante di comando. Di seguito si riporta un esempio di codice, che al click di tale pulsante, imposta la proprietà Text del controllo label, con il valore della prima colonna (A) della riga a cui si è fatto click sul pulsante.

VB.Net

 

Protected

Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles

GridView1.RowCommand

Verifo che il pulsante a cui si è fatto click è quello giusto

If e.CommandName = “Seleziona” Then

Dim intRiga As Integer = CType(e.CommandArgument, Integer

)

lbltesto.Text = GridView1.Rows(intRiga).Cells(1).Text

End If

End Sub

C#

 

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs

e)

{

 

//Verifo che il pulsante a cui si è fatto click èquello giusto

 

if(e.CommandName == “Seleziona”

)

{

int riga = Convert

.ToInt32(e.CommandArgument);

lbltesto.Text = GridView1.Rows[riga].Cells[1].Text;

}

}

 

Conclusioni:

In questo articolo, si è visto come applicare ad un controllo gridiview la paginazione senza scrivere un riga di codice, inoltre si è visto come aggiungere un pulsante di comando per rilevare determinati dati. Tramite la parola download è possibile scaricare il file di esempio.

Download

 

Pubblicato in Asp.Net. Tag: . Lascia un commento

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

 

 

Compact framework utilizzare il controllo notification

Questo esempio di codice illustra come utilizzare un controllo Notification in ambiente windows mobile..

L’esempio di codice riportato qui di seguito, visualizza una notifica, nella quale si trova un controllo checkbox, un controllo combobox , un collegamento ipertestuale per l’invio di un email e due pulsanti (submit ed annulla) .

Il pulsante submit visualizzerà il testo contenuto nella combobox.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

using
 

 

System;

using
 

 

System.Collections.Generic;

using
 

 

System.ComponentModel;

using
 

 

System.Data;

using
 

 

System.Drawing;

using
 

 

System.Text;

using
 

 

System.Windows.Forms;

using
 

 

Microsoft.WindowsCE.Forms; 
 

 

namespace
 

 

DeviceNotificaCS{

 

 
 

 

 

public partial class FrmNotifica : Form

{

 

 
 

 

public

FrmNotifica(){
InitializeComponent();

Configurazione();

}

 
 

 

 

private void BtnNotifica_Click(object sender, EventArgs

e){

 

 
 

 

 

//imposto la durata di quanto dovrà rimanere visualizzata

Notification1.InitialDuration = 20;

 

 
 

 

//visualizzo la notifica

Notification1.Visible =
 

 

true

; 
 

 

 

//pulisco la barra di stato

StbStato.Text =
 

 

“”

;}

 

 
 

 

 

void

Configurazione(){

 

 
 

 

 

try

{

 

 
 

 

//Imposto il testo del titolo

Notification1.Caption =
 

 

“Testo del titolo della notifica”

; 
 

 

 

//In caso che è true visualizza un contorno rosso

Notification1.Critical =
 

 

false

; 
 

 

 

//creo un oggetto di tipo testo, che poi sarà visualizzato come pagina web

 
 

 

StringBuilder HTMLString = new StringBuilder

(); 
 

 

 

//Valorizzo tale oggetto con testo html

HTMLString.Append(
 

 

“<html><body>”

);HTMLString.Append(
 

 

 

“<font color=\”#0000FF\”><b>Indirizzo E-mail:</b></font>”

);HTMLString.Append(
 

 

 

“&nbsp;&nbsp;&nbsp;&nbsp;<a href=\”mailto:emanuelemattei@dominio.it\”>E-mail</a>”

);HTMLString.Append(
 

 

 

“<br><form method=\”GET\” action=notifica>”

);HTMLString.Append(
 

 

 

“<SELECT NAME=\”lstbx\”>”

);HTMLString.Append(
 

 

 

“<OPTION VALUE=\”0\”>Città</OPTION><OPTION VALUE=\”1\”>Roma</OPTION>”

);HTMLString.Append(
 

 

 

“<OPTION VALUE=\”2\”>Firenze</OPTION><OPTION VALUE=\”3\”>Milano</OPTION>”

);HTMLString.Append(
 

 

 

“<OPTION VALUE=\”4\”>Palermo</OPTION></SELECT>”

);HTMLString.Append(
 

 

 

“<input type=checkbox name=chkbx>Notifica completata”

);HTMLString.Append(
 

 

 

“<br><input type=’submit’ value=’Ok’>”

);HTMLString.Append(
 

 

 

“<input type=button name=’cmd:2′ value=’Annulla’>”

);HTMLString.Append(
 

 

 

“</body></html>”

); 
 

 

 

//Imposto la proprietà text che conterrà il testo da visualizzare

Notification1.Text = HTMLString.ToString();
}

 
 

 

catch (Exception

ex){

 

 
 

 

 

MessageBox

.Show(ex.Message);}
}

 

 
 

 

 

//l’evento ballonChanged mi indica quando la notifica cambia, ossia se è visualizzata o no (apertura è chiusura)

 
 

 

private void OnBalloonChanged(object obj, BalloonChangedEventArgs

balevent){

 

 
 

 

 

if (balevent.Visible == true

){

 

 
 

 

 

//Cambio il testo del pulsante

BtnNotifica.Text =
 

 

“Notifica2″

;}

 

 
 

 

 

else

{

 

BtnNotifica.Text =
 

 

“Notifica”

;}
}

 

 

 

 
 

 

 

//Evento che si scatena al click del pulsante (ho iperlink)

 
 

 

void OnResponseSubmitted(object obj, ResponseSubmittedEventArgs

resevent){
 

 

 

// Variabile contenente l’eventuale testo

 
 

 

string StrTesto = “”

; 
 

 

 

//Tramite l’oggetto resevent ottengo le informazioni in risposta all’azione eseguitasulla notifica.

 
 

 

if (resevent.Response.Substring(0, 8) == “notifica”

){

 

 
 

 

 

Int32 posizione = Convert

.ToInt32(resevent.Response.Substring(15, 1)); 
 

 

 

switch

(posizione){

 

 
 

 

 

case

0:StrTesto =
 

 

 

“submit”

; 
 

 

 

break

; 
 

 

 

case

1:StrTesto =
 

 

 

“Roma”

; 
 

 

 

break

; 
 

 

 

case

2:StrTesto =
 

 

 

“Firenze”

; 
 

 

 

break

; 
 

 

 

case

3:StrTesto =
 

 

 

“Milano”

; 
 

 

 

break

; 
 

 

 

case

4:StrTesto =
 

 

 

“Palermo”

; 
 

 

 

break

;}

 

 
 

 

 

//Verifico che la checkbox sia valorizzata

 
 

 

if (resevent.Response.EndsWith(“on”

)){

 

StrTesto = StrTesto +
 

 

 

” checkbox = Si”

;}
}

 
 

 

 

else if (resevent.Response == “mailto:emanuelemattei@dominio.it”

){

 

 
 

 

 

//se così fosse avvio il programma di posta elettronica predefinito

System.Diagnostics.
 

 

Process.Start(“mailto:emanuelemattei@dominio.it”, “”

);}

 

 
 

 

 

// visualizzo il messaggio nella barra di stato

StbStato.Text = StrTesto +
 

 

” Valore: “ + resevent.Response.ToString();

 

Tramite la parola download è possibile scaricare il file di esempio

Download

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

Pubblicato in VBA. Tag: . Lascia un commento

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”);

 

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 object
Dim Fso As FileSystemObject
Dim ObjDrive As Drive
Set Fso = New FileSystemObject
Set 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”

Pubblicato in VBA. Tag: . Lascia un commento