Como subir un archivo de Excel a Sql Server vía Web

Anuncios

Espero que sea de utilidad la siguiente función

Public Sub XLS_LoadData(ByVal FileName As String, _ 
                                           ByVal SheetName As String)        
‘FUNCIÓN QUE TOMA UN ARCHIVO EN EXCEL QUE SE ENCUENTRA        
‘ EN EL SERVIDOR Y LO SUBE A UNA TABLA DE BASE DE DATOS SQL SERVER
        
‘ CREADO POR WJAMA        
Dim FileMapPath As String
       
Dim FileNameC As String
       
Dim dsXLS As New Data.DataSet
       
Dim strConn As String 

        FileMapPath = Server.MapPath(“Archivos”) ‘Ruta en la que se encuentra el archivo que se va a subir a la base

        FileNameC = FileMapPath & “\” & FileName ‘ se prepara el nombre del archivo completo       
‘la conección a excel, no requiere que este instalado excel en el servidor
        strConn = “Provider=Microsoft.Jet.OLEDB.4.0;” & _
                “Data Source=” & FileNameC & “;” & _
                “Extended Properties=Excel 8.0;”        
‘Realiza la consulta a la hoja de excel mediante un select       
‘ el nombre de la hoja se recibe como parámetro
       
‘ lo que no se hasta el momento es como hacer para recuperar los nombres de las hojas del libro
       
‘ sin tener que usar los objetos del Excel (que implica instalar Excel en el servidor)
       
‘ mi objetivo evitar instalar Excel
        Try
            Dim daXLS As New OleDbDataAdapter(“SELECT * FROM [" & SheetName.ToString & "$]“, strConn)
            daXLS.TableMappings.Add(“Table”, “ExcelData”)
            daXLS.Fill(dsXLS)
        Catch ex As OleDb.OleDbException
            ‘Return ex.Message.ToString
        End Try         ‘Utiliza bulkcopy para pasar los datos del dataset con los datos de Excel a la tabla de SQL Server
        Dim bulkcopy As New SqlClient.SqlBulkCopy(ConfigurationManager.ConnectionStrings“cnsBaseDatos”).ConnectionString)
        Try
            bulkcopy.DestinationTableName = “TB_DATOSEXCEL”
             bulkcopy.WriteToServer(dsXLS.Tables(0))
             bulkcopy.Close()
        Catch ex As Exception
            ‘Return ex.Message.ToString
        End Try

Lineas entrecortadas en el TreeView ASP.NET

 

Para poder ver las líneas que unen los nodos en un TreeView, hice uso de las siguientes propiedades

LineImagesFolder=”~/TreeLineImages” 
ShowLines=”True”

Pero al momento de ver el resultado en el IE 7 las líneas salen entrecortadas, es decir, no se muestran los nodos unidos por líneas continuas (Figura 1.)

Luego de pasar un par de horas entre las propiedades del TreeView, decidí buscar en el Internet, y efectivamente encontré que es un problema de presentación que se da en el IE7.

La solución para ver las líneas de forma continua, consiste primero en establecer una definición CSS como la siguiente

.tree td div 
     {
            height:  20px !important
      }

Y aplicar el estilo al TreeView

<asp:TreeView ID=”treeMenu” runat=server
LineImagesFolder=”~/TreeLineImages”
ShowLines=”True” CssClass=”tree”>

El artículo original está en la siguiente dirección: http://blogs.msdn.com/carloc/archive/2007/05/23/broken-line-in-asp-net-2-0-treeview-in-ie-7.aspx

Hasta la próxima

Evitar postback en TreeView

Para evitar que el TreeView haga postback al momento de dar clic sobre un nodo, podemos hacer uso de la propiedad SelectAction

 

Los valores que puede tomar la propiedad son :

TreeNodeSelectAction.Expand: Al dar clic se expanden los hijos, no genera postback
TreeNodeSelectAction.None: No realiza alguna acción sobre el nodo
TreeNodeSelectAction.Select: Selecciona el nodo, genera postback
TreeNodeSelectAction.SelectExpand: Selecciona el nodo y expande los hijos, genera postback

 

La línea de programación para evitar postback sería

nodo.SelectAction = TreeNodeSelectAction.Expand

 Hasta la próxima

 

Recorrer TreeView en forma recursiva

Por medio de la siguiente función se puede recorrer todos los nodos de un TreeView


Private Sub RecorrerTreeView(ByRef Nodos As TreeNodeCollection)
     For Each Nodo As TreeNode In Nodos
          If Nodo.ChildNodes.Count = 0 Then
                Nodo.Text = “Hijo”
          Else
                Nodo.Text = “Padre”
                RecorrerTreeView(Nodo.ChildNodes)
          End If
     Next
