lunes, 23 de febrero de 2009

manejos de documentos xls y dataset

 

primero se crea un exelfile y un dataset

Dim ef As New ExcelFile
Dim dataSet As New DataSet
' se carga el xls
ef.LoadXls("FileName.xls")
’a ahora se exportan las hojas del xls
For Each ws In ef.Worksheets
Dim dataTable As DataTable
' dependiendo de el tipo de datos tienes que cambiar el tipo de datos
    dataTable.Columns.Add("FirstName", GetType(String))
    dataTable.Columns.Add("LastName", GetType(String))
' enviar los datos a un objeto datatable
    ws.ExtractToDataTable(dataTable, 10, ExtractDataOptions.StopAtFirstEmptyRow, ws.Rows(0), ws.Columns(0))
    dataTable.TableName = ws.Name
' Add DataTable to DataSet.
    [dataSet].Tables.Add(dataTable)
Next
' creando un nuevo xls
Dim ef2 As New ExcelFile
' exportar todas las tablas del dataset a un xls
For Each table In [dataSet].Tables
' Add new worksheet to the file.
Dim ws As ExcelWorksheet = ef2.Worksheets.Add(table.TableName)
' Change the value of the first cell in the DataTable.
    table.Rows(0)(0) = "This is new file!"

‘insertando los datos del datatable a la hoja partiendo de la celda a1


    ws.InsertDataTable(table, "A1", True)
Next
salvando a xls
ef2.SaveXls("DataSet.xls")

viernes, 9 de enero de 2009

visual estudio no abre las paginas web en el servidor virtual

bueno la solucion de eso cuando el explorador no abre las web del visual estudio en modo "play" run o ejecucion

es debido a que windows tiene un archivo en system32/drivers/etc/ llamado host

lo cual e sun simple archivo de texto (abralo con notepad). que ha sido cambiada la entrada o eliminada


:1 localhost esa hay programas que les agrega

::1 localhost esos 2 puntos saquele 1 y guardelo si no existe la entrada

creela

127.0.0.1 localhost
:1 localhost

agregela abajo de los #

ejemplo

# 38.25.63.10 x.acme.com
# x client host
127.0.0.1 localhost
:1 localhost

guarde y listo fijese que solo tenga un ":" en vez de 2.

miércoles, 29 de octubre de 2008

Como proteger descargas en asp.net 2.0

 

bueno asp.net tiene un metodo llamado response.transmitfile

 

lo cual uno envia el archivo atravez de un response. lo cual funciona para grandes descargas.

y no son redicionados  a una url donde esta el archivo

 

este seria el codigo.

 

aca el codigo
string file = Request.Params["file"];

if (!string.IsNullOrEmpty(file))
{
    file = Path.Combine(Server.MapPath("downloadsx"), Path.GetFileName(file));

    Response.Clear();

    Response.ContentType = "application/octect-stream";


    Response.AddHeader("Content–Disposition", "attachment; filename=foo.xyz");

    Response.TransmitFile(file);

    Response.End();
}

 

pd:una vez en windows 2003 se me cortaba el enviado archivo misteriosamente lo cual lo solucione bajando un parche.

/////////////////////////////////////////////////////////

 

 

lunes, 27 de octubre de 2008

Como encontrar on objeto y cambiarle su valor o propiedades dentro de un dbgrid o datalist dentro de una fila! con ctype.

 

Muchas veces necesitamos cambiar el valor por ejemplo de un cuadro de texto que esta inscrustado dentro de un datagrid dentro de una fila lo cual lo primero que tendriamos que hacer es buscarlo por su nombre usando findcontrol y ctype juntamente declarandolo como un objeto tal asi despues poder cambiar sus propiedades.

 

ejemplo tenemos dentro de un datagrid1 ya cargado un cuadro de texto llamado textbox1 lo cual queremos modificarle la propiedad .text  a "chan" de el se encuenta en la fila 0 en la columa 1.

lo que hariamos seria.

CType(Me.GridView1.Rows(0).Cells(1).FindControl("textbox1"), TextBox).Text = "chan"

incluso se puede tratar si solo se quiere obtener el valor

dim x1 as new textbox

x1 = Me.GridView1.Rows(1).Cells(1).FindControl("textbox1")

Subir un archivo por ftp en asp.net 2.0

 

creamos la funcion uploadFileUsingFTP lo cual sera usado

