Enumerar las tablas de una BD (SQL)

Imports System.Data.SqlClient

Public Class Form1
    Private MiConexion As New SqlConnection( _
       «Data Source=.\SQLEXPRESS;AttachDbFilename=C:\MisBDs\NORTHWND.MDF» + _
       «;Integrated Security=True;Connect Timeout=30;User Instance=True») 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MiConexion.Open()
        Dim MisTablas As DataTable = MiConexion.GetSchema( _
            «Tables», New String() {Nothing, «dbo», Nothing, «Base Table»})
        ComboBox1.DataSource = MisTablas
        ComboBox1.DisplayMember = «TABLE_NAME»
    End Sub
End Class

Para probar este ejemplo, solo tenéis que crear un nuevo proyecto “windows forms application” arrastrar y soltar un ‘combobox’ desde el ‘toolbox’ al ‘form1’, copiar y pegar el código adjunto y modificar la ruta de la ubicación de la BD SQL en el valor ‘attachdbfilename’ de la cadena de conexión.

Saludos,
Pep Lluis,

 

 

 

Establecer una vista Maestro Detalle, entre dos Tablas

Más respuestas… a la pregunta:

>> Hola el ejemplo Dos Tablas y sus relaciones en un DataGridView a traves de un ‘ComboBoxColumn’ estuvo muy bueno pero quería saber cómo hago si solamente quiero mostrar los 2 DataTables tipo maestro detalle en el DataGridView.

VistaDetalle

‘ Simular tabla con los Id’s Maestros

Dim Maestros As New DataTable(«Maestro»)

Maestros.Columns.Add(«Cliente»)

Maestros.Columns.Add(«Nombre»)

Maestros.Rows.Add(«001», «Jose Javier Garcia»)

Maestros.Rows.Add(«002», «Jhon Smith Carter»)

Maestros.Rows.Add(«003», «Pierre Bertran Janvier»)

Maestros.Rows.Add(«004», «Jose Di Souza»)

‘ Simular tabla con los Detalles

Dim Detalles As New DataTable(«Detalle»)

Detalles.Columns.Add(«Cliente»)

Detalles.Columns.Add(«Pedido»)

Detalles.Columns.Add(«Fecha»)

Detalles.Columns.Add(«Importe»)

Detalles.Rows.Add(«001», «F164533», «22/01/2006», «1,111.11»)

Detalles.Rows.Add(«001», «A163453», «22/02/2007», «2,123.23»)

Detalles.Rows.Add(«003», «ZP12343», «22/03/2008», «3,456.34»)

Detalles.Rows.Add(«004», «PDF2333», «22/05/2009», «4,452.22»)

Detalles.Rows.Add(«001», «CRF5453», «22/06/2009», «1,223.33»)

Detalles.Rows.Add(«002», «MFF6763», «22/07/2009», «1,234.32»)

Detalles.Rows.Add(«002», «VRF4683», «22/08/2009», «2,123.54»)

Detalles.Rows.Add(«004», «ZRF7933», «22/09/2009», «1,203.00»)

‘ Construir el DS y establecer relaciones

Dim MiDataSet As New DataSet

MiDataSet.Tables.Add(Detalles)

MiDataSet.Tables.Add(Maestros)

MiDataSet.Relations.Add(«Fk», _

MiDataSet.Tables(«Maestro»).Columns(«Cliente»), _

MiDataSet.Tables(«Detalle»).Columns(«Cliente»))

‘ Contructores para los Bingdings

Dim MaestroBindingSource As New BindingSource

Dim DetalleBindingSource As New BindingSource

‘ Binding del «Maestro»

MaestroBindingSource.DataMember = «Maestro»

MaestroBindingSource.DataSource = MiDataSet

‘ Enlace del detalle entre la relacion «Fk» y el Maestro

DetalleBindingSource.DataMember = «Fk»

DetalleBindingSource.DataSource = MaestroBindingSource

‘Asignar los binding source Maestro y Detalle a su DGV

Me.DataGridView1.DataSource = MaestroBindingSource

Me.DataGridView2.DataSource = DetalleBindingSource

Para probar este ejemplo solo es necesario crear una nueva solución “Windows Forms”, añadir dos DataGridView al Form1 y en el evento “Form Load” añadir el código adjunto. Puedes hacer lo mismo utilizando un ‘combo’ aunque he preferido dos DataGridView por simplicidad.