End Sub

La llamada a la función sería

Private Sub Page_Load(ByVal src As Object, ByVal e As EventArgs) Handles MyBase.Init
     RecorrerTreeView(treeMenu.Nodes)
end sub

 Hasta la próxima

Generar Claves Aleatorias

Puede que en algún momento necesitemos generar claves aleatorias dentro de nuestras aplicaciones, por ejemplo, yo las estoy utilizando para crear identificadores únicos al momento de guardar datos en una tabla, la siguiente función permite obtener cadenas de caracteres aleatorias con una longitud determinada.

El algoritmo funciona de la siguiente manera

1. Se crea un arreglo que contienen letras mayúsculas, minúsculas y números, en total 62 caracteres
2. Se generan números aleatorios entre 0 y 61, la idea obtener en forma aleatoria una posición dentro del arreglo
3. Recuperamos el valor de la entrada en el arreglo (Paso 1) según el índice aleatorio (Paso 2).

 Los resultados por ejemplo pueden ser por ejemplo mHpV7HzmFRMSEh6k0dh6, como podemos observar las secuencia en este ejemplo es de longitud 20 y está compuesta de forma aleatoria de letras y números.

La función es la siguiente


Private Function GeneraClaveAleatoria(ByVal Longitud As String) As String


Dim Clave As String = “”

Dim Valores(61) As Char

Dim i As Integer

Dim j As Integer

j = 64

For i = 0 To 61

j = j + 1

Valores(i) = Chr(j)

Select Case j

Case 90

j = 96

Case 122

j = 47

End Select

Next

Randomize()

For i = 1 To Longitud

Clave = Clave & Valores(Int(61 * Rnd()))

Next

Return Clave

End Function

La llamada a la función para generar una clave de 20 caracteres aleatorios sería

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

MsgBox(GeneraClaveAleatoria(20))

End Sub

Una variante sería generar claves donde al principio solo salga letras y luego números

Hasta la próxima

FAVICON para tu Sitio Web

Ahora les voy a comentar como poner un icono para las páginas de tu sitio web El procedimiento es simple, los favicons  nos permiten resaltan nuestro sitio de las demás páginas en especial cuando los usuarios utilizan los tabs del IE7, veamos la siguiente imagen
   con los iconos podemos identificar rapidamente donde están los sitios Los pasos son los siguientes 

1.       Tener la imagen, es necesario que la extensión sea .ico.

2.       Subir el archivo .ico a nuestro sitio, en este ejemplo el archivo se llama favico.ico y se encuentra en la carpeta images

3.       Incluir la línea dentro de la sección HEAD de nuestra página

 <link rel=”shortcut icon” href=”images/favico.ico” /> 

Es decir el HEAD de la página se vería de la siguiente manera

<head id=”Head1″ runat=”server”>   
     <title>.::| mi blog |::.</title>
   
     <link rel=”shortcut icon” href=”images/favico.ico” />
</head> 

En la siguiente web podemos encontrar una utilidad online que nos permite transformar imágenes gif, jpg, png, y bmp al formato .ico http://tools.dynamicdrive.com/favicon/  Hasta la próxima

 

Resetear Secuencia de Campo AutoNumerico

Puedes utilizar el comando DBCC CHECKIDENT

La sintaxis es DBCC CHECKIDENT (nombre de la tabla, RESEED , nuevo valor de incio)

Por ejemplo, el siguiente script establce en 1 la semilla del campo autonumérico de la tabla HumanResources.Employee que está en la base AdventureWorks

USE AdventureWorks;GODBCC CHECKIDENT ('HumanResources.Employee', RESEED, 1);GO

 

Si tu Addin para Office no funciona…

He estado trabajando con Visual Studio Tools para Office y crear un addin para Outlook, luego de trabajar e investigar por algunas horas el addin estaba listo, ejecutando directamente y haciendo debug no había problemas todo funcionaba bien, pero … [st]

El pero siempre viene cuando quieres probar en los clientes, utilizando el proyecto de instalación el addin se agrega como complemento dentro del Outlook pero no funciona, y el problema de que no ejecuta el addin es por un pequeño detalle de permisos.

La solución está en los siguientes pasos, que tuve que ejecutar en varias ocasiones y llegue a la conclusión que primero el Outlook debe estar cerrado (además comprobar que no existan procesos colgados, cuando haces depuración a veces no se cierran correctamente las instancias que ejecuta el depurador), segundo ejecutar el instalador y tercero aplicar las directivas de seguridad para el ensamblado.