uploadfileusingftp("ruta del ftp","direccion completa del archivo ","usuario","password")

 

Public Sub uploadFileUsingFTP(ByVal CompleteFTPPath As String, ByVal CompleteLocalPath As String, Optional ByVal UName As String = "", Optional ByVal PWD As String = "")

'Create a FTP Request Object and Specfiy a Complete Pat

'creando un objeto request ftp especificando la ruta completa del ftp

Dim reqObj As FtpWebRequest = WebRequest.Create(CompleteFTPPath)

llamando el metodo fileupload del objeto que creamos

reqObj.Method = WebRequestMethods.Ftp.UploadFile

'si el ftp requiere usuario y clave se configura

reqObj.Credentials = New NetworkCredential(UName, PWD)

on objeto filestream leera el archivo que se va asubir

Dim streamObj As FileStream = File.OpenRead(CompleteLocalPath)

'se guarda en un buffer

Dim buffer(streamObj.Length) As Byte

ahora se lee el archivo en el buffer

streamObj.Read(buffer, 0, buffer.Length)

se cierra el stream

streamObj.Close()

streamObj = Nothing

se sube un archivo en caso no existe

reqObj.GetRequestStream().Write(buffer, 0, buffer.Length)

reqObj = Nothing

End Sub

enviando un email asp.net 2.0

 

aca esta xD

Dim correo As New System.Net.Mail.MailMessage
        correo.From = New System.Net.Mail.MailAddress("micorreo@correo.com")

        Dim mailx2 As New System.Net.Mail.MailAddress("correo destino")

        correo.To.Add(mailx2)

        correo.Subject = "subjet"
        correo.Body = "cuerpo bla bla "
        correo.IsBodyHtml = true     (si es html =true)
        correo.Priority = System.Net.Mail.MailPriority.High
        Dim smtp As New System.Net.Mail.SmtpClient
        smtp.Host = "host del que envia" smpt
        smtp.Credentials = New System.Net.NetworkCredential("usuariossmpt","clave")
        Try
            smtp.Send(correo)
            Return "enviado"

        Catch ex As Exception
            Return "ERROR: " & ex.Message

        End Try

    End Function

crear un objeta datatable on fly

 

muchas veces necesitamos crear una tabla momentania por ejemplo un carro de comrpas anotar los pedidos y dejarlos momentaniamente cargados en una variable de session para despues guardarla en una db si es aceptada.

la forma de crear un datatable es de la siguiente manera despues termina guardada en un variable de session llamada cart

Dim objDT As System.Data.DataTable
      Dim objDR As System.Data.DataRow
      objDT = New System.Data.DataTable("Cart")
       objDT.Columns.Add("ID", GetType(Integer))
       objDT.Columns("ID").AutoIncrement = True
       objDT.Columns("ID").AutoIncrementSeed = 2
       objDT.Columns.Add("codigo", GetType(String))
       objDT.Columns.Add("urlimagen", GetType(String))
       objDT.Columns.Add("nombre", GetType(String))
       objDT.Columns.Add("precio", GetType(Single))
       objDT.Columns.Add("cantidad", GetType(Single))
       objDT.Columns.Add("subtotal", GetType(Single))
       objDT.Columns.Add("idpro", GetType(Single))
       Session("Cart") = objDT

 

si se fijan el autoincremento lo seteo en autoincrement y despues asigno el seed

saludos.

domingo, 26 de octubre de 2008

Encriptado en forma facil cadenas con hash y key

seguridad

bueno lo primero creen una clase llamada encript.vb

aca esta

http://rapidshare.com/files/157895456/encript.vb.html

y copien esto

 

Imports System

Imports System.IO

Imports System.Security

Imports System.Security.Cryptography

Imports System.Text

Public Class encript

