Archivo de la categoría: Miscellaneous

DataGridView sin conexion a datos – Dimensionar filas y columnas

Este ejemplo nos muestra como crear un conjunto de filas y columnas en un DataGridView sin estar enlazado a ninguna fuente de datos, puede ser util en situaciones donde nos interesa representar datos en una cuadricula de visualizacion. Para evitar que el usuario pueda añadir filas, hemos puesto su propiedad ‘AllowUserToAddRows’ a ‘Falso’ y para evitar la edicion de las celdas ‘enabled’ en ‘Falso’. Os podeis entretener un poquito y si os interesa podeis ocultar la fila y columna que hace de cabezera o si preferimos podemos ponerles titulos, tambien personalizar el ancho / alto, el color … en fin.

 

 

Public Class Form1

    Private _MiDGV As New DataGridView      'Nuestro DataGrid

 

    '

    'Construir el aspecto de nuestro DataGrid

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        _MiDGV.Dock = DockStyle.Fill            'Acoplar al form

        _MiDGV.Enabled = False                  'Impedir la edicion

        _MiDGV.AllowUserToAddRows = False       'Sin opcion añadir filas

        'Dimensionar el ancho automaticamente

        _MiDGV.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill

        Me.Controls.Add(_MiDGV)                 'Añadir el Grid al form

        Me.OrdenN(3, 3)                         'Empezar con un orden 3*3

    End Sub

 

    '

    'Al pulsar las teclas 1/2/3/4/5

    Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp

        Select Case e.KeyValue              'Al pulsar .. 1/2/3/4/5

            Case 49 : OrdenN(1, 1)          'Crear un cubo de 1*1

            Case 50 : OrdenN(2, 2)          '2*2

            Case 51 : OrdenN(3, 3)          '3*3

            Case 52 : OrdenN(4, 4)          '4*4

            Case 53 : OrdenN(5, 5)          '5*5

        End Select

    End Sub

    '

    'Crear un Grid de dimension f(ilas) c(columnas)

    Private Sub OrdenN(ByVal f As Integer, ByVal c As Integer)

        Me._MiDGV.Rows.Clear()          'Eliminar todas las filas

        _MiDGV.ColumnCount = c          'Dimensionar el numero de columnas

        Me._MiDGV.Rows.Add(f)           'Dimensionar el numero de filas

 

        Dim Numerar As Integer = 0      'Numerar el contenido de las celdas

        For Each row As DataGridViewRow In Me._MiDGV.Rows

            For Each col As DataGridViewColumn In Me._MiDGV.Columns

                Numerar += 1

                row.Cells(col.Index).Value = Numerar.ToString

            Next

        Next

    End Sub

End Class

Visualizar una hoja de Excel en un DataGridView

Aqui teneis un ejemplo para visualizar una hoja de Excel en un DataGridView.
Como Siempre podeis descargaros el Codigo haciendo click en 'attachments'

System.Data.OleDb

Public Class Form1
 
Private MiConexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties = 'Excel 8.0'; Data Source=|DataDirectory|\hoja1.xls;")
 
Private MiAdaptador As New OleDbDataAdapter("SELECT * FROM [Hoja1$]", MiConexion)
 
Private MiDataSet As New DataSet()
 
Private MiEnlazador As New BindingSource
 
 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   
Dim commandbuilder As New OleDb.OleDbCommandBuilder(Me.MiAdaptador)
   
MiConexion.Open()
    MiAdaptador.Fill(MiDataSet)
    MiEnlazador.DataSource = MiDataSet.Tables(0)
   
Me.DataGridView1.DataSource = MiEnlazador
 
End Sub

End Class
 
Pep Lluis,

Introducir datos desde un textbox a una Bd.mdb en VB6

A peticion de nuestro amigo snellah, en el foro de Visual Basic (spanish), os adjunto el proyecto para su descarga…

En Visual Basic 6 Una de las maneras mas simples cuando estas empezando, es el uso de los componentes 'Data' y 'MSFlexGrid' de la barra de herramientas. Es tan simple como arrastrar un 'textbox' un 'msflexgrid' un 'data' y un 'command', en la propiedad 'datasource' del msflexgrid le seleccionas 'data1' y luego insertas este codigo al evento 'load' y 'command_click' ….

Private Sub Command1_Click()
    Me.Data1.Recordset.AddNew
    Me.Data1.Recordset("Texto") = Me.Text1.Text
    Me.Data1.Recordset.Update
    Me.Data1.Refresh
    Me.MSFlexGrid1.Col = 2
    Me.MSFlexGrid1.TopRow = Me.MSFlexGrid1.Rows – 1
    Me.MSFlexGrid1.Refresh
