Y aqui os dejo el codigo
Leer másSaber Color de un Pixel y la Proporcion de imagen PictureBox
Más que contenido para programadores
Por si os interesa, aqui os dejo un script que te dira cual es el espacio que ocupa los datos por tabla de nuestra base de datos de sql server.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
SELECT t.NAME AS NombreTabla, s.Name AS Esquema, p.rows AS NumFilas, SUM(a.total_pages) * 8 AS EspacioTotal_KB, SUM(a.used_pages) * 8 AS EspacioUsado_KB, (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS EspacioNoUsado_KB FROM sys.tables t INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.NAME NOT LIKE 'dt%' AND t.is_ms_shipped = 0 AND i.OBJECT_ID > 255 GROUP BY t.Name, s.Name, p.Rows ORDER BY EspacioUsado_KB desc |
Bueno, ya se que es poco pero por si te interesa tambien puedes consultar , Reindexar y defragmentar los datos aqui .
Un saludo y suscribiros, y registrense, para acceder a el contenido del Foro
Hola a tod@s.
Hoy os triago como pintar dentro de un picturebox, ¿para que?. pues bien,quizas lo puedas utilizar para pintar dibujitos o por si necesitas crear una firma para tu programa. En el ejemplo de hoy cuando terminemos la debe quedarnos algo asi, yo ya lo tengo pintadito todo XD.
Para ello vamos a utilizar Graphics, un Balanceador “Swich”, un lapiz “Pen” , y 2dGraphicsPath.
Lo primero que debemos hacer es crear un picturebox en nuestro formulario, y declarar las variables principales que vamos a utilizar en esta mini aplicacion fuera del Load, de tal manera que seran accesibles en todo en Form. La cosa quedaria asi.
1 2 3 4 5 6 |
Dim PuedoPintar As Boolean = False Dim p As New Pen(Brushes.Black, 4.9) Dim g As Graphics Dim ph As New Drawing2D.GraphicsPath(Drawing2D.FillMode.Alternate) Dim Swich As Boolean = False Dim x1, y1, x2, y2 |
Ahora dentro del Load lo que vamos a hacer es crear un Bitmap del mismo tamaño que el picturebox y se lo asignamos, y justo despues le decimos a Graphics que es lo que puede pintar, El Load quedaria de la siguiente manera:
1 2 3 4 5 |
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim bmp As New Bitmap(Me.PictureBox1.Size.Width, Me.PictureBox1.Size.Height) Me.PictureBox1.Image = bmp g = Graphics.FromImage(Me.PictureBox1.Image) End Sub |
A Continuacion vamos a utilizar los eventos Picturebox.MouseDown, Picturebox.MouseUP, Picturebox.MouseMove , para realizar los trazados dentro del picturebox,
En el Evento de MouseDown, lo que haremos sera decirle que PuedoPintar pasara a true para que empieze a recoger los datos y que pueda empezar a pintar,
1 2 3 |
Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown PuedoPintar = True End Sub |
En el Evento MouseUp , PuedoPintar pasara a False para que no Pinte y tanto el Swich como El GraphicsPath se liberen y queden para empezar de cero.
1 2 3 4 5 |
Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp PuedoPintar = False Swich = False ph.Reset() End Sub |
Y el mas importante el MouseMove, Utilizaremos el Swich para ir almacenando las posiciones del raton en las variables X1,Y1,X2,Y2, hacen referencia a si swich = false y Swich = True, cuando este ultimo esta completado, ya tenemos punto origen y punto final,por lo cual podemos realizar el trazado. la cosa queda asi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove If PuedoPintar = True Then If Swich = False Then x1 = e.X y1 = e.Y Swich = True Else x2 = e.X y2 = e.Y ph.AddLine(x1, y1, x2, y2) g.DrawPath(p, ph) Swich = False End If End If g.Flush() Me.PictureBox1.Refresh() End Sub |
Como veis no es tan complicado, ahora te toca a ti , realizar los cambios de color del pen,Tamaños… que si quereis lo haremos en un post mas adelante, ahora todo el codigo seguido.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Dim PuedoPintar As Boolean = False Dim p As New Pen(Brushes.Black, 4.9) Dim g As Graphics Dim ph As New Drawing2D.GraphicsPath(Drawing2D.FillMode.Alternate) Dim Swich As Boolean = False Dim x1, y1, x2, y2 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim bmp As New Bitmap(Me.PictureBox1.Size.Width, Me.PictureBox1.Size.Height) Me.PictureBox1.Image = bmp g = Graphics.FromImage(Me.PictureBox1.Image) End Sub Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown PuedoPintar = True End Sub Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp PuedoPintar = False Swich = False ph.Reset() End Sub Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove If PuedoPintar = True Then If Swich = False Then x1 = e.X y1 = e.Y Swich = True Else x2 = e.X y2 = e.Y ph.AddLine(x1, y1, x2, y2) g.DrawPath(p, ph) Swich = False End If End If g.Flush() Me.PictureBox1.Refresh() End Sub |
Como siempre….
Si te gustó , si te sirvio, si te ayudó, Comenta, comparte esta pagina,y o registrate
Quizas te interese… Convertir imagen a BASE64 aqui
Hola a tod@s.
Os traigo un brevisimo ejemplo de como añadir datos a un treeview.
en este caso la estructura solo llevara 2 niveles, pero siguiendo el mismo proceso de iteración puedes agregar los niveles que quieras.
Os dejo el ejemplo comentado, con el datatable creado a mano.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Dim dt As New DataTable dt.Columns.Add("Id", GetType(Int32)) : dt.Columns.Add("Nombre", GetType(String)) : dt.Columns.Add("Apellidos", GetType(String)) : dt.Columns.Add("PAIS", GetType(String)) Dim dr As DataRow dr = dt.NewRow dr("id") = 1 dr("Nombre") = "Juan" dr("Apellidos") = "Pardo" dr("Pais") = "España" dt.Rows.Add(dr) dr = dt.NewRow dr("id") = 2 dr("Nombre") = "Lucas" dr("Apellidos") = "Martinez" dr("Pais") = "España" dt.Rows.Add(dr) dr = dt.NewRow dr("id") = 3 dr("Nombre") = "Pablo" dr("Apellidos") = "Beltran" dr("Pais") = "Colombia" dt.Rows.Add(dr) dr = dt.NewRow dr("id") = 4 dr("Nombre") = "Maria" dr("Apellidos") = "Juliana" dr("Pais") = "Argentina" dt.Rows.Add(dr) dt.TableName = "Clientes" Dim dv As New DataView(dt) dv.Sort = "Pais" Dim DTOrdenado As DataTable = dv.ToTable |
‘EJEMPLO TREEVIEW
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Dim Pais = "" 'Para saber cuando cambia de pais Dim NodoActual = -1 '-1 para cuando cambie de pais añadir 1 , y empezar en el 0 For Each dro As DataRow In DTOrdenado.Rows If Pais <> dro("Pais") Then NodoActual = NodoActual + 1 Pais = dro("Pais") Me.TreeView1.Nodes.Add(dro("Pais")) 'Añado un nodo y a el mismo nodo le asigno los datos Me.TreeView1.Nodes(NodoActual).Nodes.Add(dro("nombre") & "," & dro("Apellidos")) Else 'Como es el mismo pais añado solo el nuevo nombre Me.TreeView1.Nodes(NodoActual).Nodes.Add(dro("nombre") & "," & dro("Apellidos")) End If Next |
La cosa quedará asi,
y como siempre comenta y compartelo ***El mail te lo puedes inventar***
Salu2
Hola a tod@s.
Aqui os traigo un metodo para invocar formularios que estan en otra DLL usando REFLECTION de .NET.
Hola a todos, aqui os traigo una función para hacer split en sql server, la verdad es muy util para separar textos contatenados.
Hola a todos aqui os traigo un ejemplo sencillo de como redimensionar un Array y conservar los datos que ya tiene
Pues bien es algo muy sencillo. para ello vamos a utilizar la siguentes declaraciones REDIM PRESERVE para conservar los datos que tenemos y aumentar en 1 la dimension del array
Veamos el ejemplo comentado:
1 2 3 4 5 6 |
Dim arr(-1) As String 'Array sin dimensiones de String Dim i = 44 'Numero de dimensiones que va a tener el array cuando lo vaya a redimensionar For z As Integer = 0 To i ReDim Preserve arr(UBound(arr) + 1) 'UBOUND especifica el maximo y le añadimos 1 arr(UBound(arr)) = i 'Con ubound volvemos a obtener el maximo y ya le asignamos el valor Next |
Y ya lo tenemos, espero que os sirva y ya sabeis, si os gusto compartelo, y comenta
Que es adodb.
Bien si la wikipedia indica Que ado es
ADO.NET es un conjunto de componentes del software que pueden ser usados por los programadores para acceder a datos y a servicios de datos.
Es una parte de la biblioteca de clases base que están incluidas en el Microsoft .NET Framework.
Es comúnmente usado por los programadores para acceder y para modificar los datos almacenados en un Sistema Gestor de Bases de Datos Relacionales,
aunque también puede ser usado para acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado como una evolución de la tecnología
ActiveX Data Objects (ADO), pero fue cambiado tan extensivamente que puede ser concebido como un producto enteramente nuevo.
Fuente:(http://es.wikipedia.org/wiki/ADO.NET)
Pues bien ADODB es un componente que se incluye en la MDAC y que proviene de Visual5 y 6.
Para los que hemos trabajado con VB6 recordamos aquellos Recorsets con las caracteristas
de MoverFisrt , MovePrevious, MoveNext,MoveLast. muy utiles.
Viendo como lo que ha cambiado el mundo de la programación a mi personalmente me da pena que ya casi, y digo bien casi, no se use.
Pues bien Sigue en activo, y si bien es un componente antiguo aun se puede conectar son SQL SERVER 2014,MSACCESS 2013, SQLITE, Bases de Datos Compact. Etc etc.
Para mi es mas facil utilizar adodb para ejecutar transacciones en SQL tanto para lo insert,updates,delete,procedimientos almacenados. dada la facilidad de su uso.
Aqui os dejo un los ejemplos pertinente y el como se convierte esos Famosos RECORDSETS a Datatables, que si bien los miramos se comporten como EL CurrencyManager, de la cual puedes obtener info aqui para navegar por los registros, más un datatable todo unido.
Si cabe destacar un inconveniente de ADODB , y es que el nombre de tabla no viene indicado, asi que por lo tanto deberemos ponerlo(SI QUEREMOS…)
Como tendras que darle una cadena de conexion , si no sabes como hacerlo pincha aqui
Para leer los datos de un fichero si usas el caso anterior para crear la cadena de conexion pincha aqui
Hacemos una Select
1 2 3 4 5 6 7 8 9 10 11 12 |
Dim SSQL As String = "Select * from Clientes" Dim Db As New adodb.Connection Db.ConnectionString = "" 'Aqui indicar tu cadena de conexion Dim Da As New OleDb.OleDbDataAdapter 'Lo Utilizaremos para convertir El RECORDSET a Datatable Dim Dt As New DataTable 'Datatable que llenaremos con el recordSet Try Db.open() Da.Fill(Dt, Db.execute(SSQL)) Db.close() Catch ex As excepcion Db.close() End Try |
Un Update esto es mas facil
1 2 3 4 5 6 |
Dim SSQL As String = "Update Clientes Set Id=33 where Id=12" Dim Db As New adodb.Connection Db.ConnectionString = "" 'Aqui indicar tu cadena de conexion Db.open() Db.Execute(SSQL) Db.close() |
Si necesitamos que nos devuelva el cambio en un datatable habria que hacer lo mismo que la select pero la instruccion SQL sera update….
El insert
1 2 3 4 5 6 |
Dim SSQL As String = "Insert into Clientes id,Nombre values('12','juan')" Dim Db As New adodb.Connection Db.ConnectionString = "" 'Aqui indicar tu cadena de conexion Db.open() Db.Execute(SSQL) Db.close() |
Y el delete os lo podeis imaginar no??? , por si alguno anda despistado XD
1 2 3 4 5 6 |
Dim SSQL As String = "Delete from clientes where id = '12'" Dim Db As New adodbConnection Db.ConnectionString = "" 'Aqui indicar tu cadena de conexion Db.open() Db.Execute(SSQL) Db.close() |
y hasta aqui el post de ADODB, Puedes descargarte la libreria aqui, pero tambien te recomiendo que te instales el MDAC, ya que tienen componentes de Interop que te serviran de ayuda.
si quieres mas info sobre ADODB ,visita esta pagina de Microsoft AQUI
Un saludo y si te sirvio, o si te gusto, escribe tu comentario y recuerda