Espero os sea útil,
Pep Lluis,

Marcacion de un numero de telefono – Mandato ATDT

Atendiendo a la pregunta de :

 

>Necesito hacer una aplicación que haga una llamada telefónica utilizando el modem de la pc,no algo muy complejo solo por ejemplo hasta la idea de una agenda donde al dar clic en un registro salga la llamada hacia dicho número, esto en vb.net

 

Dim PuertoSerie As SerialPort = My.Computer.Ports.OpenSerialPort(«COM1», 9600)

PuertoSerie.DtrEnable = True

PuertoSerie.Write(«ATDT0123456789» & vbCrLf)

‘En este momento el modem marcara el numero 0123456789

‘Si no recuerdo mal la mayoria de modems disponen de ATH0 / ATH1 para colgar y descolgar el auricular

‘cuando recibes llamadas o para finalizar la que tienes en curso.

‘Tambien es bueno recordar con ATZ… retornas el modem a su estado inicial «Reset»

 

A pesar de la sencillez para marcar un numero, es aconsejable leer el manual de comandos del modem suministrado por el fabricante, en el encontraras la información relevante para poder tener un control adecuado del modem.

Espero vuestros comentarios,
Pep Lluis,

Sobre las consultas a través del BLOG – [Contact]

Os agradezco a todos vuestras preguntas, y tal como ya explique en otra ocasión, poco a poco intento responderlas todas, aunque lamentablemente se acumulan a tal ritmo que no tengo suficiente tiempo libre para contestaros a todos. Espero vuestra comprensión, y que a pesar de todo no perdamos nuestro contacto, también espero que me toque pronto la lotería, de esa forma tendré todo el tiempo libre del mundo para dedicarme a las cosas que más me gustan, jajajaja.

Saludos,
Pep Lluis,

Entre 485 y 232

Atendiendo a la pregunta de :

> Hola, estoy leyendo el foro buscando información sobre programar una rutina en Visual Basic, para conectar con unos dispositivos que trabajan con RS485.

En una conexión serie, estamos intercambiando información a través de una conexión de Tu a Tu (Peer To Peer) en Ingles. Ello significa que cada trama enviada por un DCE es recibida en el otro extremo por un DCE o DTE y viceversa, electrónicamente las señales estan diseñadas como entradas/salidas, por lo que una salida de un extremo se corresponde a la entrada en el otro, en una topología 485 la primera distinción es la característica de utilizar dos hilos conectados a la electrónica a través de unas Entradas/Salidas triestado, ello significa que utilizando las mismas patillas podemos enviar y recibir datos. La señal del puerto serie trasmite la información por diferencial de voltaje entre el GND y el correspondiente transmisor/receptor, el 485 distingue los niveles por diferencial de voltaje entre sus dos hilos (+) y (-), por lo que es mas inmune a las interferencias, su comportamiento es mucho mejor que el 232 en entornos industriales y evidentemente su cableado mucho mas sencillo.

Por sus características de impedancia, el 485 permite la conexión de hasta 32 dispositivos y creo que hasta 100m, mientras el 232 solo permite la conexión de 1 dispositivo y creo que el máximo según la especificación es de 15m.

La primera particularidad de cualquier dispositivo 485 es que debe estar preparado para configurarse como un único dispositivo dentro de la red y además solo uno de los dispositivos deberá disponer del rol de “Host” o anfitrión de manera que el resto de dispositivos solo participaran en el intercambio de datos respondiendo a las solicitudes del anfitrión.

Por poner un ejemplo, imaginemos un PC con un conversor USB/485 configurado a través de un puerto serie, y este tiene conectadas 4 basculas numeradas del  ’01’ al ‘04’… el software del PC, para leer el peso de todas las basculas deberá componer las tramas direccionando a cada una de ellas y recibiendo la información de una en una…

Imaginemos el formato de la trama de petición : PPUN
Donde PP = “Pedir Peso” y UN = Numero Unidad de Bascula

PC -> enviara : PP01
PP01 -> Respondera :  RB011,500

Donde RB = “Resultado Bascula”, 01 es la unidad de bascula que responde y 1,500 los Kilos.

En la siguiente operación el PC deberá enviar : PP02.. Para recibir el peso de la segunda bascula y así sucesivamente.

Espero vuestras preguntas para ir matizando sobre el tema… pues es mas amplio y espefico de lo que parece.

Saludos,
Pep Lluis,