End Sub

Private Sub Form_Load()
    Me.Data1.DatabaseName = "Bd1.mdb"
    Me.Data1.RecordSource = "Tabla1"
    Me.Data1.Refresh
    '
    'la proiedad de datasouce del MSFlexGrid1 debe enlazarse con 'Data1'
    Me.MSFlexGrid1.ColWidth(0) = 200
    Me.MSFlexGrid1.ColWidth(1) = 400
    Me.MSFlexGrid1.ColWidth(2) = 3300
End Sub

Este ejemplo inserta el contenido de text1.text en la ultima posicion de la Bd1.mdb, a partir de aqui podrias introducirte para utilizar los objetos  'DataBase y RecordSet' y disponer de un mayor control. Espero vuestros comentarios.
Pep Lluis,

 

Lectura del Puerto serie y problemas con los thread’s (Forms)

Esta es una de las primeras sorpresas del nuevo framework y por supuesto el primer tropezon al trabajar con Visual Studio 2005. Por el momento no voy a detallar el cambio de concepto en tanto al manejo y ejecucion de hilos desde nuestra aplicacion. Pero si que creo sumamente importante explicar como realizar un invoke a una funcion que refresque por ejemplo un ‘label’ con la información recibida por el disparo de un evento de otro threat.


Imaginando que recibimos el disparo del evento del puerto serie cuando recibimos datos que queremos visualizar en una etiqueta ..

‘En tiempo de definiciones
Delegate Sub Refrescar


‘En tiempo de Carga
Addhandler SerialPort.Respuesta, AddressOf RecibeDatos

‘Funcion de recibir los datos
Private Sub RecibeDatos
   
DatosRecibidos = SerialPort.ReadExisting
   Me.Label1.Invoke(New Refrescar(AddressOf ActualizarDatos))
End Sub

‘Funcion de recibir los datos
Private Sub ActualizarDatos
   Label1.Text = DatosRecibidos
End Sub

Como, Enviar mails en .NET Framework 1.1

ENVIO de CORREOS, con .NET Framework 1.1 (Visual Basic 2003)


‘Alternativa si no tenemos configurado SMTP o problemas con el CDO’


crearemos el objeto correo, como mensaje de mail, asignaremos los valores del mismo y sencillamente llamaremos a la función ‘send’. Deberemos substituir todas las variables ‘email_’ con el valor o string adecuado. A saber ‘email_User’ debe contener el usuario de la cuenta que envia el correo electronico, ‘email_Pwd’ su password… etc.


  ‘
  ‘Conformar un mensage de mail
  Dim correo As MailMessage = New MailMessage
  ‘Definir el esquema CDO
  Dim Esquema As String = «
http://schemas.microsoft.com/cdo/configuration/«
  ‘Llenar de contenido el mensage
  correo.From = email_From
  correo.To = email_To
  correo.Cc = email_Cc
  correo.Subject = «Motivo del mensaje»
  correo.Body = emailMensa
  ‘Asignar las credendiales
  correo.Fields.Add(Esquema + «smtpauthenticate», «1»)
  correo.Fields.Add(Esquema + «sendusername», email_User)
  correo.Fields.Add(Esquema + «sendpassword», email_Pwd)
  ‘Asignar el nombre del servidor de correo
  SmtpMail.SmtpServer = email_smtp
  Try
       SmtpMail.Send(correo)            ‘Enviar el correo
  Catch ex As Exception
       ‘reportar problemas al eventlog
        Mensaje.Registra(«Alertas», ex.Message, EventLogEntryType.Error, 4)
  End Try

Como, Usar Ftp: en .NET

En cuanto a como transferir o recibir ficheros, en .NET usando Ftp:


Si estas usando Visual Studio 2003, lo tienes en la libreria System.Net, con el metodo ‘WebRequest’ creas un ‘streamreader’ y con el ‘WebResponse’ un ‘streamwriter’ que utilizas posteriormente para escribir el archivo en local.

WebRequest.RegisterPrefix(«ftp», new FtpWebRequestCreator());
WebRequest req = WebRequest.Create(
ftp://ftp.lapagina.com/);

En Visual Studio 2005 puede sonar mucho mas sencillo…


Descargar un archivo :
My.Computer.Network.DownLoadFile(
ftp://www.ser.com/demo.txt,»c:\Temp»)
Subir un Archivo al Servidor
My.Computer.Network.UploadFile(«C:\Hola.txt»,»ftp://anonymous@servidor/hola.txt»,»anonymous»,»»)


Aunque no sea un ejemplo muy desarrollado, vale para tomar una idea. No dudeis en contactar conmigo si necesitais una ayudita!


Pep,