#Region "Contraseñas Hash"

    'Con esta función que tenemos aquí abajo, lo que haces es transformar la cadena en Bytes.

    Shared Function ConvertirCadenaEnMatrizDeTipoByte(ByVal Cadena As [String]) As [Byte]()

        Return (New UnicodeEncoding).GetBytes(Cadena)

        'Retornamos la cadena convertida.

    End Function

    'En esta función la cadena la convertiremos en Bytes con la función anterior, lo transformaremos en un valor Hash, encriptado con el algoritmo SHA512 y más tarde lo convertiremos en una cadena.

    Public Function EncriptarHash(ByVal ValorAEncriptar As String) As String

        Dim ValorToHash As [Byte]() = ConvertirCadenaEnMatrizDeTipoByte(ValorAEncriptar)

        'Declaramos la variable de tipo Byte y llamamos a ConvertirCadenaEnMatrizDeTipoByte y convertimos la cadena a encriptar en typo Byte

        Dim ValorHash As Byte() = CType(CryptoConfig.CreateFromName("SHA512"), HashAlgorithm).ComputeHash(ValorToHash)

        'Encriptamos variable Byte en una cadena de tipo Byte, también.

        Return Convert.ToBase64String(ValorHash)

        'BitConverter.ToString(ValorHash)

        'Retornamos la variable de tipo Byte en String.

    End Function

    'Para comparar dos valores lo primero es enviar como parametros una cadena sin encriptar y otra cadena encriptada, con el mismo tipo de encriptación, y haciendo uso del mismo algoritmo, en nuestro caso usaremos Hash con el algoritmo SHA512. Luego encriptamos el valor si encriptar y comparamos los dos valores, retornando True si son iguales y False si son diferentes, esto lo podemos hacer con una simple sentencia IF.

    Public Function Comparar(ByVal ValorSinEncriptar As String, ByVal ValorEncriptado As String) As Boolean

        If EncriptarHash(ValorSinEncriptar) = ValorEncriptado Then

            Return True

        Else

            Return False

        End If

    End Function

#End Region

#Region "Encriptar/Desencriptar"

    Const StrClave As String = "EjemploDeCodigo"

    Public Function EncriptarTexto(ByVal CadenaAEncriptar As String, Optional ByVal Clave As String = StrClave, Optional ByVal MantenerMayusculas As Boolean = True)

        Dim i As Integer, C As Integer

        Dim CadenaEncriptada As String

        If MantenerMayusculas = False Then

            Clave = Clave.ToUpper()

            CadenaAEncriptar = CadenaAEncriptar.ToUpper()

        End If

        If Len(Clave) Then

            For i = 1 To Len(CadenaAEncriptar)

                C = Asc(Mid$(CadenaAEncriptar, i, 1))

                C = C + Asc(Mid$(Clave, (i Mod Len(Clave)) + 1, 1))

                CadenaEncriptada = CadenaEncriptada & Chr(C And &HFF)

            Next i

        Else

            CadenaEncriptada = CadenaAEncriptar

        End If

        Return CadenaEncriptada

    End Function

    Public Function DesencriptarTexto(ByVal CadenaADesencriptar As String, Optional ByVal Clave As String = StrClave, Optional ByVal MantenerMayusculas As Boolean = True)

        Dim i As Integer, C As Integer

        Dim CadenaDesencriptada As String

        If MantenerMayusculas = False Then

            Clave = Clave.ToUpper

        End If

        If Len(Clave) Then

            For i = 1 To Len(CadenaADesencriptar)

                C = Asc(Mid$(CadenaADesencriptar, i, 1))

                C = C - Asc(Mid$(Clave, (i Mod Len(Clave)) + 1, 1))

                CadenaDesencriptada += Chr(C And &HFF)

            Next i

        Else

            CadenaDesencriptada = CadenaADesencriptar

        End If

        Return CadenaDesencriptada

    End Function

#End Region

End Class

 

bueno las funciones que nos da esta clase son las siguientes

usando la clase

 

      adacadabra seria la clave para descriptar

Dim en As New encript

en.EncriptarTexto("hola", "adacadabra", True)
en.DesencriptarTexto("texto a descriptar", "adacadabra", True)

hay el ejemplo demaciado facil xD. usa SHA512 para encriptar muy seguro.

asp .net mostrando cuantos usuarios hay online

 

bueno lo primero tenemos que crear un archivo global.asax y agregar el siguiente codigo

 

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs when a new session is started
       
        Try
            If IsNumeric(Application.Item("contador")) = False Then
                Application.Item("contador") = 1
            End If
            Dim x1 As Single
            x1 = Val(Application.Item("contador").ToString)
            x1 = x1 + 1
            Application.Item("contador") = x1
            Application.Item("urlref") = Me.Request.UrlReferrer.ToString
        Catch ex As Exception

        End Try
    End Sub

    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs when a session ends.
        ' Note: The Session_End event is raised only when the sessionstate mode
        ' is set to InProc in the Web.config file. If session mode is set to StateServer
        ' or SQLServer, the event is not raised.
        Try
            If IsNumeric(Application.Item("contador")) = False Then
                Application.Item("contador") = 0
            End If
            Dim x1 As Single
            x1 = Val(Application.Item("contador").ToString)
            x1 = x1 - 1
            Application.Item("contador") = x1
        Catch ex As Exception

        End Try
    End Sub

 