Los pasos para aplicar seguridad al addin son los siguientes (tomado de http://msdn2.microsoft.com/es-es/library/zdc263t0(VS.80).aspx )

Utilizar la herramienta Configuración de .NET Framework 2,0.

Para otorgar plena confianza a un ensamblado o una carpeta ubicados en el equipo local

  • 1. En el Panel de control, abra Herramientas administrativas.
  • 2. Ejecute Configuración de Microsoft .NET Framework 2.0.
  • 3. En la vista de árbol del lado izquierdo, expanda Configuración de .NET Framework 2.0, Mi PC, Directiva de seguridad en tiempo de ejecución, Usuario, Grupos de código, All_Code y, finalmente, VSTOProjects.
  • 4. A la derecha está la descripción del grupo de código de VSTOProjects, que tiene una sección Tareas en la parte inferior de la página. En la sección Tareas, haga clic en Agregar un grupo de código secundario.

Se abrirá el asistente Crear grupo de código.

  • 5. Seleccione Crear un nuevo grupo de códigos, y escriba un nombre y una descripción que faciliten la identificación del proyecto. Haga clic en Siguiente.
  • 6. En la lista Elija el tipo de condición para este grupo de código, haga clic en Dirección URL.
  • 7. En el cuadro Dirección URL, escriba la ruta de acceso completa al ensamblado o la ruta de acceso a la carpeta bin del proyecto seguida de un asterisco (por ejemplo, c:\<path>\ExcelApplication1.dll o c:\<path>ExcelApplication1\bin\*).
  • 8. Haga clic en Siguiente.
  • 9. Seleccione Usar conjunto de permisos existente y, a continuación, seleccione FullTrust en la lista.
  • 10. Haga clic en Siguiente.
  • 11. Haga clic en Finalizar.

Luego de aplicar los permisos adecuados al ensamblado, el addin empezó a funcionar… [Y] [8-|]

Hasta la próxima

Foro Reporting Services

La mayoría de las soluciones a los problemas que he tenido con el RS las he obtenido del siguiente foro http://groups.google.com/group/microsoft.public.sqlserver.reportingsvcs/topics?start=20&hl=en&sa=N

Espero sea de utilidad

Trabajar con el Addin para Office I

             He estado trabajando con la parte de los addin para Office y voy a ir publicando como hacer algunas tareas básicas, en esta primera entrega vamos a ver como agregar un menú a la barra de herramientas. Primero declaramos los objetos que nos van a permitir agregar la opción de menú    

Private menuBar As Office.CommandBar   
Private newMenuBar As Office.CommandBarPopup
   
Private buttonOne As Office.CommandBarButton
   

Vamos a revisar el código que nos va a permitir poner nuestra nueva opción en el menú  

Try           
   ‘Recuperamos la instancia de la barra activa           
   menuBar = Me.Application.ActiveExplorer().CommandBars.ActiveMenuBar
   ‘Agregamos la nueva opción del menú de herramientos           
   newMenuBar = menuBar.Controls.Add( _
                Office.MsoControlType.msoControlPopup, _ 
                Temporary:=False)            
   ‘Validamos tener la instancia del objeto
           
   If newMenuBar IsNot Nothing Then
               
      ‘Nombre de la nueva opción
               
      newMenuBar.Caption = “Clientes”
               
      newMenuBar.Tag = “Opciones para los clientes”
                
     
      ‘Creamos la instancia del nuevo botón que va a ir dentro
                
      ’de la opción que estamos creando
               
      buttonOne = newMenuBar.Controls.Add( _                    
                  Office.MsoControlType.msoControlButton, _
                   
                  Before:=1, Temporary:=True)                

      ‘Modificamos algunas opciones de nuevo botón
                
      With buttonOne
                   
         ‘Definimos el estilo del botón
                    
         .Style = Office.MsoButtonStyle.msoButtonIconAndCaption
         ‘Texto del botón
                    
         .Caption = “Selectiva”
                   
         .FaceId = 65
                   
         .Tag = “c123″
                
      End With
                

      ‘Utilizamos delegados para establecer el evento al                
      ‘cual tiene que responder el botón
               
      AddHandler buttonOne.Click, AddressOf ButtonOne_Click                

      ‘Hacemos que el botón sea visible
               
      newMenuBar.Visible = True           
   End If
       
Catch Ex As Exception
           
      MessageBox.Show(Ex.Message)       
End Try

Hasta la próxima

 

Seguir

Get every new post delivered to your Inbox.