miércoles, 30 de junio de 2010

Cargar datos desde un archivo XML en VB.Net

miércoles, 30 de junio de 2010

Si tu eres uno de esos tipos que no quiere complicarse la vida tratando de almacenar en una Base de Datos cada parametro que se presentara derrepente para inicializar la aplicacion que le abrira las puertas de su sistema, pues he aqui una solución práctica en VB.net haciendo uso de un archivo de inicio en XML, quizas el termino te paresca extraño pero no es nada complicado si lo unico que deseas es solo inicializar valores en un formulario cualesquiera, y he aquí la solución:Tan solo bastará colocar el siguiente codigo en un archivo de texto y cambiar su extension original (.txt) por XML para que este se convierta como tal, o quizas has sido mas inquisitivo y te habras dado cuenta que existe una seccion en las versiones de VB.Net para crear este archivo: Menu Proyecto --> Agregar Nuevo Elemento...-->Datos--->Archivo XML



Codigo XML:
<empresas>
<empresa nombre="EMPRESA1" bd="BD_EMPRESA1" />
<empresa nombre="EMPRESA2" bd="BD_EMPRESA2" />
<empresa nombre="EMPRESA3" bd="BD_EMPRESA3" />
<empresa nombre="EMPRESA4" bd="BD_EMPRESA4" />
empresas>
Codigo VB.net:
Dim _dsdetalle As DataSet ' yo he decidido llenar los datos del xml en un data set en primera instancia ya que este me servira para enlazar o llenar los datos despues en un combo que por cierto eleji para mostrar la informacion contenida en el xml

Private Sub FRM_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Xml As XmlDocument
Dim NodeList As XmlNodeList
Dim Node As XmlNode
Dim _DS As New DataSet
LlenarDS()
Try
Xml = New XmlDocument()
Xml.Load(Application.StartupPath & "\Inicio.xml") ' Ojo que este es la direccion de la carpeta donde se ejecuta el programa (software, aplicacion, sistema, etc ) prinicipal porque es ahi donde Inicio.xml yo le he guardado
NodeList = Xml.SelectNodes("/empresas/empresa")
For Each Node In NodeList
Dim rw As DataRow = _dsdetalle.Tables(0).NewRow
rw("razon_social") = Node.Attributes.GetNamedItem("nombre").Value
rw("bd") = Node.Attributes.GetNamedItem("bd").Value
_dsdetalle.Tables(0).Rows.Add(rw)
Next
CboEmpresa.DisplayMember = "razon_social"
CboEmpresa.ValueMember = "bd"
CboEmpresa.DataSource = _dsdetalle.Tables(0)
Catch ex As Exception
MsgBox(ex.GetType.ToString & vbNewLine & ex.Message.ToString)
Finally
Console.Read()
End Try
End Sub
'Damos forma a nuestro dataset en un subproceso aparte para que enlaze su contenido al combo
Private Sub LlenarDS()
_dsdetalle = New DataSet
_dsdetalle.Tables.Add(0)
With _dsdetalle.Tables(0).Columns
.Add("razon_social", System.Type.GetType("System.String"))
.Add("bd", System.Type.GetType("System.String"))
End With
End Sub

Leer mas

martes, 22 de junio de 2010

Verificar la conexion a un servidor FTP en vb.net

martes, 22 de junio de 2010

Ahora bien, tenemos el siguiente problema, resulta que a veces nuestra linea estan lenta o en el peor de los casos algun gracioso desconecto nuestro servidor FTP y todos los archivos que se tratan de enviar no llegan a su destino ya que si no nos apresuramos nos pueden linchar los usuarios de nuestro sistema, bueno aca esta claro que hay un problema de conectividad, para cualesquiera que sea el caso, es necesario verificar (validar, comprobar, etc etc) justamente si esta disponible nuestro server en ese momento que que enviamos o descargamos los archivos y de esa forma apaciguar los animos de quienes lo requieren con un mensaje como "La linea que Telefonica nos provee esta pesima, asi que tranquilizate e intenta mas tarde enviar tu archivo".

Pues bien ahora mostrare un fragmento de como resolver (en todo caso, advertir) este problemilla en codigo Visual Basic 2008

Codigo:

Imports System.Net

Private Function VerificarConecFTP() As Boolean

Dim ClienteFtp As New Sockets.TcpClient
Try
ClienteFtp.Connect("2oo.48.xx.xxx", 21) ' ojo, solo IP del server FTP
VerificarConecFTP= True ' si devuelve True significa que hay conexion
Catch Ex As Exception
MsgBox(Ex.Message) ' escriba el mensaje que mas te salve del apuro
VerificarConecFTP= False ' si devuelve False significa que tienes que ir corriendo a ver que pasa en el server
End Try
End Function

Leer mas

Como bajar o descargar un archivo de un servidor FTP en vb.Net

8 comentarios

En el anterior artículo se puso un ejemplo en la cual el sistema de nuestra empresa tiene por objetivo controlar todos los archivos que nuestros usuarios se enviaban entre si y en la cual debiamos nosotros, como programadores, ver la forma de como subir o enviar un archivo a un servidor FTP en vb.net (o de lo contrario nos despedian del trabajo), ahora les desifraremos el codigo para su contraparte: descargar o bajar un archivo.
Tal como habiamos indicado en el otro tema, aca son necesarios algunas recomendaciones:

* Tener una buena linea de internet, ya que descargar es menos rapido (o mas lenta) que subir un archivo a un servidor, esta consideracion es muy importante ya que podria ocacionar un error si caduca el tiempo de espera para establecer conexion con el FTP que generalmente es por tener una linea pesima.
* contar con los campos necesarios en nuestra BD (suponemos SQL Server)para que este sea eficaz de controlar dichas transferencias de los archivos, los datos como el nombre del archivo, nombre del usuario remitenete y destino, hora y fecha de recepcion sera las claves de un buen control.
* Bueno, demas esta decir que tienen que contar con un Server FTP donde se almacenan y de donde se "jalaran" los archivos a las PC de cada usuario que acceda a ellas desde cualquier punto del universo y desde cualquier epoca de en un futuro muy lejano.

Este es el ejemplo en codigo Visual Basic 2008
Donde RutaArchivo vendria a ser la carpeta en nuestro disco duro donde se guardara el archivo descargado y podria ser "c:\descargas\nombre_original_segun_BD.doc" y NombreArchivo el nombre con la cual esta almacenada en el server FTP, si consultamos bien los parametros no tendriamos problemas en obtener el archivo al cual deseamos acceder ya que supuestamente cada archivo en el server FTP esta registrada en la Base de Datos, he aqui la importancia de guardar los datos que estan relacionados con el archivo.

Public Sub DescargarArchivoFTP(ByVal RutaArchivo As String, ByVal NombreArchivo As String)
Dim localFile As String = RutaArchivo
Dim remoteFile As String = NombreArchivo
Const host As String = "ftp://xxx.xx.xx.xxx/archivos/" 'nombre de la carpeta en nuestro server FTP donde estan los archivos que deseamos descargar
' colocamos el nombre de usuario y password respectivo para acceder al server, si este no poseyera, dejar solo las comillas, osea ""
Const username As String = "usuario"
Const password As String = "password"
Dim URI As String = host + remoteFile ' nombre completo de la ruta del archivo
Dim ftp As System.Net.FtpWebRequest = CType(Net.FtpWebRequest.Create(URI), Net.FtpWebRequest)
ftp.Credentials = New _
System.Net.NetworkCredential(username, password)
ftp.KeepAlive = False
ftp.UseBinary = True
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile
Try
Using response As System.Net.FtpWebResponse = _
CType(ftp.GetResponse, System.Net.FtpWebResponse)
Using responseStream As IO.Stream = response.GetResponseStream
Using fs As New IO.FileStream(localFile, IO.FileMode.Create)
Dim buffer(2047) As Byte
Dim read As Integer = 0
Do
read = responseStream.Read(buffer, 0, buffer.Length)
fs.Write(buffer, 0, read)
Loop Until read = 0
responseStream.Close()
fs.Flush()
fs.Close()
End Using
responseStream.Close()
End Using
response.Close()
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

Leer mas

lunes, 21 de junio de 2010

Como enviar un archivo a un servidor FTP en VB.Net

lunes, 21 de junio de 2010 8 comentarios

El asunto es este: nos encargan una aplicacion o un modulo, dentro de nuestro sistema principal, en la cual se pueda enviar y recepcionar archivos (documentos o lo que sea) en la cuales se contiene informacion importante para la empresa para uno o varios usuarios a los cuales ira dirigido justamente el archivo. Para esto tendra en cuenta lo sieguiente:

* Contar con una PC o Servidor FTP donde se almacenaran y se tendran acceso desde cualquier punto del planeta y en cualquier momento a los archivos.
* Contar con los campos adecuados en una tabla de nuestra BD que indique el codigo del usuario, nombre del archivo (ejemplo.doc) etc.
* Contar con una buena linea de internet

Ojo que aca ya no voy a detallar que codigo utilizar en vb.net y en SQL Server para guardar los parametros en la BD de los campos mencionados, porque eso estara definido por cada programador, solo mostrare un ejemplo de como enviar un archivo del FTP:

Codigo:

Donde OrigenArchivo podria ser "c:\ejemplo.doc" y NombreArchivo podria ser "Archiv0_0001.doc", pues yo les recomiendo usar un correlativo al momento de asignar el nombre al archivo en el server FTP ya que podria ocacionar error si el enviamos con un nombre que de un archivo que ya existe en la carpeta de destino creado en el server FTP, eh ahi la importancia de guardar el datos del nombre (ejemplo.doc) para que cuando recepcionemos o descarguemos el archivo se guarde en el disco local con el nombre original.



Public Shared Sub EnviarArchivoFTP(ByVal OrigenArchivo As String, ByVal NombreArchivo As String)
Dim clsRequest As System.Net.FtpWebRequest
Dim conexion As Net.Sockets.TcpClient
clsRequest = DirectCast(System.Net.WebRequest.Create("ftp://xxx.xx.xxx.xxx/archivos/NombreArchivo"), System.Net.FtpWebRequest)
clsRequest.Proxy = Nothing ' Esta asignación es importantisimo con los que trabajen en windows XP ya que por defecto esta propiedad esta para ser asignado a un servidor http lo cual ocacionaria un error si deseamos conectarnos con un FTP, en windows Vista y el Seven no tube este problema.
clsRequest.Credentials = New System.Net.NetworkCredential("usuario", "password") ' Usuario y password de acceso al server FTP, si no tubiese, dejar entre comillas, osea ""
clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
Try
Dim bFile() As Byte = System.IO.File.ReadAllBytes(origenArchivo)
Dim clsStream As System.IO.Stream = _
clsRequest.GetRequestStream()
clsStream.Write(bFile, 0, bFile.Length)
clsStream.Close()
clsStream.Dispose()
Catch ex As Exception
MsgBox(ex.Message + ". El Archivo no pudo ser enviado, intente en otro momento")
End Try
End Sub

Leer mas

Buscar

 
Copyright © 2009 .Net Solucion