que hace cuando se inicia una sesion se sumara a la variable contador +1 cuando el servidor genere el timeout hara el -1

bueno para mostrar los usuarios online es facil basta en el master page o la pagina principal

poner un control label o  y asignarle el valor

Application.Item("contador"))

    Try

label1.text=Application.Item("contador")) .tostring

Catch ex As Exception

label1.text="no anda naiden xD"

        End Try

apliquen un try por si las moscas

saludos............

trabajando con mysql y .net

 

logo-mysql

 

no esta mas que decir que trabaja de la misma manera que mssql conector.

 

mysql y .net son excelentes herramientas mysql es rapido y gratis versatil.

para conectar mysql con .net usaremos el conector que probe mysql

http://dev.mysql.com/downloads/connector/net/5.2.html

si usan una version 4.0 de mysql usen la version  1.0 (no da dramas de update usando commanbuilder)

buenos vamos al grano.

1 bajar el conector

2 crear una tabla en mysql (usen ems mysql bajenlo)

http://www.torrentz.com/search?q=ems+mysql hay esta xD tienen que tener licencia para usarlo eso si.

bueno  usaremos el usuario general que es el root y crearemos nuestra cadena de conexion

"Server =localhost; user id=root password=123; database=automoviles;Pooling=false;Connection Lifetime=1; Max Pool Size=1;"

bueno el pooling lo pongo en false ya que mysql aun no soporta multiples sesiones.

(evita el error many conections)

buena ya tenemos nuesta cadena que se conectara a una db que se llama autos el usuario es root y la pas 123

ahora tenemos que agregar mysql.data.dll que biene en el conector si no esta compilenlo.

dejo el 1.1 aqui por si las moscas listo llegar y usar.

http://rapidshare.com/files/157833268/MySql.Data.dll.html

 

bueno empezemos con el codigo

lo primero se importa el system.data y el Imports MySql.Data.MySqlClient

 

que son los espacios que necesitamos

llenaremos un dataset

 

Dim myconexion As New MySqlConnection("Server =localhost; user id=root password=123; database=automoviles;Pooling=false;Connection Lifetime=1; Max Pool Size=1;")
      

Dim micomand As New MySqlCommand("select * from usuarios")

        Dim adapter As New MySqlDataAdapter

        Dim midataset As New DataSet()

 

            myconexion.Open()
            adapter.SelectCommand = micomand
            micomand.Connection = myconexion
            adapter.Fill(midataset,"usuarios")
            myconexion.Close()
          

listo ya tenemos midataset llenado con la tabla

  

 

ahora ejecutaremos un sql en una db

Dim myconexion As New MySqlConnection("Server =localhost; user id=root password=123; database=automoviles;Pooling=false;Connection Lifetime=1; Max Pool Size=1;")

Dim micomand As New MySqlCommand("sql a ejecutar")

 

micomand.Connection = myconexion
        myconexion.Open()
                    micomand.ExecuteScalar()

myconexion.close()

 

bueno eso seria todo

//////////////////

ahora updatiando con mysqlcommanbuilder (avanzado)

pd:mysqlcommandbuilder crea solo los commandos de actualizacion basandose en un dataset previamente cargado.

 

 

Dim adapter As New MySqlDataAdapter

 

dim stringsqlconection="Server =localhost; user id=root password=123; database=automoviles;Pooling=false;Connection Lifetime=1; Max Pool Size=1;")

dim tabla="usuarios"      

 

Dim myconexion As New MySqlConnection(stringsqlconection)
        Dim micomand As New MySqlCommand("select * from " + tabla + " LIMIT 0;")
        micomand.Connection = myconexion
        Dim commandbuilderx As New MySqlCommandBuilder(adapter)
        Dim midataset As New DataSet()

        adapter.SelectCommand = micomand
        Try
            adapter.Fill(midataset, tabla)
            midataset.Tables(tabla).Merge(dat.Tables(tabla))

            myconexion.Open()
            micomand.CommandText = "select * from " + tabla
            adapter.Update(midataset, tabla)
            myconexion.Close()
            myconexion.Dispose()

        Catch ex As Exception
            Return ex.Message.ToString
            myconexion.Close()
            myconexion.Dispose()
        End Try
       

