Nada mejor que un ejemplo para ver el funcionamiento. Supongamos que tenemos un SP que acepta una serie de parámetros que se insertan en una tabla con una clave primaria autonumérica.

El Stored procedure deberá tener la siguiente forma:

CREATE PROCEDURE insertarLog(@LogMsg varchar(512), @LogNiv smallint, @LogFec datetime, @LogCbl varchar(8), @LogEst varchar(30), @LogUsr varchar(30), @LogFile varchar(50))

AS

BEGIN

INSERT INTO TRLOG (LogMsg, LogNiv, LogFec, LogCbl, LogEst, LogUsr, LogFile)

VALUES(@LogMsg, @LogNiv, @LogFec, @LogCbl, @LogEst, @LogUsr, @LogFile)

RETURN @@IDENTITY

END

GO

Como vemos en este ejemplo tenemos que utilizar la palabra RETURN para devolver el valor. En este ejemplo es el valor del campo clave identidad que se ha insertado en la tabla.
Luego en .Net pondríamos algo así para recuperar el valor.
SqlConnection con = new SqlConnection(“…..”);
try
{
SqlCommand command = new SqlCommand(“nombreSP”, con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(“@LogMsg”, SqlDbType.Char).Value = …;
command.Parameters.Add(“@LogNiv”, SqlDbType.SmallInt).Value = …;
command.Parameters.Add(“@LogFec”, SqlDbType.DateTime).Value = …;
……
……
//Valor devuelto ******************
command.Parameters.Add(“@RETURN_VALUE”, SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
con.Open();
command.ExecuteNonQuery();
int result = (int)command.Parameters[“@RETURN_VALUE”].Value;
con.Close();
return result;
}
……………
Posteado por: eurecadigital | marzo 18, 2009

Modificar el Registro de Windows con c#

 

En este ejemplo vemos como podemos modificar una clave del Registro. 2 Métodos el primero recupera un valor y el segundo lo graba. En el Ejemplo se modifica el tamaño de la Fiuente del Notepad.exe de Windows

public static int getFontSize()

        {

            try

            {

                RegistryKey ckey = Registry.CurrentUser.OpenSubKey(

                @”Software\Microsoft\Notepad”, true);

                if (ckey != null)

                {

                    if (ckey.GetValue(“iPointSize”) != null)                    

                        return (int)ckey.GetValue(“iPointSize”);                                            

                }

                return 0;

            }

            catch { return 0; } 

        }

 

        public static int setFontSize(int value)

        {

            try

            {

                RegistryKey ckey = Registry.CurrentUser.OpenSubKey(

                @”Software\Microsoft\Notepad”, true);

                if (ckey != null)

                {

                    ckey.SetValue(“iPointSize”, value);

                    return 1;

                }

                return 0;

            }

            catch { return 0; }

        }

Posteado por: eurecadigital | marzo 17, 2009

Ftp con c# (Upload) Subir un Fichero

Para ello usaremos la clase FtpWebRequest.

Ejemplo:

 

private int Upload(string server, string user, string pass, string origen, string rutadestino, string nombredestino)

{

try

{

FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(server + rutadestino + “/” + nombredestino);

request.Method = WebRequestMethods.Ftp.UploadFile;

request.Credentials = new NetworkCredential(user, pass);

request.UsePassive = true;

request.UseBinary = true;

request.KeepAlive = true;

FileStream stream = File.OpenRead(origen);

byte[] buffer = new byte[stream.Length];

stream.Read(buffer, 0, buffer.Length);

stream.Close();

Stream reqStream = request.GetRequestStream();

reqStream.Write(buffer, 0, buffer.Length);

reqStream.Flush();

reqStream.Close();

return 1;

}

catch(Exception ex)

{

return 0;

}

}

el nombre del server tiene que empezar por “ftp://”

Ejemplo : “ftp://ftp.wanadoo.es” o “ftp://88.214.123.195”

Posteado por: eurecadigital | febrero 19, 2009

Capturar el evento de tecla sobre una celda de un DdataGridView c#

Como capturar el evento de una tecla sobre una celda de un DataGridView por ejemplo para abrir una pantalla de ayuda de datos para esa celda.

Declaramos 

 

private KeyEventHandler Handler;

private TextBox textBoxCell;

 

En el Evento Load del formulario declaramos un manejador de eventos:

Handler = new KeyEventHandler(textBoxCell_KeyPress);

Añadimos el evento a todas aquellas deldas de la rejilla que sean de tipo TextBox

private void datagridview_1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)

{

 

    textBoxCell = e.Control as TextBox;

    if (textBoxCell != null){

        try{

            textBoxCell.KeyDown -= Handler;

        }

 

        catch{ }

        textBoxCell.KeyDown += Handler;

    }

}

 

Por último Capturamos el Evento:

 

private void textBoxCell_KeyPress(object sender, KeyEventArgs e){

    if (e.KeyCode == Keys.F4 && datagridview_1.SelectedRows[—].Cells[].IsInEditMode){

      …………….

}

 

Supongamos que tenemos un User Control que extiende de un Treview y lo que queremos es capturar el evento que genera el control de usuario cuando se selecciona un nodo. (este ejemplo vale para cualquier tipo de evento o Control de Usuario)

En el Control de Usuario declaramos el evento como público:

public event EventHandler After_SelectTreeNode;

Despues en el Control de Usuario dentro del evento que queremos propagar en este caso:  treeView1_AfterSelect

private void treeView1_AfterSelect(object sender, EventArgs e)

{

   if (After_SelectTreeNode != null)

              After_SelectTreeNode(this, e);

}

Ahora en el Evento Load del Formulario donde incrustaremos nuestro control de Usuario:

treeViewScaneos.After_SelectTreeNode += new EventHandler(treeViewScaneos_After_SelectTreeNode);

Finalmente ya podemos capturar el evento en el formulario de este modo:

void treeViewScaneos_After_SelectTreeNode(object sender, EventArgs e)

{

 

           // nuestro código

}

Posteado por: eurecadigital | febrero 11, 2009

Forzar una Celda de un DataGridView a Mayúsculas por programa

En este Evento se muestra como forzar que lo que se escribe en la primera columna de la celda se escriba en MAYUSCULAS.

 

private void dgRejilla_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)

        {

            if (e.Control is TextBox)

            {

                if (dgRejilla.CurrentCell.ColumnIndex == 1)

                   //Pone en mayúsculas la primera celda de la rejilla

                    ((TextBox)e.Control).CharacterCasing = CharacterCasing.Upper;

                else

                    ((TextBox)e.Control).CharacterCasing = CharacterCasing.Normal;

            }

        }

« Newer Posts - Older Posts »

Categorías