esto es avanxzado asi que traten de entenderlo   xD. saludos.

aumentar las conexiones tcp ip de windows vista y xp

 

bueno el vista sp1 y el xp traen  como limite 10 conexiones simultanias

afectando los clientes p2p o torrent la solucion es

 

descargar el bitspirit y al menu funciones y seleciona tcip patch y listo se solucionara

 

ojo que en windows vista bienen las dll firmadas digitalmente

si tiene problemas para partir simplemente antes de partir apreten varias veces la tecla f8 y selecionen disable driver firm digital o algo asi xD.

 

aca esta el bit spirit

http://www.167bt.com/intl/

 

bajo su responsabilidad..

viernes, 24 de octubre de 2008

eliminar virus del msn

 

muchas veces nos llegan peticiones por msn de recibir archivos lo cuales son bichos que se envian solos por msn despues pretenden usar tus contactos para masificarse

existe una aplicacion llamada msn clearner que posiblemente lo repare

 

msn_clear

no esta mas que decir que combiene eliminar el msn  correr el programa este

bajalo de:

 

http://rapidshare.com/files/73364247/MSNCleaner.exe
link en geocities:
http://es.geocities.com/faits10x/MSNCleaner.zip

 

msncleaner 

ejecutalo

tambien pasa el spybot:

http://www.safer-networking.org/index2.html

y bueno si resulta :D bien saludos.

antiviruz recomiendo el nod32

ajax facil usando anthem.net sin atlas

asi es es demaciado facil

solo basta bajarse en

http://anthem.talloaksoftware.com/

el anthem.net y compilarlo se generaran las dll y las agregan a su proyecto de asp.net 2.0 0 1.1

asp.net 3.5 ya tiene includio ajax asi que no es necesario.

aca lo entrego compilado xD

http://rapidshare.com/files/157273887/anthem.zip.html

bueno agregenlo a su toolbar y veran que tendran controles textbox image osea todos los estandar de asp.net pero ahora seran anthem.

lo cuales funcionan igual que los normales tienen todas las propiedades y metodos.

tambien incluyen las propiedades adicionales los cuales on las que controlan el ajax.

un ejemplo de un tipico llenar de un textbox en anthem seria

Me.TextBox1.Text = "hola mundo"

Me.TextBox1.TextDuringCallBack = "cargando.."
Me.TextBox1.UpdateAfterCallBack = True

lo cual al llamarlo tendrian que usar un boton anthem igual es identico al normal.

bueno que es el UpdateAfterCallBack es la propiedad donde uno le dice que el control se tiene que actualizar sin recargar la pagina(ajax)

el TextDuringCallBack es el texto que aparecera mientra la carga se realiza( el callback)

urlrewrite para .net

 

bueno pensaran que esto es dificil pero nada que ver es muy facil.

 

solo tienen que bajar el control en

http://rapidshare.com/files/157028378/UrlRewritingNet.UrlRewriter.dll.html

y asociarlo a su proyecto (add reference)

 

despues tienes que entrar al webconfig y en dentro del tag configuration declarlo

<configSections>

<section name="urlrewritingnet" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"/>

</configSections>

despues de eso tienes que a agregar las reglas por ejemplo

 

queremos traducir una pagina por ejemplo

automovil.aspx?id=1 seria

agregas

<urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage="default.aspx" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
        <rewrites>

<add name="Rewrite" virtualUrl="^~/(.*)_vehiculo_-(.*).aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/ficha.aspx?id=$1" ignoreCase="true"/>

</rewrites>

 

fijate el (.*) es la primera variable que se pasara osea la id

fijate en destinacion url que se llama la $1 ese sera el valor pasado entonces

 

cada vez que llege la url

123_vehiculo_-blalbalba.aspx

123 sera el valor que se pasara automaticamente como id

y el urlrewrite hara la conversion

si quieres agregar otra variable id2 en este caso seria por ejemlo

automovil.aspx?id=123?id2=456 y el siguiente (.*) seria la id2

la url escrita seria

 

123_vehiculo_-1234_blalbalba.aspx

 

<add name="Rewrite" virtualUrl="^~/(.*)_vehiculo_-(.*).aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/ficha.aspx?id=$1?id=$2" ignoreCase="true"/>