<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;DUIHSXcyeCp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475</id><updated>2011-11-27T21:45:38.990-02:00</updated><category term="descargar archivo" /><category term="Abrir unidad cd" /><category term="Hijos" /><category term="Formato" /><category term="DTS" /><category term="Buscar nombre de un campo" /><category term="Buscar Servidores en la red" /><category term="Stored Procedure" /><category term=".Net" /><category term="SQL Server" /><category term="Convertir" /><category term="AJAX" /><category term="Imagen" /><category term="Combobox" /><category term="Calculadora" /><category term="Deshabilitar inicio" /><category term="Inicio de aplicación" /><category term="JAVASCRIPT" /><category term="Apagar pc" /><category term="ConText" /><category term="odbc" /><category term="Txt" /><category term="Excepciones" /><category term="VFP" /><category term="menu inicio" /><category term="ASP.NET" /><category term="Tablas de base de datos" /><category term="Exportar datos" /><category term="Automatización" /><category term="Variables de Entorno" /><category term="DoFileDownload" /><category term="Subir Archivos" /><category term="Redimensionar" /><category term="cargar grid" /><category term="Paginación" /><category term="Visual Basic" /><category term="validacion" /><category term="Incremental" /><category term="Quitar Caracteres" /><category term="Pc Online" /><category term="ADO" /><category term="Bindevents" /><category term="RifhTextBox" /><category term="Codigo Fuente" /><category term="Bloquear Teclado" /><category term="Abrir Fichero de Texto" /><category term="msflexgrid" /><category term="Justificar" /><category term="Internet" /><category term="conexion" /><category term="DateDiff" /><category term="Full Text Index" /><category term="Moviles" /><category term="Importar datos" /><category term="Búsqueda" /><category term="XML" /><category term="SysTray" /><category term="Word" /><category term="RichTextBox" /><category term="Bloquear Mouse" /><category term="textbox" /><category term="Editor" /><category term="Agregar DSN" /><category term="LinkLabel" /><category term="ADO.NET" /><category term="Reiniciar Pc" /><category term="C#" /><category term="PHP" /><category term="Copiar Directorios" /><category term="Abrir Navegador" /><category term="PostgreSQL" /><category term="Ping" /><category term="Claves Foraneas" /><category term="Visual Fox Pro" /><category term="Aspx" /><category term="Boton en Screen" /><category term="MySql" /><category term="Grid" /><category term="Envio de Correo" /><category term="Dirección ip" /><category term="Html" /><category term="Exceptions" /><category term="Funciones API" /><category term="Diferencia entre fechas" /><category term="MDI Form" /><category term="Excel" /><title>AllDevSoft</title><subtitle type="html">Todo lo que un desarrollador necesita</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Alldevsoft" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="alldevsoft" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUQCSHY_fSp7ImA9WxVXE00.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-6527924429610373662</id><published>2009-02-10T21:09:00.001-02:00</published><updated>2009-02-10T21:09:29.845-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T21:09:29.845-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>Transparencia de un Form</title><content type="html">&lt;p&gt;Insertar el siguiente Codigo en un Modulo:    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;pre style="width: 100%; height: 41px"&gt;&lt;span style="color: #0000ff"&gt;Declare&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt; SetWindowLong &lt;span style="color: #0000ff"&gt;Lib&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;user32&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Alias&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;SetWindowLongA&amp;quot;&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; hwnd &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; nIndex &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; dwNewLong &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Nota: Debe estar todo en una sola linea (Usar el Visor de Texto API, que viene con Visual Basic)&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Insertar el siguiente Codigo en CommandButton para probar: &lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 106px"&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; Command1_Click()&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; Resp &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;br /&gt;    Resp = SetWindowLong(&lt;span style="color: #0000ff"&gt;Me&lt;/span&gt;.hWnd, -20, &amp;amp;H20&amp;amp;)&lt;br /&gt;    Form1.Refresh&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Una mejora seria en un modulo: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 171px"&gt;&lt;span style="color: #0000ff"&gt;Declare&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt; SetWindowLong &lt;span style="color: #0000ff"&gt;Lib&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;user32&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Alias&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;SetWindowLongA&amp;quot;&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; hwnd &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; nIndex &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; dwNewLong &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; WS_EX_TRANSPARENT = &amp;amp;H20&amp;amp;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_HINSTANCE = (-6)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_EXSTYLE = (-20)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_HWNDPARENT = (-8)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_ID = (-12)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_STYLE = (-16)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_USERDATA = (-21)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_WNDPROC = (-4)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Y en el form_load: &lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 42px"&gt;&lt;span style="color: #0000ff"&gt;Call&lt;/span&gt; SetWindowLong(Form1.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-6527924429610373662?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/6527924429610373662/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=6527924429610373662&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/6527924429610373662?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/6527924429610373662?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2009/02/transparencia-de-un-form.html" title="Transparencia de un Form" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUcNRHw7fip7ImA9WxVXE00.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-1614447062459456232</id><published>2009-02-10T21:04:00.001-02:00</published><updated>2009-02-10T21:04:55.206-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T21:04:55.206-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>Encriptación - Desencriptación</title><content type="html">&lt;p&gt;Para encriptar y desencriptar datos podemos utilizar las siguientes funciones:    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Shared&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt; EncryptString(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; InputString &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; SecretKey &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;Optional&lt;/span&gt; &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; CyphMode &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; CipherMode = CipherMode.ECB) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; Des &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; TripleDESCryptoServiceProvider&lt;br /&gt;&lt;span style="color: #008000"&gt;'Put the string into a byte array&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; InputbyteArray() &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Byte&lt;/span&gt; = Encoding.UTF8.GetBytes(InputString)&lt;br /&gt;&lt;span style="color: #008000"&gt;'Create the crypto objects, with the key, as passed in&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; hashMD5 &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; MD5CryptoServiceProvider&lt;br /&gt;Des.Key = hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(SecretKey))&lt;br /&gt;Des.Mode = CyphMode&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; ms &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; MemoryStream = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; MemoryStream&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; cs &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; CryptoStream = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; CryptoStream(ms, Des.CreateEncryptor(), _&lt;br /&gt;CryptoStreamMode.Write)&lt;br /&gt;&lt;span style="color: #008000"&gt;'Write the byte array into the crypto stream&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'(It will end up in the memory stream)&lt;/span&gt;&lt;br /&gt;cs.Write(InputbyteArray, 0, InputbyteArray.Length)&lt;br /&gt;cs.FlushFinalBlock()&lt;br /&gt;&lt;span style="color: #008000"&gt;'Get the data back from the memory stream, and into a string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; ret &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; StringBuilder = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; StringBuilder&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; b() &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Byte&lt;/span&gt; = ms.ToArray&lt;br /&gt;ms.Close()&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; I &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Integer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;For&lt;/span&gt; I = 0 &lt;span style="color: #0000ff"&gt;To&lt;/span&gt; UBound(b)&lt;br /&gt;&lt;span style="color: #008000"&gt;'Format as hex&lt;/span&gt;&lt;br /&gt;ret.AppendFormat(&lt;span style="color: #b22222"&gt;&amp;quot;{0:X2}&amp;quot;&lt;/span&gt;, b(I))&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Return&lt;/span&gt; ret.ToString()&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Catch&lt;/span&gt; ex &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; System.Security.Cryptography.CryptographicException&lt;br /&gt;ExceptionManager.Publish(ex)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Return&lt;/span&gt; &amp;quot;&amp;quot;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Try&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Shared&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt; DecryptString(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; InputString &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; SecretKey &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;Optional&lt;/span&gt; &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; CyphMode &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; CipherMode = CipherMode.ECB) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;If&lt;/span&gt; InputString = &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;.Empty &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Return&lt;/span&gt; &amp;quot;&amp;quot;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; Des &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; TripleDESCryptoServiceProvider&lt;br /&gt;&lt;span style="color: #008000"&gt;'Put the string into a byte array&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; InputbyteArray(&lt;span style="color: #0000ff"&gt;CType&lt;/span&gt;(InputString.Length / 2 - 1, &lt;span style="color: #0000ff"&gt;Integer&lt;/span&gt;)) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Byte&lt;/span&gt; &lt;span style="color: #008000"&gt;'= Encoding.UTF8.GetBytes(InputString)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'Create the crypto objects, with the key, as passed in&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; hashMD5 &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; MD5CryptoServiceProvider&lt;br /&gt;&lt;br /&gt;Des.Key = hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(SecretKey))&lt;br /&gt;Des.Mode = CyphMode&lt;br /&gt;&lt;span style="color: #008000"&gt;'Put the input string into the byte array&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; X &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Integer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;For&lt;/span&gt; X = 0 &lt;span style="color: #0000ff"&gt;To&lt;/span&gt; InputbyteArray.Length - 1&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; IJ &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; Int32 = (Convert.ToInt32(InputString.Substring(X * 2, 2), 16))&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; BT &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; ByteConverter&lt;br /&gt;InputbyteArray(X) = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Byte&lt;/span&gt;&lt;br /&gt;InputbyteArray(X) = &lt;span style="color: #0000ff"&gt;CType&lt;/span&gt;(BT.ConvertTo(IJ, &lt;span style="color: #0000ff"&gt;GetType&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;Byte&lt;/span&gt;)), &lt;span style="color: #0000ff"&gt;Byte&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; ms &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; MemoryStream = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; MemoryStream&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; cs &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; CryptoStream = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; CryptoStream(ms, Des.CreateDecryptor(), _&lt;br /&gt;CryptoStreamMode.Write)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'Flush the data through the crypto stream into the memory stream&lt;/span&gt;&lt;br /&gt;cs.Write(InputbyteArray, 0, InputbyteArray.Length)&lt;br /&gt;cs.FlushFinalBlock()&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'//Get the decrypted data back from the memory stream&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; ret &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; StringBuilder = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; StringBuilder&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; B() &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Byte&lt;/span&gt; = ms.ToArray&lt;br /&gt;&lt;br /&gt;ms.Close()&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; I &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Integer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;For&lt;/span&gt; I = 0 &lt;span style="color: #0000ff"&gt;To&lt;/span&gt; UBound(B)&lt;br /&gt;ret.Append(Chr(B(I)))&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Return&lt;/span&gt; ret.ToString()&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mistrucos.net" target="_blank"&gt;Fuente&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-1614447062459456232?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/1614447062459456232/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=1614447062459456232&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/1614447062459456232?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/1614447062459456232?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2009/02/encriptacion-desencriptacion.html" title="Encriptación - Desencriptación" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DE4BR3Y-eip7ImA9WxVXE00.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-9016576805557524400</id><published>2009-02-10T21:02:00.001-02:00</published><updated>2009-02-10T21:02:36.852-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T21:02:36.852-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Moviles" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>Acceso a base de datos de SQL Server CE mediante dispositivos móviles</title><content type="html">&lt;p&gt;Microsoft SQL Server CE es la base de datos compacta para el desarrollo r&amp;#225;pido de aplicaciones, tanto en el modo nativo como en .NET Compact Framework, que ampl&amp;#237;a las capacidades de administraci&amp;#243;n de datos empresariales a los dispositivos.&lt;/p&gt;  &lt;p&gt;SQL Server CE es una poderosa herramienta para el f&amp;#225;cil desarrollo de aplicaciones m&amp;#243;viles que soportan sintaxis del Lenguaje de Consulta Estructurado (SQL) proporcionando de un modelo de desarrollo consistente con SQL Server.    &lt;br /&gt;Este esta dise&amp;#241;ado para integrarse con el Microsoft .NET Compact Framework por medio del Visual Studio simplificando el desarrollo de aplicaciones con bases de datos en dispositivos inteligentes.     &lt;br /&gt;&lt;b&gt;Desarrollo&lt;/b&gt;     &lt;br /&gt;En este art&amp;#237;culo vamos a crear una aplicaci&amp;#243;n completa para dispositivos m&amp;#243;viles en C#, la cual har&amp;#225; un acceso a una base de datos de SQL Server CE y la muestre en un DataGrid para consultarla desde nuestro dispositivo.     &lt;br /&gt;Primero vamos a crear un nuevo proyecto en C# y va a ser una Aplicaci&amp;#243;n para Smart Device, a esta la llamaremos &lt;b&gt;SQLServerCESample&lt;/b&gt;.     &lt;br /&gt;Despu&amp;#233;s Visual Studio nos preguntar&amp;#225; la plataforma de destino que vamos a utilizar, en este caso le indicaremos que ser&amp;#225; para PocketPC y ser&amp;#225; un proyecto para una aplicaci&amp;#243;n Windows, imagen 2.     &lt;br /&gt;Dado esto nos aparecer&amp;#225; una forma similar a la de Windows Forms donde vamos a comenzar a hacer nuestro ejemplo, imagen 3.     &lt;br /&gt;Vamos a arrastrar a nuestra forma desde la barra de herramientas un DataGrid y un Boton para realizar nuestro ejemplo, imagen 4.     &lt;br /&gt;    &lt;br /&gt;Despu&amp;#233;s de llevado a cabo esto vamos a requerir agregar dos referencias a nuestro proyecto, estas ser&amp;#237;an: &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;pre style="width: 100%; height: 79px"&gt;&lt;p&gt; System.Data&lt;br /&gt; System.Data.Common&lt;br /&gt; System.Data.SqlServerCe&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ya que tenemos nuestras referencias procederemos a programar nuestra APP de la siguiente manera: &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;Primeramente vamos a crear un m&amp;#233;todo que se encarge de crear una tabla en nuestro SQL Server CE, el c&amp;#243;digo que muestro a continuaci&amp;#243;n trae sus respectivos comentarios: &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CrearTabla()&lt;br /&gt;{&lt;br /&gt; &lt;span style="color: #008000"&gt;//Indicamos el origen de datos&lt;/span&gt;&lt;br /&gt; SqlCeEngine objEg = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlCeEngine(&lt;span style="color: #b22222"&gt;&amp;quot;Data Source=\\my documents\\MiBD.SDF&amp;quot;&lt;/span&gt;);&lt;br /&gt; SqlCeConnection objCon = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlCeConnection(&lt;span style="color: #b22222"&gt;&amp;quot;Data Source=\\my documents\\MiBD.SDF&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;br /&gt; {&lt;br /&gt;  &lt;span style="color: #008000"&gt;//Creamos la Base de Datos de SQL Server CE&lt;/span&gt;&lt;br /&gt;  objEg.CreateDatabase();&lt;br /&gt;  objEg.Dispose();&lt;br /&gt;  objCon.Open();&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: #008000"&gt;//Creamos la tabla Amigos&lt;/span&gt;&lt;br /&gt;  SqlCeCommand objCom = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlCeCommand(&lt;span style="color: #b22222"&gt;&amp;quot;CREATE TABLE Amigos(ID INT PRIMARY KEY, Nombre NVARCHAR(10))&amp;quot;&lt;/span&gt;, objCon);&lt;br /&gt;  objCom.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: #008000"&gt;//Le insertamos informaci&amp;#243;n a la tabla Amigos&lt;/span&gt;&lt;br /&gt;  objCom.CommandText = &lt;span style="color: #b22222"&gt;&amp;quot;INSERT INTO Amigos VALUES(1, 'MARIO')&amp;quot;&lt;/span&gt;;&lt;br /&gt;  objCom.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;  objCom.CommandText = &lt;span style="color: #b22222"&gt;&amp;quot;INSERT INTO Amigos VALUES(2, 'LUIS')&amp;quot;&lt;/span&gt;;&lt;br /&gt;  objCom.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;  objCom.CommandText = &lt;span style="color: #b22222"&gt;&amp;quot;INSERT INTO Amigos VALUES(3, 'PUYUL')&amp;quot;&lt;/span&gt;;&lt;br /&gt;  objCom.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;  objCom.CommandText = &lt;span style="color: #b22222"&gt;&amp;quot;INSERT INTO Amigos VALUES(4, 'CANCALAS')&amp;quot;&lt;/span&gt;;&lt;br /&gt;  objCom.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;  objCom.CommandText = &lt;span style="color: #b22222"&gt;&amp;quot;INSERT INTO Amigos VALUES(5, 'ELIGIO')&amp;quot;&lt;/span&gt;;&lt;br /&gt;  objCom.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;  objCom.CommandText = &lt;span style="color: #b22222"&gt;&amp;quot;INSERT INTO Amigos VALUES(6, 'COBRA DE OQUIS')&amp;quot;&lt;/span&gt;;&lt;br /&gt;  objCom.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;  objCom.CommandText = &lt;span style="color: #b22222"&gt;&amp;quot;INSERT INTO Amigos VALUES(7, 'MAL AMIGO')&amp;quot;&lt;/span&gt;;&lt;br /&gt;  objCom.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;  objCom.CommandText = &lt;span style="color: #b22222"&gt;&amp;quot;INSERT INTO Amigos VALUES(8, 'NEGRERO')&amp;quot;&lt;/span&gt;;&lt;br /&gt;  objCom.ExecuteNonQuery();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (SqlCeException ex)&lt;br /&gt; {&lt;br /&gt;  Console.WriteLine(ex.Message);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;finally&lt;/span&gt;&lt;br /&gt; {&lt;br /&gt;  objCon.Close();&lt;br /&gt;  objCon.Dispose();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;B&amp;#225;sicamente lo que se hizo fue indicarle al SQL Server CE la ruta de nuestra base de datos, llevar a cabo la conexi&amp;#243;n, y mediante instrucciones de SQL b&amp;#225;sicas fuimos creando primeramente la tabla y despu&amp;#233;s los elementos de la misma. &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;Ya que hemos creado el m&amp;#233;todo que nos va a dar la capacidad de crear dicha tabla, ahora vamos a mostrar los registros que acabamos de crear en nuestro DataGrid, para eso vamos al evento _Click de nuestro bot&amp;#243;n que agregamos y codificamos lo siguiente: &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; btnCargar_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, System.EventArgs e)&lt;br /&gt;{&lt;br /&gt; &lt;span style="color: #008000"&gt;//Creamos la tabla&lt;/span&gt;&lt;br /&gt; CrearTabla();&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #008000"&gt;//Especificamos el origen de datos&lt;/span&gt;&lt;br /&gt; SqlCeConnection oCon = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlCeConnection(&lt;span style="color: #b22222"&gt;&amp;quot;Data Source=\\my documents\\MiBD.SDF&amp;quot;&lt;/span&gt;);&lt;br /&gt; SqlCeDataAdapter oDA = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlCeDataAdapter(&lt;span style="color: #b22222"&gt;&amp;quot;SELECT * FROM Amigos&amp;quot;&lt;/span&gt;, oCon);&lt;br /&gt;&lt;br /&gt; DataSet oDS = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DataSet(&lt;span style="color: #b22222"&gt;&amp;quot;Amigos&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;br /&gt; {&lt;br /&gt;  &lt;span style="color: #008000"&gt;//Rellenamos el dataset&lt;/span&gt;&lt;br /&gt;  oDA.Fill(oDS);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (SqlCeException ex )&lt;br /&gt; {&lt;br /&gt;  MessageBox.Show(ex.Message);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;finally&lt;/span&gt;&lt;br /&gt; {&lt;br /&gt;  &lt;span style="color: #008000"&gt;//Asignamos al datasource del datagrid nuestro dataset&lt;/span&gt;&lt;br /&gt;  oDA.Dispose();&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.dgElements.DataSource = oDS.Tables[0].DefaultView;&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Lo que se hizo b&amp;#225;sicamente es crear dicha conexi&amp;#243;n e hicimos el DataBind de nuestro DataGrid a dicho origen de datos. Si corremos nuestra APP nos aparecer&amp;#225; algo como la imagen 6.&lt;br /&gt;  &lt;br /&gt;Aqu&amp;#237; nos pregunta que elijamos el dispositivo al cual queremos implementar nuestra soluci&amp;#243;n. A lo cual da dos opciones: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Dispositivo Pocket PC. Si ya tenemos una PocketPC f&amp;#237;sica conectada y sincronizada directamente con nuestra PC.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Emulador de PocketPC 2002. Peque&amp;#241;o Software que emula el dispositivo en el cual podemos hacer pruebas como si tuvi&amp;#233;ramos la PocketPC f&amp;#237;sicamente.&lt;br /&gt;  &lt;br /&gt;Escogemos la que mejor sea nuestro caso y damos clic en &lt;b&gt;Implementar&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;En dado caso de que no tengamos instalado el Compact .Net Framework, Visual Studio instalar&amp;#225; todo lo que se requiera para tal efecto. Esto toma algo de tiempo (2 mins). Ya despu&amp;#233;s terminada la instalaci&amp;#243;n de componentes (si se requieren) y llevada a cabo la implementaci&amp;#243;n en nuestra PocketPC&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.netveloper.com/contenido2.aspx?IDC=300_0" target="_blank"&gt;Fuente&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-9016576805557524400?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/9016576805557524400/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=9016576805557524400&amp;isPopup=true" title="6 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/9016576805557524400?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/9016576805557524400?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2009/02/acceso-base-de-datos-de-sql-server-ce.html" title="Acceso a base de datos de SQL Server CE mediante dispositivos móviles" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>6</thr:total></entry><entry gd:etag="W/&quot;DEEFQ387eSp7ImA9WxVXE00.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-4138438976818183423</id><published>2009-02-10T20:56:00.001-02:00</published><updated>2009-02-10T20:56:52.101-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T20:56:52.101-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>Abrir la calculadora de Windows</title><content type="html">&lt;p&gt;Para abrir la calculadora de Windows desde nuestra aplicaci&amp;#243;n insertar el siguiente codigo en un boton o donde queramos:    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;pre style="width: 100%; height: 86px"&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; Proceso &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; Process()&lt;br /&gt;Proceso.StartInfo.FileName = &lt;span style="color: #b22222"&gt;&amp;quot;calc.exe&amp;quot;&lt;/span&gt;&lt;br /&gt;Proceso.StartInfo.Arguments = &amp;quot;&amp;quot;&lt;br /&gt;Proceso.Start()&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-4138438976818183423?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/4138438976818183423/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=4138438976818183423&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/4138438976818183423?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/4138438976818183423?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2009/02/abrir-la-calculadora-de-windows.html" title="Abrir la calculadora de Windows" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEMCRXwzeyp7ImA9WxVXE00.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-6895627518278213954</id><published>2009-02-10T20:54:00.001-02:00</published><updated>2009-02-10T20:54:24.283-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T20:54:24.283-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>ejecutar un paquete dts desde VB.Net</title><content type="html">&lt;p&gt;Para Ejecutar un paquete DTS desde Visual Basic es una tarea relativamente simple usando el modelo de objetos de DTS. Antes de comenzar a usar el modelo se debe agregar la referencia apropiada al proyecto. Desde el men&amp;#250; del proyecto seleccionar Referencias y elegir &lt;i&gt;&amp;quot;Microsoft DTSPackage Object Library&amp;quot;&lt;/i&gt;.     &lt;br /&gt;    &lt;br /&gt;Aqu&amp;#237; hay un ejemplo muy simple que utiliza seguridad integrada para cargar el paquete MyPackage y despu&amp;#233;s ejecutarlo:     &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;pre style="width: 100%; height: 154px"&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; SimpleExecutePackage()&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; oPKG &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; DTS.Package&lt;br /&gt;  oPKG.LoadFromSQLServer &lt;span style="color: #b22222"&gt;&amp;quot;MyServer&amp;quot;&lt;/span&gt;, , , _&lt;br /&gt;   DTSSQLStgFlag_UseTrustedConnection, , , , &lt;span style="color: #b22222"&gt;&amp;quot;MyPackage&amp;quot;&lt;/span&gt;&lt;br /&gt;  oPKG.Execute&lt;br /&gt;  oPKG.UnInitialize&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;Set&lt;/span&gt; oPKG = &lt;span style="color: #0000ff"&gt;Nothing&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Para evitar problemas con VB y DTS , ejecutarlo como apartment threaded. &lt;br /&gt;  &lt;br /&gt;Esto puede causar Excepciones de violaciones de acceso. La manera simple de evitar esto es: asegurarse que todos los pasos ejecuten en el hilo principal del paquete. Para hacer esto setear la propiedad ExecuteInMainThread seg&amp;#250;n lo ilustrado abajo:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 87px"&gt; &lt;span style="color: #008000"&gt;' Set Exec on Main Thread&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;For&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Each&lt;/span&gt; oStep &lt;span style="color: #0000ff"&gt;In&lt;/span&gt; oPKG.Steps&lt;br /&gt;  oStep.ExecuteInMainThread = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.netveloper.com/contenido2.aspx?IDC=192_0" target="_blank"&gt;Fuente&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-6895627518278213954?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/6895627518278213954/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=6895627518278213954&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/6895627518278213954?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/6895627518278213954?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2009/02/ejecutar-un-paquete-dts-desde-vbnet.html" title="ejecutar un paquete dts desde VB.Net" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04DQn0_fip7ImA9WxVXE00.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-26382835954002192</id><published>2009-02-10T20:46:00.001-02:00</published><updated>2009-02-10T20:46:13.346-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T20:46:13.346-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Basic" /><title>Crear controles en tiempo de ejecución</title><content type="html">&lt;p&gt;usando array de controles (todas las versiones de VB) y cre&amp;#225;ndolos din&amp;#225;micamente (s&amp;#243;lo VB6)    &lt;br /&gt;    &lt;br /&gt;&lt;b&gt;Forma v&amp;#225;lida para todas las versiones de Visual Basic      &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style="color: #008000"&gt;'------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' Ejemplo de crear array de controles en tiempo de ejecuci&amp;#243;n        (31/May/01)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' &amp;#169;Guillermo 'guille' Som, 2001&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Option&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Explicit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; Command1_Click()&lt;br /&gt;    &lt;span style="color: #008000"&gt;' Crear un nuevo control Label y un Textbox&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; i &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;'&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;' Los array de controles son &amp;quot;en el fondo&amp;quot; colecciones de base cero,&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;' el n&amp;#250;mero actual de controles nos dar&amp;#225; el &amp;#237;ndice del siguiente &amp;#237;ndice&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;' (siempre que se hayan a&amp;#241;adido de forma correlativa)&lt;/span&gt;&lt;br /&gt;    i = Label1.Count&lt;br /&gt;    &lt;span style="color: #008000"&gt;' cargamos el control&lt;/span&gt;&lt;br /&gt;    Load Label1(i)&lt;br /&gt;    &lt;span style="color: #008000"&gt;' le asignamos la posici&amp;#243;n, el caption y lo hacemos visible,&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;' ya que por defecto no est&amp;#225; visible&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;With&lt;/span&gt; Label1(i)&lt;br /&gt;        .Top = Label1(i - 1).Top + 390&lt;br /&gt;        .Caption = &lt;span style="color: #b22222"&gt;&amp;quot;Label1(&amp;quot;&lt;/span&gt; &amp;amp; i &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;&lt;br /&gt;        .Visible = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;With&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;' idem con los textboxes&lt;/span&gt;&lt;br /&gt;    i = Text1.Count&lt;br /&gt;    Load Text1(i)&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;With&lt;/span&gt; Text1(i)&lt;br /&gt;        .Top = Text1(i - 1).Top + 390&lt;br /&gt;        .Visible = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;With&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Pulsa F5 para ejecutar la aplicaci&amp;#243;n y pulsa en el command1, ver&amp;#225;s que se a&amp;#241;aden dos nuevos controles: una etiqueta y un textbox.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Para eliminar controles creados en tiempo de ejecuci&amp;#243;n, tendr&amp;#225;s que usar: &lt;b&gt;Unload Label1(indice)&lt;/b&gt;, al hacer esto tendr&amp;#225;s que tener en cuenta que esos &amp;#237;ndices &amp;quot;descargados&amp;quot; ya no est&amp;#225;n en el array de controles...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Veamos ahora la forma de crear controles con el m&amp;#233;todo ADD de la colecci&amp;#243;n controls.&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;A&amp;#241;ade una etiqueta (Label1) y un TextBox (Text1) y asignales el valor CERO a la propiedad Index, (no es que sea necesario hacer esto para crear controles din&amp;#225;micamente, pero se usa Label1(0) y Text1(0) para posicionar los controles a&amp;#241;adidos), a&amp;#241;ade un bot&amp;#243;n (Command1) y el siguiente c&amp;#243;digo:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #008000"&gt;'------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' Ejemplo de creaci&amp;#243;n din&amp;#225;mica de controles en tiempo de ejecuci&amp;#243;n  (31/May/01)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' usando Add de la colecci&amp;#243;n controls, s&amp;#243;lo VB6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' &amp;#169;Guillermo 'guille' Som, 2001&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Option&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Explicit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' Para que produzca eventos, haya que declararla con WithEvents&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;WithEvents&lt;/span&gt; lblDinamic &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; Label&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; nlblDinamic &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' Un array para contener los TextBoxes din&amp;#225;micos&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' (estos textboxes no producen eventos)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; txtDinamic() &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; TextBox&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; ntxtDinamic &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; Command1_Click()&lt;br /&gt;    &lt;span style="color: #008000"&gt;' Se pueden a&amp;#241;adir cuantas etiquetas queramos,&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;' pero el evento s&amp;#243;lo se producir&amp;#225; en la &amp;#250;ltima a&amp;#241;adida,&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;' ya que WithEvents no permite crear arrays&lt;/span&gt;&lt;br /&gt;    nlblDinamic = nlblDinamic + 1&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Set&lt;/span&gt; lblDinamic = Controls.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(&lt;span style="color: #b22222"&gt;&amp;quot;VB.Label&amp;quot;&lt;/span&gt;, &lt;span style="color: #b22222"&gt;&amp;quot;lblDinamic&amp;quot;&lt;/span&gt; &amp;amp; &lt;span style="color: #0000ff"&gt;CStr&lt;/span&gt;(nlblDinamic))&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;With&lt;/span&gt; lblDinamic&lt;br /&gt;        .Visible = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;        .Top = nlblDinamic * 390 + Label1(0).Top&lt;br /&gt;        .Left = Label1(0).Left&lt;br /&gt;        .Caption = .Name&lt;br /&gt;        .Height = 255&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;With&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;'&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;' Creamos un nuevo TextBox&lt;/span&gt;&lt;br /&gt;    ntxtDinamic = ntxtDinamic + 1&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;ReDim&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Preserve&lt;/span&gt; txtDinamic(ntxtDinamic)&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Set&lt;/span&gt; txtDinamic(ntxtDinamic) = Controls.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(&lt;span style="color: #b22222"&gt;&amp;quot;VB.TextBox&amp;quot;&lt;/span&gt;, &lt;span style="color: #b22222"&gt;&amp;quot;txtDinamic&amp;quot;&lt;/span&gt; &amp;amp; &lt;span style="color: #0000ff"&gt;CStr&lt;/span&gt;(ntxtDinamic))&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;With&lt;/span&gt; txtDinamic(ntxtDinamic)&lt;br /&gt;        .Visible = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;        .Top = lblDinamic.Top - 30&lt;br /&gt;        .Left = Text1(0).Left&lt;br /&gt;        .Text = .Name&lt;br /&gt;        .Height = 315&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;With&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; Form_Load()&lt;br /&gt;    &lt;span style="color: #008000"&gt;'&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;' Para crear un control (no se pueden crear arrays, creo)&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;' se a&amp;#241;ade a la colecci&amp;#243;n de controles&lt;/span&gt;&lt;br /&gt;    nlblDinamic = 1&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Set&lt;/span&gt; lblDinamic = Controls.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(&lt;span style="color: #b22222"&gt;&amp;quot;VB.Label&amp;quot;&lt;/span&gt;, &lt;span style="color: #b22222"&gt;&amp;quot;lblDinamic&amp;quot;&lt;/span&gt;)&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;With&lt;/span&gt; lblDinamic&lt;br /&gt;        .Visible = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;        .Top = Label1(0).Top + 390&lt;br /&gt;        .Left = Label1(0).Left&lt;br /&gt;        .Caption = .Name&lt;br /&gt;        .Height = 255&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;With&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;'&lt;/span&gt;&lt;br /&gt;    ntxtDinamic = -1&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; lblDinamic_Click()&lt;br /&gt;    &lt;span style="color: #008000"&gt;' s&amp;#243;lo se producir&amp;#225; el evento en la &amp;#250;ltima creada&lt;/span&gt;&lt;br /&gt;    lblStatus = &lt;span style="color: #b22222"&gt;&amp;quot;Has pulsado en: &amp;quot;&lt;/span&gt; &amp;amp; lblDinamic.Name&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Como notar&amp;#225;s es que hay que usar el &amp;quot;ClassID&amp;quot; del control a&amp;#241;adir y un nombre &amp;quot;&amp;#250;nico&amp;quot; para que cuando queramos podamos eliminarlo de la colecci&amp;#243;n, usando: &lt;b&gt;Controls.Remove &amp;quot;nombre&amp;quot;&lt;/b&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Es cuesti&amp;#243;n de que te leas la ayuda de Visual Basic para otros controles, ya que en algunos de ellos necesitas indicar la &amp;quot;licencia&amp;quot; para poder usarlo.&lt;/p&gt;&lt;br /&gt;Fuente: &lt;a href="http://www.elguille.info/vb/ejemplos/controlesdinamicos.htm" target="_blank"&gt;elguille&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-26382835954002192?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/26382835954002192/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=26382835954002192&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/26382835954002192?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/26382835954002192?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2009/02/crear-controles-en-tiempo-de-ejecucion.html" title="Crear controles en tiempo de ejecución" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0EBRHs4fCp7ImA9WxVXE00.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-6173936046558404555</id><published>2009-02-10T20:40:00.001-02:00</published><updated>2009-02-10T20:40:55.534-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T20:40:55.534-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Basic" /><title>ejecutar otros programas desde Visual Basic</title><content type="html">&lt;p&gt;A pesar de que nuestra aplicaci&amp;#243;n sea &amp;quot;autosuficiente&amp;quot;, puede que en alguna ocasi&amp;#243;n necesitemos usar utilidades externas, por ejemplo mostrar un fichero de texto en el bloc de notas. Cuando se nos de esa ocasi&amp;#243;n, podemos usar la funci&amp;#243;n SHELL del Visual Basic.    &lt;br /&gt;Esta funci&amp;#243;n, que tambi&amp;#233;n se puede usar como instrucci&amp;#243;n, recibe en el primer par&amp;#225;metro el programa y los par&amp;#225;metros que queremos ejecutar, en el segundo par&amp;#225;metro le indicaremos el estilo de la ventana.&lt;/p&gt;  &lt;p&gt;Hay que resaltar que esta funci&amp;#243;n se ejecuta de forma as&amp;#237;ncrona, es decir que no espera a que el programa ejecutado finalice, y por tanto sigue ejecutando lo que haya en la siguiente l&amp;#237;nea. Si quieres esperar a que el programa ejecutado finalice, tendr&amp;#225;s que echar mano del API de Windows, si quieres ver c&amp;#243;mo hacerlo, p&amp;#225;sate por la secci&amp;#243;n de trucos de mis p&amp;#225;ginas o busca este t&amp;#237;tulo: &lt;strong&gt;Tip 191: Shelling to Other Applications&lt;/strong&gt; en la Knowledge Base de Microsoft.&lt;/p&gt;  &lt;p&gt;Vamos a ver un ejemplo para llamar al bloc de notas y que nos muestre el contenido del fichero Autoexec.bat, una vez que se ha llamado al programa, nos mostrar&amp;#225; un mensaje; f&amp;#237;jate que este mensaje se mostrar&amp;#225; aunque el bloc de notas a&amp;#250;n no se haya cargado... en este ejemplo, el fichero no es tan grande como para que tarde, pero si fuese otro programa que tardase algo m&amp;#225;s en cargarse, se mostrar&amp;#237;a el mensaje antes de que el programa est&amp;#233; funcionando... Si no ves el mensaje, minimiza el bloc de notas y podr&amp;#225;s verlo. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre style="width: 100%; height: 182px"&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strFic &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strParam &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;strFic = &lt;span style="color: #b22222"&gt;&amp;quot;Notepad.exe&amp;quot;&lt;/span&gt;&lt;br /&gt;strParam = &lt;span style="color: #b22222"&gt;&amp;quot;C:\Autoexec.bat&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Shell strFic &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &amp;amp; strParam, vbNormalFocus&lt;br /&gt;&lt;br /&gt;MsgBox &lt;span style="color: #b22222"&gt;&amp;quot;Se est&amp;#225; ejecutando el Notepad&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Si el programa a ejecutar no existiera, se producir&amp;#237;a un error interceptable, por tanto, para prevenir estos casos, podr&amp;#237;amos a&amp;#241;adir unas l&amp;#237;neas m&amp;#225;s al ejemplo:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strFic &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; strParam &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' Esto es para el caso de que el programa a ejecutar no exista&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;On&lt;/span&gt; Local &lt;span style="color: #0000ff"&gt;Error&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Resume&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' Espero que no tengas un programa que se llame as&amp;#237;... 8-)&lt;/span&gt;&lt;br /&gt;strFic = &lt;span style="color: #b22222"&gt;&amp;quot;NoExiste.exe&amp;quot;&lt;/span&gt;&lt;br /&gt;strParam = &lt;span style="color: #b22222"&gt;&amp;quot;Dar&amp;#225;_Error&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Shell strFic &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &amp;amp; strParam, vbNormalFocus&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' Si se produce un error, lo comprobamos aqu&amp;#237;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;If&lt;/span&gt; Err &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt;&lt;br /&gt;    MsgBox &lt;span style="color: #b22222"&gt;&amp;quot;Se ha producido el siguiente error:&amp;quot;&lt;/span&gt; &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;           Err.Number &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot;, &amp;quot;&lt;/span&gt; &amp;amp; Err.Description &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;           &lt;span style="color: #b22222"&gt;&amp;quot;al intentar ejecutar:&amp;quot;&lt;/span&gt; &amp;amp; vbCrLf &amp;amp; _&lt;br /&gt;           strFic &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &amp;amp; strParam&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Else&lt;/span&gt;&lt;br /&gt;    MsgBox &lt;span style="color: #b22222"&gt;&amp;quot;Se est&amp;#225; ejecutando: &amp;quot;&lt;/span&gt; &amp;amp; strFic &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot; &amp;quot;&lt;/span&gt; &amp;amp; strParam&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' Nos aseguramos que el valor del error sea cero&lt;/span&gt;&lt;br /&gt;Err = 0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para probar el c&amp;#243;digo de ejemplo, crea un nuevo proyecto, a&amp;#241;ade un bot&amp;#243;n (Command1) y pega el c&amp;#243;digo en el evento Click; aunque tambi&amp;#233;n puedes ponerlo en el evento Form_Load, no es recomendable que te acostumbres a hacer las cosas en ese evento, ya que puede ralentizar la carga del formulario.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fuente: &lt;a href="http://www.elguille.info/vb/Tips_msdn/tips02.htm#990514" target="_blank"&gt;elguille&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-6173936046558404555?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/6173936046558404555/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=6173936046558404555&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/6173936046558404555?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/6173936046558404555?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2009/02/ejecutar-otros-programas-desde-visual.html" title="ejecutar otros programas desde Visual Basic" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0MEQXg-fip7ImA9WxVXE00.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-5225669836130908175</id><published>2009-02-10T20:36:00.001-02:00</published><updated>2009-02-10T20:36:40.656-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T20:36:40.656-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Basic" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Drag &amp; drop entre ListView y ListBox</title><content type="html">&lt;p&gt;Todo el proceso de esta prueba o ejemplo, consiste en lo siguiente:    &lt;br /&gt;Se llena el ListView con elementos (los nombres de los ficheros de un directorio en concreto),     &lt;br /&gt;se permite seleccionar un elemento del ListView y arrastrarlo al ListBox, en ese caso, se muestra el texto (el contenido de la propiedad Text del elemento del ListView, es decir, del ListViewItem soltado),     &lt;br /&gt;tambi&amp;#233;n se pueden seleccionar varios elementos del ListView y arrastrarlos hasta el ListBox, en ese caso, lo que se muestra es el texto de todos y cada uno de los elementos soltados.     &lt;br /&gt;Adem&amp;#225;s de estas opciones de arrastrar y soltar entre un control ListView y otro ListBox, se permite igualmente que se arrastren y suelten ficheros... si miras el c&amp;#243;digo de ejemplo lo tendr&amp;#225;s m&amp;#225;s claro.&lt;/p&gt;  &lt;p&gt;Para que todo esto sea posible necesitamos lo siguiente (en un proyecto del tipo Windows.Forms):    &lt;br /&gt;Un formulario con un control ListView llamado ListView1 y un control ListBox llamado ListBox1 y el c&amp;#243;digo (para &lt;a href="http://www.elguille.info/NET/dotnet/dragdrop_listview_listbox.aspx#VB"&gt;VB&lt;/a&gt; o &lt;a href="http://www.elguille.info/NET/dotnet/dragdrop_listview_listbox.aspx#cs"&gt;C#&lt;/a&gt;) que te muestro m&amp;#225;s abajo.&lt;/p&gt;  &lt;p&gt;Las asignaciones necesarias se hacen en ese mismo c&amp;#243;digo, a resaltar es que el control ListBox1 tenga un valor verdadero en la propiedad AllowDrop con idea de que permita que se haga Drag &amp;amp; Drop en ese control.&lt;/p&gt;  &lt;h5&gt;El c&amp;#243;digo&lt;/h5&gt;  &lt;h6&gt;&lt;a name="VB"&gt;Para Visual Basic:&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;/h6&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style="color: #008000"&gt;'------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' Hacer drag &amp;amp; drop entre dos controles de un formulario            (23/Ene/09)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;' &amp;#169;Guillermo 'guille' Som, 2009&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Option&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Strict&lt;/span&gt; &lt;span style="color: #0000ff"&gt;On&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Option&lt;/span&gt; Infer &lt;span style="color: #0000ff"&gt;On&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Imports&lt;/span&gt; Microsoft.VisualBasic&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Imports&lt;/span&gt; System&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Imports&lt;/span&gt; System.Windows.Forms&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Imports&lt;/span&gt; System.Text&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Class&lt;/span&gt; Form1&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; Form1_Load(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Object&lt;/span&gt;, _&lt;br /&gt;                           &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; e &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; EventArgs) _&lt;br /&gt;                           &lt;span style="color: #0000ff"&gt;Handles&lt;/span&gt; &lt;span style="color: #0000ff"&gt;MyBase&lt;/span&gt;.Load&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;With&lt;/span&gt; ListView1&lt;br /&gt;            .View = View.Details&lt;br /&gt;            .AllowDrop = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;            .Columns.Clear()&lt;br /&gt;            .Columns.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(&lt;span style="color: #b22222"&gt;&amp;quot;Fichero&amp;quot;&lt;/span&gt;, 300, HorizontalAlignment.Left)&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;With&lt;/span&gt;&lt;br /&gt;        ListBox1.AllowDrop = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        leerDir(&lt;span style="color: #b22222"&gt;&amp;quot;E:\tmp&amp;quot;&lt;/span&gt;)&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; leerDir(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; path &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;)&lt;br /&gt;        ListView1.Items.Clear()&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; fics() &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt; = System.IO.Directory.GetFiles(path)&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;For&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Each&lt;/span&gt; s &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt; &lt;span style="color: #0000ff"&gt;In&lt;/span&gt; fics&lt;br /&gt;            ListView1.Items.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(s)&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; ListBox1_DragDrop(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Object&lt;/span&gt;, _&lt;br /&gt;                                  &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; e &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; DragEventArgs) _&lt;br /&gt;                                  &lt;span style="color: #0000ff"&gt;Handles&lt;/span&gt; ListBox1.DragDrop&lt;br /&gt;        ListBox1.Items.Clear()&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;If&lt;/span&gt; e.Data.GetDataPresent( _&lt;br /&gt;                &lt;span style="color: #b22222"&gt;&amp;quot;System.Windows.Forms.ListView+SelectedListViewItemCollection&amp;quot;&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; datos = &lt;span style="color: #0000ff"&gt;CType&lt;/span&gt;(e.Data.GetData(&lt;span style="color: #0000ff"&gt;GetType&lt;/span&gt;(ListView.SelectedListViewItemCollection)),  _&lt;br /&gt;                              ListView.SelectedListViewItemCollection)&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;For&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Each&lt;/span&gt; d &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; ListViewItem &lt;span style="color: #0000ff"&gt;In&lt;/span&gt; datos&lt;br /&gt;                ListBox1.Items.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(d.Text)&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;ElseIf&lt;/span&gt; e.Data.GetDataPresent(&lt;span style="color: #b22222"&gt;&amp;quot;System.Windows.Forms.ListViewItem&amp;quot;&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; datos = &lt;span style="color: #0000ff"&gt;CType&lt;/span&gt;(e.Data.GetData(&lt;span style="color: #0000ff"&gt;GetType&lt;/span&gt;(ListViewItem)), ListViewItem)&lt;br /&gt;            ListBox1.Items.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(datos.Text)&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;ElseIf&lt;/span&gt; e.Data.GetDataPresent(&lt;span style="color: #b22222"&gt;&amp;quot;FileDrop&amp;quot;&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; datos = &lt;span style="color: #0000ff"&gt;CType&lt;/span&gt;(e.Data.GetData(&lt;span style="color: #b22222"&gt;&amp;quot;FileDrop&amp;quot;&lt;/span&gt;), &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;())&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;For&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Each&lt;/span&gt; d &lt;span style="color: #0000ff"&gt;In&lt;/span&gt; datos&lt;br /&gt;                ListBox1.Items.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(d.ToString)&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;Else&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;For&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Each&lt;/span&gt; d &lt;span style="color: #0000ff"&gt;In&lt;/span&gt; e.Data.GetFormats&lt;br /&gt;                ListBox1.Items.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(d.ToString)&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; ListBox1_DragEnter(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Object&lt;/span&gt;, _&lt;br /&gt;                                   &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; e &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; DragEventArgs) _&lt;br /&gt;                                   &lt;span style="color: #0000ff"&gt;Handles&lt;/span&gt; ListBox1.DragEnter&lt;br /&gt;        &lt;span style="color: #008000"&gt;'TODO: hacer las comprobaciones de cu&amp;#225;ndo debe permitirse arrastrar y soltar&lt;/span&gt;&lt;br /&gt;        e.Effect = DragDropEffects.Copy&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; ListView1_ItemDrag(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Object&lt;/span&gt;, _&lt;br /&gt;                                   &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; e &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; ItemDragEventArgs) _&lt;br /&gt;                                   &lt;span style="color: #0000ff"&gt;Handles&lt;/span&gt; ListView1.ItemDrag&lt;br /&gt;        ListView1.DoDragDrop(ListView1.SelectedItems, DragDropEffects.Copy)&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Class&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h6&gt;&lt;a name="cs"&gt;Para C#:&lt;/a&gt;&lt;/h6&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #008000"&gt;//-----------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;// Hacer drag &amp;amp; drop entre dos controles de un formulario           (23/Ene/09)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;// &amp;#169;Guillermo 'guille' Som, 2009&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;//-----------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Form1 : Form&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Form1()&lt;br /&gt;    {&lt;br /&gt;        InitializeComponent();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Form1_Load(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        ListView1.View = View.Details;&lt;br /&gt;        ListView1.AllowDrop = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;        ListView1.Columns.Clear();&lt;br /&gt;        ListView1.Columns.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(&lt;span style="color: #b22222"&gt;&amp;quot;Fichero&amp;quot;&lt;/span&gt;, 360, HorizontalAlignment.Left);&lt;br /&gt;        ListBox1.AllowDrop = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        leerDir(@&lt;span style="color: #b22222"&gt;&amp;quot;E:\tmp&amp;quot;&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; leerDir(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; path)&lt;br /&gt;    {&lt;br /&gt;        ListView1.Items.Clear();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] fics = System.IO.Directory.GetFiles(path);&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; s &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; fics)&lt;br /&gt;        {&lt;br /&gt;            ListView1.Items.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(s);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ListBox1_DragDrop(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, DragEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        ListBox1.Items.Clear();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (e.Data.GetDataPresent(&lt;span style="color: #b22222"&gt;&amp;quot;System.Windows.Forms.ListView+SelectedListViewItemCollection&amp;quot;&lt;/span&gt;))&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; datos = ((ListView.SelectedListViewItemCollection)&lt;br /&gt;                            e.Data.GetData(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ListView.SelectedListViewItemCollection)));&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (ListViewItem d &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; datos)&lt;br /&gt;            {&lt;br /&gt;                ListBox1.Items.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(d.Text);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (e.Data.GetDataPresent(&lt;span style="color: #b22222"&gt;&amp;quot;System.Windows.Forms.ListViewItem&amp;quot;&lt;/span&gt;))&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; datos = ((ListViewItem)e.Data.GetData(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ListViewItem)));&lt;br /&gt;            ListBox1.Items.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(datos.Text);&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (e.Data.GetDataPresent(&lt;span style="color: #b22222"&gt;&amp;quot;FileDrop&amp;quot;&lt;/span&gt;))&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; datos = ((&lt;span style="color: #0000ff"&gt;String&lt;/span&gt;[])e.Data.GetData(&lt;span style="color: #b22222"&gt;&amp;quot;FileDrop&amp;quot;&lt;/span&gt;));&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; d &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; datos)&lt;br /&gt;            {&lt;br /&gt;                ListBox1.Items.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(d.ToString());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; d &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; e.Data.GetFormats())&lt;br /&gt;            {&lt;br /&gt;                ListBox1.Items.&lt;span style="color: #0000ff"&gt;Add&lt;/span&gt;(d.ToString());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ListBox1_DragEnter(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, DragEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #008000"&gt;//TODO: hacer las comprobaciones de cu&amp;#225;ndo debe permitirse arrastrar y soltar&lt;/span&gt;&lt;br /&gt;        e.Effect = DragDropEffects.Copy;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ListView1_ItemDrag(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, ItemDragEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        ListView1.DoDragDrop(ListView1.SelectedItems, DragDropEffects.Copy);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Fuente: &lt;a href="http://www.elguille.info" target="_blank"&gt;elguille&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-5225669836130908175?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/5225669836130908175/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=5225669836130908175&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/5225669836130908175?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/5225669836130908175?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2009/02/drag-drop-entre-listview-y-listbox.html" title="Drag &amp;amp; drop entre ListView y ListBox" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkYHQns8fSp7ImA9WxVXEkQ.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-8108028915379608617</id><published>2009-02-10T17:28:00.001-02:00</published><updated>2009-02-10T17:28:53.575-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T17:28:53.575-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><category scheme="http://www.blogger.com/atom/ns#" term="AJAX" /><title>MyWex Portfolio con Ajax y Php</title><content type="html">&lt;p&gt;MyWex es un excelente script desarrollado con ajax y php la idea es mostrar de forma elegante el portfolio de desarrollos, tambi&amp;#233;n puede ser usado como galer&amp;#237;a de im&amp;#225;genes, u otros. &lt;/p&gt;  &lt;p&gt;El nombre? MyWex (Mis+Web+Ajax) algo extra&amp;#241;o pero viene de la idea de programar una Portafolio de web con una librer&amp;#237;a ajax.&lt;/p&gt;  &lt;p&gt;MyWex lee un archivo xml bastante sencillo donde dejas el titulo, la url de la imagen y la url del sitio, este se procesa v&amp;#237;a php y crea MyWex, con peque&amp;#241;as miniaturas que al pasar sobre ellas hace un zoom bastante elegante, y al dar clic entra a la pagina usando la librer&amp;#237;a ajax shadowbox.&lt;/p&gt;  &lt;p&gt;En conclusi&amp;#243;n es un script bastante liviano y muy &amp;#250;til para adornar nuestro portafolio adem&amp;#225;s de ser muy sencillo actualizarlo.   &lt;br /&gt;MyWex es totalmente gratis solo se pide la menci&amp;#243;n donde se instale.&lt;/p&gt;  &lt;p&gt;Datos:   &lt;br /&gt;Bd.xml : archivo donde debes ingresar la informaci&amp;#243;n de tu portafolio&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.teayudo.cl/ejemplos/mywex/mywex_beta1.0.rar" target="_blank"&gt;Descargar&lt;/a&gt; | &lt;a href="http://www.teayudo.cl/2008/02/mywex-portafolio-ajax/" target="_blank"&gt;Sitio web de Referencia&lt;/a&gt; | &lt;a href="http://munivina.eof.cl/imagennoticia/" target="_blank"&gt;Ejemplo de MyWex en Funcionamiento&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-8108028915379608617?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/8108028915379608617/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=8108028915379608617&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/8108028915379608617?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/8108028915379608617?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2009/02/mywex-portfolio-con-ajax-y-php.html" title="MyWex Portfolio con Ajax y Php" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkINRn06cSp7ImA9WxdbFEQ.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-8623406113844134238</id><published>2008-08-11T20:49:00.001-03:00</published><updated>2008-08-11T20:49:57.319-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-11T20:49:57.319-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Imagen" /><category scheme="http://www.blogger.com/atom/ns#" term="JAVASCRIPT" /><title>JavaScript - Posición de una imagen u objeto en la ventana del navegador.</title><content type="html">&lt;p&gt;&lt;strong&gt;Este sin duda en un script que servir&amp;#225; como herramienta para cientos de ejemplos JavaScript que requieran saber la posici&amp;#243;n de un objeto en la ventana del navegador. El mismo nos permite saber la posici&amp;#243;n izquierda (left) y superior (top) del objeto (capa, layer, imagen, tabla, etc.) con respecto al margen izquierdo/superior de la ventana.      &lt;br /&gt;      &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;pre&gt;&amp;lt;HTML&amp;gt;  &lt;br /&gt;&amp;lt;HEAD&amp;gt;  &lt;br /&gt;   &lt;br /&gt;&amp;lt;script language=&lt;span style="color: #b22222"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;&amp;gt;  &lt;br /&gt;   &lt;br /&gt;this.findLeftObj = &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(obj) {  &lt;br /&gt;var curleft = 0;  &lt;br /&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (obj.offsetParent) {  &lt;br /&gt;   &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; (obj.offsetParent) {  &lt;br /&gt;    curleft += obj.offsetLeft  &lt;br /&gt;    obj = obj.offsetParent;  &lt;br /&gt;    }  &lt;br /&gt;}  &lt;br /&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {  &lt;br /&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(obj.x) {  &lt;br /&gt;   curleft += obj.x;  &lt;br /&gt;  }  &lt;br /&gt;}  &lt;br /&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;(curleft);  &lt;br /&gt;}  &lt;br /&gt;           &lt;br /&gt;this.findTopObj = &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(obj) {  &lt;br /&gt;var curtop = 0;  &lt;br /&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (obj.offsetParent) {  &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; (obj.offsetParent) {  &lt;br /&gt;        curtop += obj.offsetTop  &lt;br /&gt;        obj = obj.offsetParent;  &lt;br /&gt;    }  &lt;br /&gt;}  &lt;br /&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {  &lt;br /&gt;  &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (obj.y) {  &lt;br /&gt;    curtop += obj.y;  &lt;br /&gt;   }  &lt;br /&gt;}  &lt;br /&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;(curtop);  &lt;br /&gt;}  &lt;br /&gt;   &lt;br /&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt; posicionImagen(imagen) {  &lt;br /&gt;   &lt;br /&gt;    posXImagen = findLeftObj(imagen);  &lt;br /&gt;    posYImagen = findTopObj(imagen);  &lt;br /&gt;       &lt;br /&gt;    alert(&lt;span style="color: #008000"&gt;'La imagen est&amp;#225; en la posici&amp;#243;n:\nLeft(X) ' + posXImagen +   &lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;'\nTop(Y) ' + posYImagen)  &lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;} // Fin de la funci&amp;#243;n posicionImagen()  &lt;br /&gt;   &lt;br /&gt;&amp;lt;/script&amp;gt;  &lt;br /&gt;   &lt;br /&gt;&amp;lt;/HEAD&amp;gt;  &lt;br /&gt;   &lt;br /&gt;&amp;lt;BODY&amp;gt;  &lt;br /&gt;   &lt;br /&gt;&amp;lt;IMG src=&lt;span style="color: #b22222"&gt;&amp;quot;0.jpg&amp;quot;&lt;/span&gt; onmouseover=&lt;span style="color: #b22222"&gt;&amp;quot;posicionImagen(this)&amp;quot;&lt;/span&gt; /&amp;gt;  &lt;br /&gt;&amp;lt;IMG src=&lt;span style="color: #b22222"&gt;&amp;quot;1.jpg&amp;quot;&lt;/span&gt; onmouseover=&lt;span style="color: #b22222"&gt;&amp;quot;posicionImagen(this)&amp;quot;&lt;/span&gt; /&amp;gt;  &lt;br /&gt;&amp;lt;IMG src=&lt;span style="color: #b22222"&gt;&amp;quot;2.jpg&amp;quot;&lt;/span&gt; onmouseover=&lt;span style="color: #b22222"&gt;&amp;quot;posicionImagen(this)&amp;quot;&lt;/span&gt; /&amp;gt;  &lt;br /&gt;   &lt;br /&gt;&amp;lt;DIV style=&lt;span style="color: #b22222"&gt;&amp;quot;background-color:#003399; color:#CCCCCC; width:200px; &amp;quot;&lt;/span&gt;   &lt;br /&gt;onmouseover=&lt;span style="color: #b22222"&gt;&amp;quot;posicionImagen(this)&amp;quot;&lt;/span&gt;&amp;gt;  &lt;br /&gt;Tambi&amp;#233;n podemos saber la posici&amp;#243;n de una capa o de cualquier objeto cargado en la p&amp;#225;gina.  &lt;br /&gt;&amp;lt;/DIV&amp;gt;  &lt;br /&gt;   &lt;br /&gt;&amp;lt;/BODY&amp;gt;  &lt;br /&gt;&amp;lt;/HTML&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codigojavascript.com" target="_blank"&gt;Fuente&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-8623406113844134238?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/8623406113844134238/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=8623406113844134238&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/8623406113844134238?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/8623406113844134238?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/javascript-posicin-de-una-imagen-u.html" title="JavaScript - Posición de una imagen u objeto en la ventana del navegador." /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUUBQn8yfip7ImA9WxdbEUU.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-2182231540141915643</id><published>2008-08-08T06:20:00.001-03:00</published><updated>2008-08-08T06:20:53.196-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-08T06:20:53.196-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySql" /><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><title>Php - Mostrar una imagen desde Campo blob mysql</title><content type="html">&lt;p&gt;Para que el script se muestre como una imagen necesitamos usar la cabecera &lt;code&gt;Content-type&lt;/code&gt; y poner el tipo &lt;acronym&gt;MIME&lt;/acronym&gt; de la imagen que recuperaremos de la tabla, esto es:&lt;/p&gt;  &lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;php:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Donde &lt;code&gt;image/gif&lt;/code&gt; es el el tipo &lt;acronym&gt;MIME&lt;/acronym&gt; para una imagen &lt;acronym&gt;GIF&lt;/acronym&gt;.&lt;/p&gt;  &lt;h4&gt;Desarrollo del Script&lt;/h4&gt;  &lt;p&gt;Las im&amp;#225;genes han sido guardadas en la tabla y tienen un &amp;#250;nico identificador representado por el campo &lt;var&gt;idfoto&lt;/var&gt;, la imagen original se guarda en el campo &lt;var&gt;foto&lt;/var&gt;, la miniatura en el campo &lt;var&gt;thumb&lt;/var&gt; y el tipo &lt;acronym&gt;MIME&lt;/acronym&gt; en el campo &lt;var&gt;mime&lt;/var&gt;, como podemos ver en la estructura de la tabla: &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;sql:      &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;pre style="width: 100%; height: 156px"&gt;CREATE TABLE `tabla` (&lt;br /&gt;&lt;p&gt;  `idfoto` int(3) NOT NULL AUTO_INCREMENT,&lt;br /&gt;  `nombre` varchar(255) NOT NULL DEFAULT '',&lt;br /&gt;  `foto` blob NOT NULL,&lt;br /&gt;  `thumb` blob NOT NULL,&lt;br /&gt;  `mime` varchar(40) NOT NULL DEFAULT '',&lt;br /&gt;  PRIMARY KEY  (`idfoto`)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;) ;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Necesitamos enviar par&amp;#225;metros al script para indicarle el id de la imagen que queremos ver, y tambi&amp;#233;n si queremos ver la imagen original o su miniatura, suponiendo que el archivo que contiene al script se llame &lt;q&gt;verblob.php&lt;/q&gt;:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;html:&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Donde el par&amp;#225;metro &lt;var&gt;idfoto&lt;/var&gt; indica el id de la imagen, y el parametro &lt;var&gt;tam&lt;/var&gt; indica si va a mostrar la imagen original o la miniatura (1 para mostrar la imagen original y 2 para mostrar la miniatura). El script trabaja de la siguiente manera:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;php:&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;// Par&amp;#195;&amp;#161;metros para recuperar la imagen&lt;br /&gt;# Recuperamos el par&amp;#195;&amp;#161;metro GET con el id &amp;#195;&amp;#186;nico de la foto que queremos mostrar&lt;br /&gt;&lt;p&gt;$idfoto = (&lt;a href="http://www.php.net/isset"&gt;isset&lt;/a&gt;($_GET[&amp;quot;idfoto&amp;quot;])) ? $_GET[&amp;quot;idfoto&amp;quot;] : &lt;a href="http://www.php.net/exit"&gt;exit&lt;/a&gt;();&lt;br /&gt;# Recuperamos el par&amp;#195;&amp;#161;metro GET para elegir entre la miniatura o la foto real&lt;/p&gt;&lt;br /&gt;&lt;p&gt;$tam = (&lt;a href="http://www.php.net/isset"&gt;isset&lt;/a&gt;($_GET[&amp;quot;tam&amp;quot;])) ? $_GET[&amp;quot;tam&amp;quot;] : 1;&lt;br /&gt;// Escojemos la foto real o la miniatura seg&amp;#195;&amp;#186;n la variable $tam&lt;/p&gt;&lt;br /&gt;&lt;p&gt;switch($tam) {&lt;br /&gt;	case &amp;quot;1&amp;quot;:&lt;br /&gt;		$campo = &amp;quot;foto&amp;quot;;break;;&lt;br /&gt;	case &amp;quot;2&amp;quot;:&lt;br /&gt;		$campo = &amp;quot;thumb&amp;quot;;break;;&lt;br /&gt;	default:&lt;br /&gt;		$campo = &amp;quot;foto&amp;quot;;break;;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;}&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ya sabiendo el id de la imagen que vamos a mostrar, hacemos la consulta a la base de datos:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;php:&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;// Recuperamos la foto de la tabla&lt;br /&gt;$sql = &amp;quot;SELECT $campo, mime&lt;br /&gt;		FROM tabla &lt;br /&gt;		WHERE idfoto = $idfoto&amp;quot;;&lt;br /&gt;# Conexi&amp;#195;&amp;#179;n a la base de datos&lt;br /&gt;$link = &lt;a href="http://www.php.net/mysql_connect"&gt;mysql_connect&lt;/a&gt;(DBHOST, DBUSER, DBPASSWORD) or &lt;a href="http://www.php.net/die"&gt;die&lt;/a&gt;(&lt;a href="http://www.php.net/mysql_error"&gt;mysql_error&lt;/a&gt;($link));;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.php.net/mysql_select_db"&gt;mysql_select_db&lt;/a&gt;(DBNAME, $link) or &lt;a href="http://www.php.net/die"&gt;die&lt;/a&gt;(&lt;a href="http://www.php.net/mysql_error"&gt;mysql_error&lt;/a&gt;($link));&lt;br /&gt;$conn = &lt;a href="http://www.php.net/mysql_query"&gt;mysql_query&lt;/a&gt;($sql, $link) or &lt;a href="http://www.php.net/die"&gt;die&lt;/a&gt;(&lt;a href="http://www.php.net/mysql_error"&gt;mysql_error&lt;/a&gt;($link));&lt;/p&gt;&lt;br /&gt;&lt;p&gt;$datos = &lt;a href="http://www.php.net/mysql_fetch_array"&gt;mysql_fetch_array&lt;/a&gt;($conn);&lt;br /&gt;// La imagen&lt;br /&gt;$imagen = $datos[0];&lt;br /&gt;// El mime type de la imagen&lt;br /&gt;$mime = $datos[1];&lt;/p&gt;&lt;br /&gt;&lt;p&gt;// Gracias a esta cabecera, podemos ver la imagen &lt;br /&gt;// que acabamos de recuperar del campo blob&lt;br /&gt;&lt;a href="http://www.php.net/header"&gt;header&lt;/a&gt;(&amp;quot;Content-Type: $mime&amp;quot;);&lt;br /&gt;// Muestra la imagen&lt;br /&gt;&lt;a href="http://www.php.net/echo"&gt;echo&lt;/a&gt; $imagen;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Conclusiones&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Los campos blob no solo nos permiten guardar im&amp;#225;genes, sino una gran variedad de datos, para mostrarlos solo hay que tener en cuenta el tipo &lt;acronym&gt;MIME&lt;/acronym&gt; del archivo que hemos guardado, y al momento de recuperarlo s&amp;#243;lamente utilizamos &lt;code&gt;header&lt;/code&gt; con el &lt;code&gt;Content-Type&lt;/code&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.espacioblog.com" target="_blank"&gt;Fuente&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-2182231540141915643?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/2182231540141915643/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=2182231540141915643&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/2182231540141915643?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/2182231540141915643?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/php-mostrar-una-imagen-desde-campo-blob.html" title="Php - Mostrar una imagen desde Campo blob mysql" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DEQMRXY7fSp7ImA9WxdbEUU.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-5341592753282694956</id><published>2008-08-08T06:06:00.001-03:00</published><updated>2008-08-08T06:06:24.805-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-08T06:06:24.805-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JAVASCRIPT" /><title>Javascript - Efecto Scrool en Barra de Estado y Título</title><content type="html">&lt;p&gt;&lt;strong&gt;Ejemplo JavaScript para mostrar un mensaje de texto con efecto de Scroll en la Barra de Estado y T&amp;#237;tulo del navegador.&lt;/strong&gt;&lt;/p&gt; Descripci&amp;#243;n del ejemplo JavaScript   &lt;p&gt;El Script utiliza una funci&amp;#243;n llamada &lt;b&gt;efectoBarra()&lt;/b&gt; la cual es llamada desde el evento &lt;code&gt;onLoad&lt;/code&gt; de la etiqueta &lt;code&gt;&amp;lt;BODY&amp;gt;&lt;/code&gt;. Al ejecutarse la funci&amp;#243;n del JavaScript se define autom&amp;#225;ticamente el texto que se va a mostrar en la barra de estado y t&amp;#237;tulo del navegador. Esto lo hacemos d&amp;#225;ndole al objeto &lt;b&gt;status&lt;/b&gt; el siguiente valor: &lt;/p&gt;  &lt;p&gt;&lt;b&gt;BarraEstado.substring(cuenta,BarraEstado.length)+BarraEstado.substring(0,cuenta)&lt;/b&gt;     &lt;br /&gt;El primer m&amp;#233;todo &lt;b&gt;substring()&lt;/b&gt; muestra el texto definido en la variable &lt;var&gt;BarraEstado&lt;/var&gt; desde la posici&amp;#243;n 0 (primer valor de la variable &lt;var&gt;cuenta&lt;/var&gt;) hasta el final de la cadena de texto. El segundo m&amp;#233;todo &lt;b&gt;substring()&lt;/b&gt; muestra el texto desde el primer caracter (cero) hasta la posici&amp;#243;n que devuelva &lt;var&gt;cuenta&lt;/var&gt;. &lt;/p&gt;  &lt;p&gt;Para la primera ejecuci&amp;#243;n del Script se mostrar&amp;#225; el texto tal cual se defini&amp;#243; en la variable. La condici&amp;#243;n &lt;b&gt;if&lt;/b&gt; nos permite sumar una unidad al valor actual de &lt;var&gt;cuenta&lt;/var&gt; solo si este valor es menor que la cantidad de caracteres que contiene el mensaje de texto a mostrar en ambas barras del navegador. Mientras esta condici&amp;#243;n sea verdadera se incrementa el valor de esta variable y se ejecuta nuevamente la funci&amp;#243;n del JavaScript al cabo de 200 milisegundos. &lt;/p&gt;  &lt;p&gt;La segunda vez que se ejecuta la funci&amp;#243;n, &lt;var&gt;cuenta&lt;/var&gt; vale 1 (uno), por lo que se mostrar&amp;#225; el texto desde el segundo caracter hasta el final de la cadena, m&amp;#225;s el texto desde el primer caracter hasta el caracter 1. Esta operaci&amp;#243;n es la que aplica el efecto de Scroll al texto. Cuando la condici&amp;#243;n devuelve como valor &lt;b&gt;false&lt;/b&gt; se ejecuta &lt;b&gt;else&lt;/b&gt;. En este caso se vuelve a dar a la variable &lt;b&gt;cuenta&lt;/b&gt; el valor 0 (cero). De esta manera se ejecuta nuevamente la funci&amp;#243;n como la primera vez que cargamos la p&amp;#225;gina.     &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;pre&gt;&amp;lt;HTML&amp;gt;  &lt;br /&gt;&amp;lt;HEAD&amp;gt;  &lt;br /&gt;  &lt;br /&gt;&amp;lt;script language=&lt;span style="color: #b22222"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;&amp;gt;  &lt;br /&gt; &lt;br /&gt;/* Definimos el texto a mostrar en la barra de estado y t&amp;#237;tulo &lt;br /&gt;Debemos escribir un espacio antes y despu&amp;#233;s de la cadena */  &lt;br /&gt;var BarraEstado = &lt;span style="color: #b22222"&gt;&amp;quot; C&amp;#243;digo JavaScript. Barra Estado y T&amp;#237;tulo. &amp;quot;&lt;/span&gt;  &lt;br /&gt;  &lt;br /&gt;var cuenta = 0  &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt; efectoBarra() {  &lt;br /&gt;&lt;br /&gt;// Escribe el mensaje con efecto de Scroll en ambas barras del navegador  &lt;br /&gt;document.title = BarraEstado.substring(cuenta,BarraEstado.length)+BarraEstado.substring(0,cuenta);  &lt;br /&gt;window.status = document.title  &lt;br /&gt;&lt;br /&gt;/* Se ejecuta si el valor de cuenta es menor que la cantidad de caracteres  &lt;br /&gt;que tiene el mensaje */  &lt;br /&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (cuenta &amp;lt; BarraEstado.length) {  &lt;br /&gt;// Suma 1 unidad a la variable  &lt;br /&gt;cuenta++  &lt;br /&gt;}  &lt;br /&gt;/* Si la condici&amp;#243;n anterior es falsa se ejecuta &lt;br /&gt;y cuenta vuelve a valer 0 */  &lt;br /&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {  &lt;br /&gt;cuenta = 0  &lt;br /&gt;}  &lt;br /&gt;&lt;br /&gt;// Ejecuta la funci&amp;#243;n del JavaScript cada 200 milisegundos  &lt;br /&gt;setTimeout(&lt;span style="color: #b22222"&gt;&amp;quot;efectoBarra()&amp;quot;&lt;/span&gt;,200);  &lt;br /&gt;&lt;br /&gt;} // Fin de la funci&amp;#243;n efectoBarra()  &lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;  &lt;br /&gt;&lt;br /&gt;&amp;lt;/HEAD&amp;gt;  &lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Ejecuta la funci&amp;#243;n a la carga de la p&amp;#225;gina --&amp;gt;  &lt;br /&gt;&amp;lt;BODY onload=&lt;span style="color: #b22222"&gt;&amp;quot;efectoBarra()&amp;quot;&lt;/span&gt;&amp;gt;  &lt;br /&gt;&lt;br /&gt;&amp;lt;/BODY&amp;gt;  &lt;br /&gt;&amp;lt;/HTML&amp;gt;  &amp;lt;/pre&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://www.codigojavascript.com" target="_blank"&gt;Fuente&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-5341592753282694956?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/5341592753282694956/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=5341592753282694956&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/5341592753282694956?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/5341592753282694956?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/javascript-efecto-scrool-en-barra-de.html" title="Javascript - Efecto Scrool en Barra de Estado y Título" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CUUBQHg_eip7ImA9WxdbEEw.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-3243520430516051945</id><published>2008-08-06T06:00:00.001-03:00</published><updated>2008-08-06T06:00:51.642-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-06T06:00:51.642-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><title>Paginar los resultados de una consulta en PHP</title><content type="html">&lt;p&gt;Realizar una consulta a una base de datos MySQL desde PHP y presentarla es sencillo. El problema viene cuando debemos presentar 3000 registros y nos gustar&amp;#237;a que el usuario no esperara hasta Nochebuena. En ese caso, se presenta un n&amp;#250;mero menor de registros en la p&amp;#225;gina (diez, viente) y se a&amp;#241;aden enlaces para poder acceder a los dem&amp;#225;s. A esto se le llama paginaci&amp;#243;n.&lt;/p&gt;  &lt;p&gt;&lt;a name="php_paginar_origen"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Mostrar los registros adecuados&lt;/h4&gt;  &lt;p&gt;Para poder paginar debemos recibir en la p&amp;#225;gina, adem&amp;#225;s de los par&amp;#225;metros que reciba normalmente, uno que indique la p&amp;#225;gina de resultados que deseamos obtener. Por defecto ser&amp;#225; 1 y lo llamaremos &lt;tt&gt;pag&lt;/tt&gt;. Supongamos que tenemos una p&amp;#225;gina que devuelve el nombre de todos los clientes de una empresa. La llamaremos, en un alarde de originalidad, &lt;tt&gt;clientes.php&lt;/tt&gt;. Ser&amp;#237;a algo as&amp;#237;:&lt;/p&gt;  &lt;br /&gt;  &lt;pre&gt;&amp;lt;html&amp;gt; &lt;br /&gt;&amp;lt;body&amp;gt; &lt;br /&gt;&amp;lt;?php &lt;br /&gt;$link = mysql_connect(&lt;span style="color: #b22222"&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;, &lt;span style="color: #b22222"&gt;&amp;quot;nobody&amp;quot;&lt;/span&gt;); &lt;br /&gt;mysql_select_db(&lt;span style="color: #b22222"&gt;&amp;quot;mydb&amp;quot;&lt;/span&gt;, $link); &lt;br /&gt;$result = mysql_query(&lt;span style="color: #b22222"&gt;&amp;quot;SELECT nombre, apellidos FROM clientes&amp;quot;&lt;/span&gt;, $link); &lt;br /&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (mysql_num_rows($result)){ &lt;br /&gt;  echo &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;table border = '1'&amp;gt; \n&amp;quot;&lt;/span&gt;; &lt;br /&gt;  echo &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Nombre&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Apellidos&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; \n&amp;quot;&lt;/span&gt;; &lt;br /&gt;  &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; ($row = @mysql_fetch_array($result)) { &lt;br /&gt;    echo &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;quot;&lt;/span&gt;.$row[&lt;span style="color: #b22222"&gt;&amp;quot;nombre&amp;quot;&lt;/span&gt;].&lt;br /&gt;      &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;quot;&lt;/span&gt;.$row[&lt;span style="color: #b22222"&gt;&amp;quot;email&amp;quot;&lt;/span&gt;].&lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; \n&amp;quot;&lt;/span&gt;; &lt;br /&gt;  }&lt;br /&gt;  echo &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;/table&amp;gt; \n&amp;quot;&lt;/span&gt;; &lt;br /&gt;}&lt;br /&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;  echo &lt;span style="color: #b22222"&gt;&amp;quot;&amp;#161; No se ha encontrado ning&amp;#250;n registro !&amp;quot;&lt;/span&gt;;&lt;br /&gt;?&amp;gt; &lt;br /&gt;&amp;lt;/body&amp;gt; &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para poder soportar paginaci&amp;#243;n debemos, primero, decidir cuantos registros presentamos por p&amp;#225;gina (por ejemplo, 10) y recibir el n&amp;#250;mero de p&amp;#225;gina que debemos presentar. Hay dos maneras de obtener el n&amp;#250;mero de registros totales y los registros que necesitamos para presentar la p&amp;#225;gina. Nosotros utilizaremos dos consultas. En la primera obtendremos el total de registros de la tabla y, en la segunda, cogeremos s&amp;#243;lo los registros que necesitamos haciendo uso de &lt;tt&gt;LIMIT&lt;/tt&gt;. Sustituiremos el c&amp;#243;digo de la consulta por lo siguiente: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 135px"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!isset($pag)) $pag = 1; // Por defecto, pagina 1&lt;br /&gt;$result = mysql_query(&lt;span style="color: #b22222"&gt;&amp;quot;SELECT COUNT(*) FROM clientes&amp;quot;&lt;/span&gt;, $link); &lt;br /&gt;list($total) = mysql_fetch_row($result);&lt;br /&gt;$tampag = 10;&lt;br /&gt;$reg1 = ($pag-1) * $tampag;&lt;br /&gt;$result = mysql_query(&lt;span style="color: #b22222"&gt;&amp;quot;SELECT nombre, apellidos FROM clientes&amp;quot;&lt;/span&gt;&lt;br /&gt;  LIMIT $reg1, $tampag&lt;span style="color: #b22222"&gt;&amp;quot;, $link);&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;A&amp;#241;adir los enlaces a otras p&amp;#225;ginas&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;La primera labor que vamos a hacer es crear una funci&amp;#243;n abstracta que reciba el n&amp;#250;mero de registros que en total devuelve la consulta, el tama&amp;#241;o de p&amp;#225;gina, el n&amp;#250;mero de la p&amp;#225;gina actual, y el texto del enlace hasta insertar el n&amp;#250;mero de p&amp;#225;gina. Este &amp;#250;ltimo par&amp;#225;metro puede resultar un poco confuso. Pongamos un ejemplo. Si en nuestra p&amp;#225;gina recibimos ese n&amp;#250;mero por el par&amp;#225;metro &lt;tt&gt;pag&lt;/tt&gt;, si quisieramos ver la p&amp;#225;gina 2 escribir&amp;#237;amos: &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;clientes.php?pag=2&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Por lo tanto, como debemos quitar el n&amp;#250;mero de p&amp;#225;gina, nos quedar&amp;#225;: &lt;br /&gt;  &lt;br /&gt;clientes.php?pag= &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;La funci&amp;#243;n deber&amp;#225; obtener primero el n&amp;#250;mero total de p&amp;#225;ginas. Luego averiguar&amp;#225; si existe una p&amp;#225;gina anterior, escribiendo en enlace que va a esa p&amp;#225;gina previa. Lo siguiente es escribir los enlaces a todas las p&amp;#225;ginas anteriores a la actual desde la 1. Luego escribe el n&amp;#250;mero de la p&amp;#225;gina actual, resaltado, pero sin enlace. Despu&amp;#233;s escribe los n&amp;#250;meros de las p&amp;#225;ginas posteriores y, finalmente, el enlace a la p&amp;#225;gina posterior: &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;/******************************************************/&lt;br /&gt;/* Funcion paginar&lt;br /&gt; * actual:          Pagina actual&lt;br /&gt; * total:           Total de registros&lt;br /&gt; * por_pagina:      Registros por pagina&lt;br /&gt; * enlace:          Texto del enlace&lt;br /&gt; * Devuelve un texto que representa la paginacion&lt;br /&gt; */&lt;br /&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt; paginar($actual, $total, $por_pagina, $enlace) {&lt;br /&gt;  $total_paginas = ceil($total/$por_pagina);&lt;br /&gt;  $anterior = $actual - 1;&lt;br /&gt;  $posterior = $actual + 1;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($actual&amp;gt;1)&lt;br /&gt;    $texto = &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;a href=\&amp;quot;&lt;/span&gt;$enlace$anterior\&lt;span style="color: #b22222"&gt;&amp;quot;&amp;gt;&amp;#171;&amp;lt;/a&amp;gt; &amp;quot;&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;    $texto = &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;b&amp;gt;&amp;#171;&amp;lt;/b&amp;gt; &amp;quot;&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; ($i=1; $i&amp;lt;$actual; $i++)&lt;br /&gt;    $texto .= &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;a href=\&amp;quot;&lt;/span&gt;$enlace$i\&lt;span style="color: #b22222"&gt;&amp;quot;&amp;gt;$i&amp;lt;/a&amp;gt; &amp;quot;&lt;/span&gt;;&lt;br /&gt;  $texto .= &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;b&amp;gt;$actual&amp;lt;/b&amp;gt; &amp;quot;&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; ($i=$actual+1; $i&amp;lt;=$total_paginas; $i++)&lt;br /&gt;    $texto .= &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;a href=\&amp;quot;&lt;/span&gt;$enlace$i\&lt;span style="color: #b22222"&gt;&amp;quot;&amp;gt;$i&amp;lt;/a&amp;gt; &amp;quot;&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($actual&amp;lt;$total_paginas)&lt;br /&gt;    $texto .= &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;a href=\&amp;quot;&lt;/span&gt;$enlace$posterior\&lt;span style="color: #b22222"&gt;&amp;quot;&amp;gt;&amp;#187;&amp;lt;/a&amp;gt;&amp;quot;&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;    $texto .= &lt;span style="color: #b22222"&gt;&amp;quot;&amp;lt;b&amp;gt;&amp;#187;&amp;lt;/b&amp;gt;&amp;quot;&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; $texto;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Adem&amp;#225;s de incluir la funci&amp;#243;n en nuestro &lt;i&gt;script&lt;/i&gt; la tendremos que llamar despu&amp;#233;s de cerrar la tabla:&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;echo paginar($pag, $total, $tampag, &amp;quot;clientes.php?pag=&amp;quot;);&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Y con esto ya tenemos un sistema de paginaci&amp;#243;n que podremos utilizar en nuestras p&amp;#225;ginas.&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;a href="http://www.programacion.com" target="_blank"&gt;Fuente&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-3243520430516051945?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/3243520430516051945/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=3243520430516051945&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/3243520430516051945?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/3243520430516051945?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/paginar-los-resultados-de-una-consulta.html" title="Paginar los resultados de una consulta en PHP" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CE4BSXs4fip7ImA9WxdbEEw.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-8152031463392852801</id><published>2008-08-06T05:55:00.001-03:00</published><updated>2008-08-06T05:55:58.536-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-06T05:55:58.536-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><title>phpCodeGenerator: código para tu BD automático</title><content type="html">&lt;p&gt;&lt;strong&gt;phpCodeGenerator&lt;/strong&gt; es una librer&amp;#237;a para generar sitios web desde una base de datos. Permite leer la base de datos y generar una web que permita crear, listar, editar, modificar, eliminar y buscar registros.&lt;/p&gt;  &lt;p&gt;Funciona con cualquier base de datos compatible con ADODB, como MySQL, Microsoft Access o PostgreSQL. La informaci&amp;#243;n que contiene una BD: el esquema de la BD, las tablas, campos y propiedades, es suficiente para poder realizar unas clases que permita crear, editar, actualizar y eliminar registros, una base para que el desarrollador luego pueda realizar su aplicaci&amp;#243;n web m&amp;#225;s facilmente.&lt;/p&gt;  &lt;p&gt;El framework phpCG permite construir aplicaciones PHP orientadas a objetos que sean extensibles, portables y escalables.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://phpcg.sourceforge.net/new/phpcg/index.php" target="_blank"&gt;PhpCodeGenerator&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-8152031463392852801?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/8152031463392852801/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=8152031463392852801&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/8152031463392852801?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/8152031463392852801?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/phpcodegenerator-cdigo-para-tu-bd.html" title="phpCodeGenerator: código para tu BD automático" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkEBSHw-eCp7ImA9WxdUGEk.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-3894145201891782632</id><published>2008-08-04T06:04:00.001-03:00</published><updated>2008-08-04T06:04:19.250-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-04T06:04:19.250-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>ASP.Net - Upload de archivos en ASP.NET</title><content type="html">&lt;p&gt;En esta oportunidad explicaremos c&amp;#243;mo proceder a la hora de subir (upload) archivos utilizando tecnolog&amp;#237;a ASP.Net. Operaci&amp;#243;n que nos permitir&amp;#225; compartir y mostrar toda clase de informaci&amp;#243;n desde nuestro sitio de Internet. &lt;a name="seguir_leyendo"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En funci&amp;#243;n de lograr nuestro objetivo utilizaremos el Web Control FileUpload que se implementa para la versi&amp;#243;n 2.0 de ASP .NET cuyo objetivo consiste en simplificarnos a&amp;#250;n m&amp;#225;s la operaci&amp;#243;n a realizar. Acto seguido, procedemos a&amp;#241;adiendo dicho control (una manera de llegar a &amp;#233;l es arrastr&amp;#225;ndolo desde la barra de herramientas) y un bot&amp;#243;n (button). A estos dos elementos debemos identificarlos con un ID espec&amp;#237;fico. &lt;/p&gt;  &lt;p&gt;Entoces, para a&amp;#241;adir el control utilizaremos el siguiente c&amp;#243;digo:    &lt;br /&gt;&lt;/p&gt;  &lt;pre style="width: 100%; height: 38px"&gt;&amp;lt;asp:FileUpLoad id=&lt;span style="color: #b22222"&gt;&amp;quot;FileUpLoad2&amp;quot;&lt;/span&gt; runat=&lt;span style="color: #b22222"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El paso siguiente consiste en agregar el button mencionado anteriormente del siguiente modo: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 36px"&gt;&amp;lt;asp:Button id=&lt;span style="color: #b22222"&gt;&amp;quot;UploadBtn&amp;quot;&lt;/span&gt; Text=&lt;span style="color: #b22222"&gt;&amp;quot;Upload File&amp;quot;&lt;/span&gt; OnClick=&lt;span style="color: #b22222"&gt;&amp;quot;UploadBtn_Click&amp;quot;&lt;/span&gt; runat=&lt;span style="color: #b22222"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Width=&lt;span style="color: #b22222"&gt;&amp;quot;105px&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para terminar con la operaci&amp;#243;n y poder subir archivos desde la p&amp;#225;gina al servidor continuamos de esta manera: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 116px"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; void UploadBtn_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (FileUpLoad1.HasFile) {&lt;br /&gt;FileUpLoad2.SaveAs(@&lt;span style="color: #b22222"&gt;&amp;quot;C: emp&amp;quot;&lt;/span&gt; + FileUpLoad2.FileName);&lt;br /&gt;Label1.Text = &lt;span style="color: #b22222"&gt;&amp;quot;File Uploaded: &amp;quot;&lt;/span&gt; + FileUpLoad2.FileName ;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ahora bien, puede ocurrir que necesitemos establecer una restricci&amp;#243;n del tipo de archivos que deseamos subir. Esto tambi&amp;#233;n puede realizarse a partir del mismo control mediante ASP .NET agregando lo que se denomina un &amp;#8220;validator&amp;#8221;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;En este ejemplo mostraremos un caso d&amp;#243;nde solo permita subir archivos .gif. (Esto queda a criterio de cada programador). Esto se aclarar&amp;#225; al costado del browser d&amp;#243;nde se indicar&amp;#225; el formato que est&amp;#225; permitido ingresar. &lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 70px"&gt;&amp;lt;asp:RegularExpressionValidator id=&lt;span style="color: #b22222"&gt;&amp;quot;FileUpLoadValidator&amp;quot;&lt;/span&gt; runat=&lt;span style="color: #b22222"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; ErrorMessage=&lt;span style="color: #b22222"&gt;&amp;quot;Upload Gifs only.&amp;quot;&lt;/span&gt; ValidationExpression=&lt;span style="color: #b22222"&gt;&amp;quot;^(([a-zA-Z]:)|({2}w+)$?)((w[w].*))(.gif|.GIF)$&amp;quot;&lt;/span&gt;&lt;br /&gt;ControlToValidate=&lt;span style="color: #b22222"&gt;&amp;quot;FileUpload2&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/asp:RegularExpressionValidator&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Hemos repasado el procedimiento b&amp;#225;sico y el funcionamiento del control FileUpload para poder subir archivos con ASP .NET de modo r&amp;#225;pido y eficaz. A su vez, recordamos que este control s&amp;#243;lo habilita el ingreso de archivos que no superen los 4 MB aproximadamente. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;De otro modo, nos indicar&amp;#225; que se ha cometido un error y no podr&amp;#225; realizarse con &amp;#233;xito la operaci&amp;#243;n. Por lo tanto habr&amp;#225; que proceder modificando la configuraci&amp;#243;n en funci&amp;#243;n de encontrar una soluci&amp;#243;n a nuestro problema. Por lo tanto habr&amp;#225; que implementar una serie de modificaciones en el web.config.comments dentro de la carpeta de configuraci&amp;#243;n de ASP .NET. Una vez all&amp;#237;, ubicamos dentro del nodo &amp;#8220;httpRuntime&amp;#8221; cambiamos el valor predeterminado de la propiedad maxRequestLength que es el componente que se encarga del tama&amp;#241;o de los archivos que se suben (recordemos que all&amp;#237; el valor que se indica est&amp;#225; en kilobytes). &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Una vez realizado esto, se habilitar&amp;#225; la suba de archivos del tama&amp;#241;o que se especific&amp;#243; dependiendo de la necesidad de cada uno; la misma se aplicar&amp;#225; a todas nuestras aplicaciones. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.elguruprogramador.com.ar" target="_blank"&gt;Fuente&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-3894145201891782632?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/3894145201891782632/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=3894145201891782632&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/3894145201891782632?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/3894145201891782632?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/aspnet-upload-de-archivos-en-aspnet.html" title="ASP.Net - Upload de archivos en ASP.NET" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkIDQnszfip7ImA9WxdUGE4.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-1202255763095387970</id><published>2008-08-04T05:29:00.001-03:00</published><updated>2008-08-04T05:29:33.586-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-04T05:29:33.586-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Excel" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Fox Pro" /><title>Visual Fox Pro - abrir un documento de Excel con Password</title><content type="html">&lt;p&gt;Este ejemplo demuestra como podemos abrir un documento de Excel con clave de lectura Y de lecto-escritura. &lt;/p&gt;  &lt;pre style="width: 100%; height: 150px"&gt;oExcel = CreateObject(&lt;span style="color: #b22222"&gt;&amp;quot;Excel.Application&amp;quot;&lt;/span&gt;)&lt;br /&gt;cArchivo = GetFile(&lt;span style="color: #b22222"&gt;&amp;quot;XLS&amp;quot;&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;cPassLectura = &lt;span style="color: #b22222"&gt;&amp;quot;miclave&amp;quot;&lt;/span&gt;&lt;br /&gt;cPassLecturaEscri = &lt;span style="color: #b22222"&gt;&amp;quot;miclave2&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;oExcel.Workbooks.Open(cArchivo,,,,cPassLectura, cPassLecturaEscri)&lt;br /&gt;oExcel.Visible = .T.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.davphantom.net/" target="_blank"&gt;Fuente&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-1202255763095387970?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/1202255763095387970/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=1202255763095387970&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/1202255763095387970?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/1202255763095387970?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/visual-fox-pro-abrir-un-documento-de.html" title="Visual Fox Pro - abrir un documento de Excel con Password" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DUQEQHw5fyp7ImA9WxdUF0o.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-1816195744568137741</id><published>2008-08-03T12:28:00.001-03:00</published><updated>2008-08-03T12:28:21.227-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-03T12:28:21.227-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Editor" /><category scheme="http://www.blogger.com/atom/ns#" term="Codigo Fuente" /><category scheme="http://www.blogger.com/atom/ns#" term="ConText" /><title>ConText Editor de Código fuente fratuito</title><content type="html">&lt;p&gt;Context es un editor de c&amp;#243;digo fuente similar al conocido Notepad ++ es de uso gratuito, reconoce la sintaxis de los lenguajes: C/C++ Delphi/Pascal Java Java Script Visual Basic Perl/CGI HTML CSS SQL FoxPro 80&amp;#215;86 assembler Python PHP Tcl/Tk XML Fortran Foxpro Me parece interesante contar con otra opci&amp;#243;n de adem&amp;#225;s de las ya conocidas, otro punto a favor de Context es que viene disponible para varios idiomas incluyendo el espa&amp;#241;ol.   &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.contexteditor.org/" target="_blank"&gt;Sitio Web&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.kubelabs.com/mirrors/context/ConTEXTv0_976.exe" target="_blank"&gt;Descarga v0.97.6&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-1816195744568137741?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/1816195744568137741/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=1816195744568137741&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/1816195744568137741?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/1816195744568137741?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/context-editor-de-cdigo-fuente-fratuito.html" title="ConText Editor de Código fuente fratuito" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0YBRXg5fCp7ImA9WxdUFkQ.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-1825772870371193943</id><published>2008-08-02T13:37:00.001-03:00</published><updated>2008-08-02T13:39:14.624-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-02T13:39:14.624-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySql" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Basic" /><title>Visual Basic - Conectando a un servidor mysql</title><content type="html">&lt;p&gt;MySQL es una de las base de datos mas r&amp;#225;pidas y potentes de la actualidad si a esto le agregamos lo r&amp;#225;pido que se torna desarrollar bajo Visual Basic sin dudas corremos con grandes ventajas a la hora de crear potentes aplicaciones.&lt;a name="seguir_leyendo"&gt;&lt;/a&gt; No solo para acceder de forma local a nuestra base de datos sino tambi&amp;#233;n puede que necesitemos acceder a un servidor MySQL localizado en otra parte del mundo y hasta que este corra bajo Linux.     &lt;br /&gt;    &lt;br /&gt;Como primer paso debemos crear la referencia a RDO (Remote Data Object) desde nuestro Visual Basic, para esto vamos al men&amp;#250; Proyecto &amp;gt; Referencias... y ah&amp;#237; seleccionamos Microsoft Remote Data Object...     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/Itsolutions.software/SJSNOsfYNuI/AAAAAAAAAEU/A-XGYBpe10o/s1600-h/vbmysql_1%5B17%5D.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="416" alt="vbmysql_1" src="http://lh4.ggpht.com/Itsolutions.software/SJSNP3hwhWI/AAAAAAAAAEY/3gkYCbApZZQ/vbmysql_1_thumb%5B15%5D.gif?imgmax=800" width="509" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Esa va a ser la librer&amp;#237;a (similar a ADO o DAO) que nos va a dar todos los m&amp;#233;todos para poder conectarnos tanto local como de forma remota a un servidor MySQL.    &lt;br /&gt;    &lt;br /&gt;La &lt;a href="http://www.elguruprogramador.com.ar/contenidos/File/vbmysql.zip"&gt;aplicaci&amp;#243;n de ejemplo&lt;/a&gt; que hemos creado conecta al servidor indicado mediante un usuario y contrase&amp;#241;a y nos devuelve todas las tablas de la base de datos indicada, veamos un gr&amp;#225;fico as&amp;#237; queda mas claro...     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/Itsolutions.software/SJSNQ10gqvI/AAAAAAAAAEc/GIDc6rHgDL8/s1600-h/vbmysql_2%5B4%5D.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="416" alt="vbmysql_2" src="http://lh5.ggpht.com/Itsolutions.software/SJSNS1hJEZI/AAAAAAAAAEg/mVrSILrZfag/vbmysql_2_thumb%5B2%5D.gif?imgmax=800" width="547" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Al hacer click en el bot&amp;#243;n conectar se inicia el proceso de conexi&amp;#243;n al servidor indicado...    &lt;br /&gt;&lt;/p&gt;  &lt;pre style="width: 100%; height: 285px"&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; boton_conectar_Click()&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; cadena_conexion&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'creamos la cadena de conexi&amp;#243;n leyendo los valores de los textbox&lt;/span&gt;&lt;br /&gt;cadena_conexion = &lt;span style="color: #b22222"&gt;&amp;quot;DRIVER={MySQL ODBC 3.51 Driver}; SERVER=&amp;quot;&lt;/span&gt; &amp;amp; servidor &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot;; DATABASE=&amp;quot;&lt;/span&gt; &amp;amp; base_de_datos &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot; ;PWD=&amp;quot;&lt;/span&gt; &amp;amp; password &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot;; UID=&amp;quot;&lt;/span&gt; &amp;amp; usuario &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot;;OPTION=3&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Set&lt;/span&gt; db = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; rdoConnection&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'asociamos la cadena de conexi&amp;#243;n al objeto&lt;/span&gt;&lt;br /&gt;db.Connect = cadena_conexion&lt;br /&gt;db.CursorDriver = rdUseServer&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'establecemos la conexi&amp;#243;n&lt;/span&gt;&lt;br /&gt;db.EstablishConnection&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ese es el c&amp;#243;digo que nos conectara a nuestro servidor MySQL, vemos en negrita los comentarios en el c&amp;#243;digo que nos facilitaran entenderlo. El pr&amp;#243;ximo paso ser&amp;#225; obtener el listado de todas las tablas de la base de datos abierta.... &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 307px"&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; tabla &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; rdoTable&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; hay_tablas &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Boolean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;hay_tablas = &lt;span style="color: #0000ff"&gt;False&lt;/span&gt;&lt;br /&gt;cambiar_botones &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'recorremos todas las tablas&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;For&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Each&lt;/span&gt; tabla &lt;span style="color: #0000ff"&gt;In&lt;/span&gt; db.rdoTables&lt;br /&gt;&lt;span style="color: #008000"&gt;'extraemos el nombre de la tabla y lo agregamos en un listbox&lt;/span&gt;&lt;br /&gt;tablas.AddItem tabla.Name&lt;br /&gt;hay_tablas = &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;If&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Not&lt;/span&gt; hay_tablas &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt;&lt;br /&gt;MsgBox &lt;span style="color: #b22222"&gt;&amp;quot;La base de datos esta vacia&amp;quot;&lt;/span&gt;&lt;br /&gt;boton_desconectar_Click&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;If&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Hasta aca ya tenemos una lista de todas las tablas que hay en la base de datos, ahora solo nos queda listar el contenido de la tabla seleccionada... &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; tabla &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; consulta &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; rdoQuery&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; resultados &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; rdoResultset&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; contenido_row &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; columna &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; rdoColumn&lt;br /&gt;&lt;br /&gt;contenido.Clear&lt;br /&gt;&lt;br /&gt;tabla = tablas.List(tablas.ListIndex)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'le indicamos al objeto consulta que usaremos db como base de datos activa&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Set&lt;/span&gt; consulta.ActiveConnection = db&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'creamos la consulta SQL y la ejecutamos&lt;/span&gt;&lt;br /&gt;consulta.SQL = &lt;span style="color: #b22222"&gt;&amp;quot;SELECT * FROM &amp;quot;&lt;/span&gt; &amp;amp; tabla &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot; WHERE 1&amp;quot;&lt;/span&gt;&lt;br /&gt;consulta.Execute&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'asigamos el resultado de la consulta a nuestro objeto resultados (rdoResultset)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Set&lt;/span&gt; resultados = consulta.OpenResultset&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'recorremos todos los resultados&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;While&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Not&lt;/span&gt; resultados.EOF&lt;br /&gt;&lt;br /&gt;contenido_row = &amp;quot;&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'cargamos el contenido de cada registro&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;For&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Each&lt;/span&gt; columna &lt;span style="color: #0000ff"&gt;In&lt;/span&gt; resultados.rdoColumns&lt;br /&gt;contenido_row = contenido_row &amp;amp; columna.Name &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot;=&amp;quot;&lt;/span&gt; &amp;amp; resultados(columna.Name) &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot;; &amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'agregamos el contenido de cada registro al listbox&lt;/span&gt;&lt;br /&gt;contenido.AddItem contenido_row&lt;br /&gt;resultados.MoveNext&lt;br /&gt;Wend&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;'cerramos y borramos los objetos&lt;/span&gt;&lt;br /&gt;resultados.Close&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Set&lt;/span&gt; resultados = &lt;span style="color: #0000ff"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Bien hasta aca tenemos todos los aspectos b&amp;#225;sicos de como conectarnos y trabajar con una base de datos MySQL desde Visual Basic, recordemos que el c&amp;#243;digo aca mostrado forma parte de nuestro ejemplo &lt;a href="http://www.elguruprogramador.com.ar/contenidos/File/vbmysql.zip"&gt;que podemos descargar desde aqu&amp;#237;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.elguruprogramador.com.ar/articulos/conectando-a-un-servidor-mysql-desde-visual-basic.htm" target="_blank"&gt;Fuente&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-1825772870371193943?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/1825772870371193943/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=1825772870371193943&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/1825772870371193943?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/1825772870371193943?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/visual-basic-conectando-un-servidor.html" title="Visual Basic - Conectando a un servidor mysql" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/Itsolutions.software/SJSNP3hwhWI/AAAAAAAAAEY/3gkYCbApZZQ/s72-c/vbmysql_1_thumb%5B15%5D.gif?imgmax=800" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CEMMR305eip7ImA9WxdUFk4.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-2398293390442952851</id><published>2008-08-01T20:14:00.001-03:00</published><updated>2008-08-01T20:14:46.322-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-01T20:14:46.322-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><title>PHP - Pasar números a letras</title><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;pre&gt;&amp;lt;?php&lt;br /&gt;/*!&lt;br /&gt;  @&lt;span style="color: #0000ff"&gt;function&lt;/span&gt; num2letras ()&lt;br /&gt;  @abstract Dado un n?mero lo devuelve escrito.&lt;br /&gt;  @param $num number - N?mero a convertir.&lt;br /&gt;  @param $fem bool - Forma femenina (&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;) o no (&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;).&lt;br /&gt;  @param $dec bool - Con decimales (&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;) o no (&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;).&lt;br /&gt;  @result &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; - Devuelve el n?mero escrito en letra.&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt; num2letras($num, $fem = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;, $dec = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;) {&lt;br /&gt;//&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (strlen($num) &amp;gt; 14) die(&lt;span style="color: #b22222"&gt;&amp;quot;El n?mero introducido es demasiado grande&amp;quot;&lt;/span&gt;);&lt;br /&gt;   $matuni[2]  = &lt;span style="color: #b22222"&gt;&amp;quot;dos&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[3]  = &lt;span style="color: #b22222"&gt;&amp;quot;tres&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[4]  = &lt;span style="color: #b22222"&gt;&amp;quot;cuatro&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[5]  = &lt;span style="color: #b22222"&gt;&amp;quot;cinco&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[6]  = &lt;span style="color: #b22222"&gt;&amp;quot;seis&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[7]  = &lt;span style="color: #b22222"&gt;&amp;quot;siete&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[8]  = &lt;span style="color: #b22222"&gt;&amp;quot;ocho&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[9]  = &lt;span style="color: #b22222"&gt;&amp;quot;nueve&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[10] = &lt;span style="color: #b22222"&gt;&amp;quot;diez&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[11] = &lt;span style="color: #b22222"&gt;&amp;quot;once&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[12] = &lt;span style="color: #b22222"&gt;&amp;quot;doce&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[13] = &lt;span style="color: #b22222"&gt;&amp;quot;trece&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[14] = &lt;span style="color: #b22222"&gt;&amp;quot;catorce&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[15] = &lt;span style="color: #b22222"&gt;&amp;quot;quince&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[16] = &lt;span style="color: #b22222"&gt;&amp;quot;dieciseis&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[17] = &lt;span style="color: #b22222"&gt;&amp;quot;diecisiete&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[18] = &lt;span style="color: #b22222"&gt;&amp;quot;dieciocho&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[19] = &lt;span style="color: #b22222"&gt;&amp;quot;diecinueve&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matuni[20] = &lt;span style="color: #b22222"&gt;&amp;quot;veinte&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matunisub[2] = &lt;span style="color: #b22222"&gt;&amp;quot;dos&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matunisub[3] = &lt;span style="color: #b22222"&gt;&amp;quot;tres&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matunisub[4] = &lt;span style="color: #b22222"&gt;&amp;quot;cuatro&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matunisub[5] = &lt;span style="color: #b22222"&gt;&amp;quot;quin&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matunisub[6] = &lt;span style="color: #b22222"&gt;&amp;quot;seis&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matunisub[7] = &lt;span style="color: #b22222"&gt;&amp;quot;sete&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matunisub[8] = &lt;span style="color: #b22222"&gt;&amp;quot;ocho&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matunisub[9] = &lt;span style="color: #b22222"&gt;&amp;quot;nove&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;   $matdec[2] = &lt;span style="color: #b22222"&gt;&amp;quot;veint&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matdec[3] = &lt;span style="color: #b22222"&gt;&amp;quot;treinta&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matdec[4] = &lt;span style="color: #b22222"&gt;&amp;quot;cuarenta&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matdec[5] = &lt;span style="color: #b22222"&gt;&amp;quot;cincuenta&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matdec[6] = &lt;span style="color: #b22222"&gt;&amp;quot;sesenta&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matdec[7] = &lt;span style="color: #b22222"&gt;&amp;quot;setenta&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matdec[8] = &lt;span style="color: #b22222"&gt;&amp;quot;ochenta&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matdec[9] = &lt;span style="color: #b22222"&gt;&amp;quot;noventa&amp;quot;&lt;/span&gt;;&lt;br /&gt;   $matsub[3]  = &lt;span style="color: #008000"&gt;'mill';&lt;/span&gt;&lt;br /&gt;   $matsub[5]  = &lt;span style="color: #008000"&gt;'bill';&lt;/span&gt;&lt;br /&gt;   $matsub[7]  = &lt;span style="color: #008000"&gt;'mill';&lt;/span&gt;&lt;br /&gt;   $matsub[9]  = &lt;span style="color: #008000"&gt;'trill';&lt;/span&gt;&lt;br /&gt;   $matsub[11] = &lt;span style="color: #008000"&gt;'mill';&lt;/span&gt;&lt;br /&gt;   $matsub[13] = &lt;span style="color: #008000"&gt;'bill';&lt;/span&gt;&lt;br /&gt;   $matsub[15] = &lt;span style="color: #008000"&gt;'mill';&lt;/span&gt;&lt;br /&gt;   $matmil[4]  = &lt;span style="color: #008000"&gt;'millones';&lt;/span&gt;&lt;br /&gt;   $matmil[6]  = &lt;span style="color: #008000"&gt;'billones';&lt;/span&gt;&lt;br /&gt;   $matmil[7]  = &lt;span style="color: #008000"&gt;'de billones';&lt;/span&gt;&lt;br /&gt;   $matmil[8]  = &lt;span style="color: #008000"&gt;'millones de billones';&lt;/span&gt;&lt;br /&gt;   $matmil[10] = &lt;span style="color: #008000"&gt;'trillones';&lt;/span&gt;&lt;br /&gt;   $matmil[11] = &lt;span style="color: #008000"&gt;'de trillones';&lt;/span&gt;&lt;br /&gt;   $matmil[12] = &lt;span style="color: #008000"&gt;'millones de trillones';&lt;/span&gt;&lt;br /&gt;   $matmil[13] = &lt;span style="color: #008000"&gt;'de trillones';&lt;/span&gt;&lt;br /&gt;   $matmil[14] = &lt;span style="color: #008000"&gt;'billones de trillones';&lt;/span&gt;&lt;br /&gt;   $matmil[15] = &lt;span style="color: #008000"&gt;'de billones de trillones';&lt;/span&gt;&lt;br /&gt;   $matmil[16] = &lt;span style="color: #008000"&gt;'millones de billones de trillones';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   $num = trim((&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;)@$num);&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($num[0] == &lt;span style="color: #008000"&gt;'-') {&lt;/span&gt;&lt;br /&gt;      $neg = &lt;span style="color: #008000"&gt;'menos ';&lt;/span&gt;&lt;br /&gt;      $num = substr($num, 1);&lt;br /&gt;   }&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;      $neg = &lt;span style="color: #008000"&gt;'';&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; ($num[0] == &lt;span style="color: #008000"&gt;'0') $num = substr($num, 1);&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($num[0] &amp;lt; &lt;span style="color: #008000"&gt;'1' or $num[0] &amp;gt; 9) $num = '0' . $num;&lt;/span&gt;&lt;br /&gt;   $zeros = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;   $punt = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;   $ent = &lt;span style="color: #008000"&gt;'';&lt;/span&gt;&lt;br /&gt;   $fra = &lt;span style="color: #008000"&gt;'';&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; ($c = 0; $c &amp;lt; strlen($num); $c++) {&lt;br /&gt;      $n = $num[$c];&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (! (strpos(&lt;span style="color: #b22222"&gt;&amp;quot;.,'''&amp;quot;&lt;/span&gt;, $n) === &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;)) {&lt;br /&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($punt) break;&lt;br /&gt;         &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;{&lt;br /&gt;            $punt = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;continue&lt;/span&gt;;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;      }&lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; (! (strpos(&lt;span style="color: #008000"&gt;'0123456789', $n) === false)) {&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($punt) {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($n != &lt;span style="color: #008000"&gt;'0') $zeros = false;&lt;/span&gt;&lt;br /&gt;            $fra .= $n;&lt;br /&gt;         }&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            $ent .= $n;&lt;br /&gt;      }&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;         break;&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;   $ent = &lt;span style="color: #008000"&gt;'     ' . $ent;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($dec &lt;span style="color: #0000ff"&gt;and&lt;/span&gt; $fra &lt;span style="color: #0000ff"&gt;and&lt;/span&gt; ! $zeros) {&lt;br /&gt;      $fin = &lt;span style="color: #008000"&gt;' coma';&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; ($n = 0; $n &amp;lt; strlen($fra); $n++) {&lt;br /&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (($s = $fra[$n]) == &lt;span style="color: #008000"&gt;'0')&lt;/span&gt;&lt;br /&gt;            $fin .= &lt;span style="color: #008000"&gt;' cero';&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; ($s == &lt;span style="color: #008000"&gt;'1')&lt;/span&gt;&lt;br /&gt;            $fin .= $fem ? &lt;span style="color: #008000"&gt;' una' : ' un';&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;            $fin .= &lt;span style="color: #008000"&gt;' ' . $matuni[$s];&lt;/span&gt;&lt;br /&gt;      }&lt;br /&gt;   }&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;      $fin = &lt;span style="color: #008000"&gt;'';&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((int)$ent === 0) &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #008000"&gt;'Cero ' . $fin;&lt;/span&gt;&lt;br /&gt;   $tex = &lt;span style="color: #008000"&gt;'';&lt;/span&gt;&lt;br /&gt;   $&lt;span style="color: #0000ff"&gt;sub&lt;/span&gt; = 0;&lt;br /&gt;   $mils = 0;&lt;br /&gt;   $neutro = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; ( ($num = substr($ent, -3)) != &lt;span style="color: #008000"&gt;'   ') {&lt;/span&gt;&lt;br /&gt;      $ent = substr($ent, 0, -3);&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (++$&lt;span style="color: #0000ff"&gt;sub&lt;/span&gt; &amp;lt; 3 &lt;span style="color: #0000ff"&gt;and&lt;/span&gt; $fem) {&lt;br /&gt;         $matuni[1] = &lt;span style="color: #008000"&gt;'una';&lt;/span&gt;&lt;br /&gt;         $subcent = &lt;span style="color: #008000"&gt;'as';&lt;/span&gt;&lt;br /&gt;      }&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;{&lt;br /&gt;         $matuni[1] = $neutro ? &lt;span style="color: #008000"&gt;'un' : 'uno';&lt;/span&gt;&lt;br /&gt;         $subcent = &lt;span style="color: #008000"&gt;'os';&lt;/span&gt;&lt;br /&gt;      }&lt;br /&gt;      $t = &lt;span style="color: #008000"&gt;'';&lt;/span&gt;&lt;br /&gt;      $n2 = substr($num, 1);&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($n2 == &lt;span style="color: #008000"&gt;'00') {&lt;/span&gt;&lt;br /&gt;      }&lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; ($n2 &amp;lt; 21)&lt;br /&gt;         $t = &lt;span style="color: #008000"&gt;' ' . $matuni[(int)$n2];&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; ($n2 &amp;lt; 30) {&lt;br /&gt;         $n3 = $num[2];&lt;br /&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($n3 != 0) $t = &lt;span style="color: #008000"&gt;'i' . $matuni[$n3];&lt;/span&gt;&lt;br /&gt;         $n2 = $num[1];&lt;br /&gt;         $t = &lt;span style="color: #008000"&gt;' ' . $matdec[$n2] . $t;&lt;/span&gt;&lt;br /&gt;      }&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;{&lt;br /&gt;         $n3 = $num[2];&lt;br /&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($n3 != 0) $t = &lt;span style="color: #008000"&gt;' y ' . $matuni[$n3];&lt;/span&gt;&lt;br /&gt;         $n2 = $num[1];&lt;br /&gt;         $t = &lt;span style="color: #008000"&gt;' ' . $matdec[$n2] . $t;&lt;/span&gt;&lt;br /&gt;      }&lt;br /&gt;      $n = $num[0];&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($n == 1) {&lt;br /&gt;         $t = &lt;span style="color: #008000"&gt;' ciento' . $t;&lt;/span&gt;&lt;br /&gt;      }&lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; ($n == 5){&lt;br /&gt;         $t = &lt;span style="color: #008000"&gt;' ' . $matunisub[$n] . 'ient' . $subcent . $t;&lt;/span&gt;&lt;br /&gt;      }&lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; ($n != 0){&lt;br /&gt;         $t = &lt;span style="color: #008000"&gt;' ' . $matunisub[$n] . 'cient' . $subcent . $t;&lt;/span&gt;&lt;br /&gt;      }&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($&lt;span style="color: #0000ff"&gt;sub&lt;/span&gt; == 1) {&lt;br /&gt;      }&lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; (! isset($matsub[$&lt;span style="color: #0000ff"&gt;sub&lt;/span&gt;])) {&lt;br /&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($num == 1) {&lt;br /&gt;            $t = &lt;span style="color: #008000"&gt;' mil';&lt;/span&gt;&lt;br /&gt;         }&lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; ($num &amp;gt; 1){&lt;br /&gt;            $t .= &lt;span style="color: #008000"&gt;' mil';&lt;/span&gt;&lt;br /&gt;         }&lt;br /&gt;      }&lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; ($num == 1) {&lt;br /&gt;         $t .= &lt;span style="color: #008000"&gt;' ' . $matsub[$sub] . '?n';&lt;/span&gt;&lt;br /&gt;      }&lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; ($num &amp;gt; 1){&lt;br /&gt;         $t .= &lt;span style="color: #008000"&gt;' ' . $matsub[$sub] . 'ones';&lt;/span&gt;&lt;br /&gt;      }   &lt;br /&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($num == &lt;span style="color: #008000"&gt;'000') $mils ++;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt; ($mils != 0) {&lt;br /&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (isset($matmil[$&lt;span style="color: #0000ff"&gt;sub&lt;/span&gt;])) $t .= &lt;span style="color: #008000"&gt;' ' . $matmil[$sub];&lt;/span&gt;&lt;br /&gt;         $mils = 0;&lt;br /&gt;      }&lt;br /&gt;      $neutro = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;      $tex = $t . $tex;&lt;br /&gt;   }&lt;br /&gt;   $tex = $neg . substr($tex, 1) . $fin;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ucfirst($tex);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.php-hispano.net" target="_blank"&gt;Fuente&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-2398293390442952851?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/2398293390442952851/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=2398293390442952851&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/2398293390442952851?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/2398293390442952851?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/php-pasar-nmeros-letras.html" title="PHP - Pasar números a letras" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CEcMRHg_fyp7ImA9WxdUFk4.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-7820073210785135533</id><published>2008-08-01T20:08:00.001-03:00</published><updated>2008-08-01T20:08:05.647-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-01T20:08:05.647-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server" /><title>Sql Server - 25 - Funciones para el manejo de cadenas</title><content type="html">&lt;p&gt;Microsoft SQL Server tiene algunas funciones para trabajar con cadenas de caracteres. Estas son algunas: &lt;/p&gt;  &lt;p&gt;- substring(cadena,inicio,longitud): devuelve una parte de la cadena especificada como primer argumento, empezando desde la posici&amp;#243;n especificada por el segundo argumento y de tantos caracteres de longitud como indica el tercer argumento. Ejemplo: &lt;/p&gt;  &lt;p&gt; select substring('Buenas tardes',8,6); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;tardes&amp;quot;. &lt;/p&gt;  &lt;p&gt;- str(numero,longitud,cantidaddecimales): convierte n&amp;#250;meros a caracteres; el primer par&amp;#225;metro indica el valor num&amp;#233;rico a convertir, el segundo la longitud del resultado (debe ser mayor o igual a la parte entera del n&amp;#250;mero m&amp;#225;s el signo si lo tuviese) y el tercero, la cantidad de decimales. El segundo y tercer argumento son opcionales y deben ser positivos. String significa cadena en ingl&amp;#233;s. &lt;/p&gt;  &lt;p&gt;Ejemplo: se convierte el valor num&amp;#233;rico &amp;quot;123.456&amp;quot; a cadena, especificando 7 de longitud y 3 decimales: &lt;/p&gt;  &lt;p&gt; select str(123.456,7,3); &lt;/p&gt;  &lt;p&gt; select str(-123.456,7,3); &lt;/p&gt;  &lt;p&gt;retorna '-123.46'; &lt;/p&gt;  &lt;p&gt;Si no se colocan el segundo y tercer argumeno, la longitud predeterminada es 10 y la cantidad de decimales 0 y se redondea a entero. Ejemplo: se convierte el valor num&amp;#233;rico &amp;quot;123.456&amp;quot; a cadena: &lt;/p&gt;  &lt;p&gt; select str(123.456); &lt;/p&gt;  &lt;p&gt;retorna '123'; &lt;/p&gt;  &lt;p&gt; select str(123.456,3); &lt;/p&gt;  &lt;p&gt;retorna '123'; &lt;/p&gt;  &lt;p&gt;Si el segundo par&amp;#225;metro es menor a la parte entera del n&amp;#250;mero, devuelve asteriscos (*). Ejemplo: select str(123.456,2,3); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;**&amp;quot;. &lt;/p&gt;  &lt;p&gt;- stuff(cadena1,inicio,cantidad,cadena2): inserta la cadena enviada como cuarto argumento, en la posici&amp;#243;n indicada en el segundo argumento, reemplazando la cantidad de caracteres indicada por el tercer argumento en la cadena que es primer par&amp;#225;metro. Stuff significa rellenar en ingl&amp;#233;s. Ejemplo: &lt;/p&gt;  &lt;p&gt; select stuff('abcde',3,2,'opqrs'); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;abopqrse&amp;quot;. Es decir, coloca en la posici&amp;#243;n 2 la cadena &amp;quot;opqrs&amp;quot; y reemplaza 2 caracteres de la primer cadena. &lt;/p&gt;  &lt;p&gt;Los argumentos num&amp;#233;ricos deben ser positivos y menor o igual a la longitud de la primera cadena, caso contrario, retorna &amp;quot;null&amp;quot;. &lt;/p&gt;  &lt;p&gt;Si el tercer argumento es mayor que la primera cadena, se elimina hasta el primer car&amp;#225;cter. &lt;/p&gt;  &lt;p&gt;- len(cadena): retorna la longitud de la cadena enviada como argumento. &amp;quot;len&amp;quot; viene de length, que significa longitud en ingl&amp;#233;s. Ejemplo: &lt;/p&gt;  &lt;p&gt; select len('Hola'); &lt;/p&gt;  &lt;p&gt;devuelve 4. &lt;/p&gt;  &lt;p&gt;- char(x): retorna un caracter en c&amp;#243;digo ASCII del entero enviado como argumento. Ejemplo: &lt;/p&gt;  &lt;p&gt; select char(65); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;A&amp;quot;. &lt;/p&gt;  &lt;p&gt;- left(cadena,longitud): retorna la cantidad (longitud) de caracteres de la cadena comenzando desde la izquierda, primer caracter. Ejemplo: &lt;/p&gt;  &lt;p&gt; select left('buenos dias',8); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;buenos d&amp;quot;. &lt;/p&gt;  &lt;p&gt;- right(cadena,longitud): retorna la cantidad (longitud) de caracteres de la cadena comenzando desde la derecha, &amp;#250;ltimo caracter. Ejemplo: &lt;/p&gt;  &lt;p&gt; select right('buenos dias',8); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;nos dias&amp;quot;. &lt;/p&gt;  &lt;p&gt;-lower(cadena): retornan la cadena con todos los caracteres en min&amp;#250;sculas. lower significa reducir en ingl&amp;#233;s. Ejemplo: &lt;/p&gt;  &lt;p&gt; select lower('HOLA ESTUDIAnte'); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;hola estudiante&amp;quot;. &lt;/p&gt;  &lt;p&gt;-upper(cadena): retornan la cadena con todos los caracteres en may&amp;#250;sculas. Ejemplo: &lt;/p&gt;  &lt;p&gt; select upper('HOLA ESTUDIAnte'); &lt;/p&gt;  &lt;p&gt;-ltrim(cadena): retorna la cadena con los espacios de la izquierda eliminados. Trim significa recortar. Ejemplo: &lt;/p&gt;  &lt;p&gt; select ltrim('&amp;#160;&amp;#160;&amp;#160;&amp;#160; Hola&amp;#160;&amp;#160;&amp;#160;&amp;#160; '); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;Hola &amp;quot;. &lt;/p&gt;  &lt;p&gt;- rtrim(cadena): retorna la cadena con los espacios de la derecha eliminados. Ejemplo: &lt;/p&gt;  &lt;p&gt; select rtrim('&amp;#160;&amp;#160; Hola&amp;#160;&amp;#160; '); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot; Hola&amp;quot;. &lt;/p&gt;  &lt;p&gt;- replace(cadena,cadenareemplazo,cadenareemplazar): retorna la cadena con todas las ocurrencias de la subcadena reemplazo por la subcadena a reemplazar. Ejemplo: &lt;/p&gt;  &lt;p&gt; select replace('xxx.sqlserverya.com','x','w'); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;www.sqlserverya.com'. &lt;/p&gt;  &lt;p&gt;- reverse(cadena): devuelve la cadena invirtiendo el order de los caracteres. Ejemplo: &lt;/p&gt;  &lt;p&gt; select reverse('Hola'); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;aloH&amp;quot;. &lt;/p&gt;  &lt;p&gt;- patindex(patron,cadena): devuelve la posici&amp;#243;n de comienzo (de la primera ocurrencia) del patr&amp;#243;n especificado en la cadena enviada como segundo argumento. Si no la encuentra retorna 0. Ejemplos: &lt;/p&gt;  &lt;p&gt; select patindex('%Luis%', 'Jorge Luis Borges'); &lt;/p&gt;  &lt;p&gt;retorna 7. &lt;/p&gt;  &lt;p&gt; select patindex('%or%', 'Jorge Luis Borges'); &lt;/p&gt;  &lt;p&gt;retorna 2. &lt;/p&gt;  &lt;p&gt; select patindex('%ar%', 'Jorge Luis Borges'); &lt;/p&gt;  &lt;p&gt;retorna 0. &lt;/p&gt;  &lt;p&gt;- charindex(subcadena,cadena,inicio): devuelve la posici&amp;#243;n donde comienza la subcadena en la cadena, comenzando la b&amp;#250;squeda desde la posici&amp;#243;n indicada por &amp;quot;inicio&amp;quot;. Si el tercer argumento no se coloca, la b&amp;#250;squeda se inicia desde 0. Si no la encuentra, retorna 0. Ejemplos: &lt;/p&gt;  &lt;p&gt; select charindex('or','Jorge Luis Borges',5); &lt;/p&gt;  &lt;p&gt;retorna 13. &lt;/p&gt;  &lt;p&gt; select charindex('or','Jorge Luis Borges'); &lt;/p&gt;  &lt;p&gt;retorna 2. &lt;/p&gt;  &lt;p&gt; select charindex('or','Jorge Luis Borges',14); &lt;/p&gt;  &lt;p&gt;retorna 0. &lt;/p&gt;  &lt;p&gt; select charindex('or', 'Jorge Luis Borges'); &lt;/p&gt;  &lt;p&gt;retorna 0. &lt;/p&gt;  &lt;p&gt;- replicate(cadena,cantidad): repite una cadena la cantidad de veces especificada. Ejemplo: &lt;/p&gt;  &lt;p&gt; select replicate ('Hola',3); &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;HolaHolaHola&amp;quot;; &lt;/p&gt;  &lt;p&gt;- space(cantidad): retorna una cadena de espacios de longitud indicada por &amp;quot;cantidad&amp;quot;, que debe ser un valor positivo. Ejemplo: &lt;/p&gt;  &lt;p&gt; select 'Hola'+space(1)+'que tal'; &lt;/p&gt;  &lt;p&gt;retorna &amp;quot;Hola que tal&amp;quot;. &lt;/p&gt;  &lt;p&gt;Se pueden emplear estas funciones enviando como argumento el nombre de un campo de tipo caracter.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sqlserverya.com.ar" target="_blank"&gt;Fuente&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-7820073210785135533?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/7820073210785135533/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=7820073210785135533&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/7820073210785135533?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/7820073210785135533?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/sql-server-25-funciones-para-el-manejo.html" title="Sql Server - 25 - Funciones para el manejo de cadenas" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0MFRHg4eCp7ImA9WxdUFUU.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-5001213871046465728</id><published>2008-08-01T06:03:00.001-03:00</published><updated>2008-08-01T06:03:35.630-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-01T06:03:35.630-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><title>Php - Como generar un Thumbnail en PHP utilizando GD</title><content type="html">&lt;p&gt;Antes que nada avisar que se requieren las librer&amp;#237;as GD para poder realizar los thumbnails. Y en funci&amp;#243;n de la versi&amp;#243;n de GD, podremos usar una u otra funci&amp;#243;n    &lt;br /&gt;Primero pegar&amp;#233; el c&amp;#243;digo de una funci&amp;#243;n con la que generaremos directamente un thumbnail de alta calidad.&lt;/p&gt;  &lt;p&gt;C&amp;#243;digo PHP:    &lt;br /&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt; thumbjpeg($imagen,$altura) {&lt;br /&gt;     // Lugar donde se guardar&amp;#225;n los thumbnails respecto a la carpeta donde est&amp;#225; la imagen &lt;span style="color: #b22222"&gt;&amp;quot;grande&amp;quot;&lt;/span&gt;.&lt;br /&gt;     $dir_thumb = &lt;span style="color: #b22222"&gt;&amp;quot;thumbs/&amp;quot;&lt;/span&gt;;&lt;br /&gt;     // Prefijo que se a&amp;#241;adir&amp;#225; al nombre del thumbnail. Ejemplo: si la imagen grande fuera &lt;span style="color: #b22222"&gt;&amp;quot;imagen1.jpg&amp;quot;&lt;/span&gt;,&lt;br /&gt;     // el thumbnail se llamar&amp;#237;a &lt;span style="color: #b22222"&gt;&amp;quot;tn_imagen1.jpg&amp;quot;&lt;/span&gt;&lt;br /&gt;     $prefijo_thumb = &lt;span style="color: #b22222"&gt;&amp;quot;tn_&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;     // Aqu&amp;#237; tendremos el nombre de la imagen.&lt;br /&gt;     $nombre=basename($imagen);&lt;br /&gt;     // Aqu&amp;#237; la ruta especificada para buscar la imagen.&lt;br /&gt;     $camino=dirname($imagen).&lt;span style="color: #b22222"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;     // Intentamos crear el directorio de thumbnails, si no existiera previamente.&lt;br /&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!file_exists($camino.$dir_thumb))&lt;br /&gt;          @mkdir ($camino.$dir_thumb, 0777) &lt;span style="color: #0000ff"&gt;or&lt;/span&gt; die(&lt;span style="color: #b22222"&gt;&amp;quot;No se ha podido crear el directorio &amp;quot;&lt;/span&gt;.$camino.$dir_thumb);&lt;br /&gt;&lt;br /&gt;     // Aqu&amp;#237; comprovamos que la imagen que queremos crear no exista previamente&lt;br /&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) {&lt;br /&gt;          echo $camino.$dir_thumb.$prefijo_thumb.$nombre.&lt;span style="color: #b22222"&gt;&amp;quot; NO exist&amp;#237;a&amp;lt;br&amp;gt;\\n&amp;quot;&lt;/span&gt;;&lt;br /&gt;          $img = @imagecreatefromjpeg($camino.$nombre) &lt;span style="color: #0000ff"&gt;or&lt;/span&gt; die(&lt;span style="color: #b22222"&gt;&amp;quot;No se encuentra la imagen $camino$nombre&amp;lt;br&amp;gt;\\n&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;          // miramos el tama&amp;#241;o de la imagen original...&lt;br /&gt;          $datos = getimagesize($camino.$nombre) &lt;span style="color: #0000ff"&gt;or&lt;/span&gt; die(&lt;span style="color: #b22222"&gt;&amp;quot;Problemas con $camino$nombre&amp;lt;br&amp;gt;\\n&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;          // intentamos escalar la imagen original a la medida que nos interesa&lt;br /&gt;          $ratio = ($datos[1] / $altura);&lt;br /&gt;          $anchura = round($datos[0] / $ratio);&lt;br /&gt;&lt;br /&gt;          // esta ser&amp;#225; la nueva imagen reescalada&lt;br /&gt;          $thumb = imagecreatetruecolor($anchura,$altura);&lt;br /&gt;&lt;br /&gt;          // con esta funci&amp;#243;n la reescalamos&lt;br /&gt;          imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);&lt;br /&gt;&lt;br /&gt;          // voil&amp;#224; la salvamos con el nombre y en el lugar que nos interesa.&lt;br /&gt;          imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre);&lt;br /&gt;     }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para llamar a la funci&amp;#243;n sencillamente hacer: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;thumbjpeg($imagen, 125);&amp;#160; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;En este caso, '$imagen', es la imagen que queremos reducir, y '125', es la altura en p&amp;#237;xeles que queremos que tenga la imagen reducida, de modo que el ancho quede proporcionado respecto a la imagen original.&lt;br /&gt;  &lt;br /&gt;&lt;em&gt;Con la instrucci&amp;#243;n &amp;#8220;or die()&amp;#8221; se mostrar&amp;#225; en pantalla el mensaje entrecomillado solo en el caso de que fallara la primera sentencia de la l&amp;#237;nea.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;NOTAS:&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;Si en lugar de GD2 disponemos de GD1, no podremos utilizar la funci&amp;#243;n &lt;strong&gt;imagecopyresampled()&lt;/strong&gt; y deber&amp;#237;amos conformarnos con la funci&amp;#243;n &lt;strong&gt;imagecopyresized()&lt;/strong&gt; , que utiliza los mismos par&amp;#225;metros, lo malo es que &amp;#233;sta &amp;#250;ltima da como resultado una imagen de calidad m&amp;#225;s pobre. A cambio, es mucho m&amp;#225;s r&amp;#225;pida que la anterior.&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;As&amp;#237; si tenemos GD2, podemos usar la que m&amp;#225;s nos interese, si queremos CALIDAD y no nos importa el n&amp;#250;mero de ciclos consumidos en el servidor, &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;imagecopyresampled();&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;en caso contrario:&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;imagecopyresized();&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;Si lo que queremos es crear im&amp;#225;genes &amp;quot;al vuelo&amp;quot;, sin guardarlas en ning&amp;#250;n archivo (cosa poco recomendable si usamos la funci&amp;#243;n de m&amp;#225;s calidad), el segundo par&amp;#225;metro de la funci&amp;#243;n imagejpeg() no se debe de poner, quedando la llamada en el scritp que hay m&amp;#225;s arriba:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;C&amp;#243;digo PHP:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;imagejpeg($thumb);&amp;#160; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Bueno, d&amp;#233;monos cuenta que este script solo sirve para reducir im&amp;#225;genes de tipo JPEG, no de otro, para otros formatos, tan solo habr&amp;#237;a que cambiar un par de funciones por las correspondientes en los formatos que nos interesen.&lt;br /&gt;  &lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;imagecreatefromjpeg()&lt;/strong&gt; por &lt;strong&gt;imagecreatefrompng()&lt;/strong&gt; o &lt;strong&gt;imagecreatefromwbmp()&lt;/strong&gt; o etc.&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;y &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;imagejpeg()&lt;/strong&gt; por &lt;strong&gt;imagepng() &lt;/strong&gt;o &lt;strong&gt;imagewbmp()&lt;/strong&gt; o etc.&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;a href="http://www.webnova.com.ar" target="_blank"&gt;Fuente&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-5001213871046465728?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/5001213871046465728/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=5001213871046465728&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/5001213871046465728?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/5001213871046465728?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/php-como-generar-un-thumbnail-en-php.html" title="Php - Como generar un Thumbnail en PHP utilizando GD" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ck8NQX06eCp7ImA9WxdUFUU.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-1641241509289891601</id><published>2008-08-01T05:54:00.001-03:00</published><updated>2008-08-01T05:54:50.310-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-01T05:54:50.310-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Basic" /><title>Visual Basic - Obtener Nro. de Serie de el disco</title><content type="html">&lt;p&gt;Para poder detectar cual es el n&amp;#250;mero de serie, deberemos utilizar una llamada a la API (cuando no?)    &lt;br /&gt;que se llama GetVolumeInformation... de la siguiente manera:&lt;/p&gt;  &lt;pre style="width: 100%; height: 86px"&gt;&lt;span style="color: #0000ff"&gt;Declare&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt; GetVolumeInformation &lt;span style="color: #0000ff"&gt;Lib&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;kernel32&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Alias&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;GetVolumeInformationA&amp;quot;&lt;/span&gt; _&lt;br /&gt;(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; lpRootPathName &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; lpVolumeNameBuffer &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; nVolumeNameSize _&lt;br /&gt;&lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, lpVolumeSerialNumber &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, lpMaximumComponentLength &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, lpFileSystemFlags _&lt;br /&gt;&lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; lpFileSystemNameBuffer &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; nFileSystemNameSize &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Todo en una sola linea, no lo olviden &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;y en el form... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 150px"&gt;NVolSize = 0: NVolNumber = 0: NMaxCompLength = 0&lt;br /&gt;NFileSFlags = 0: NFileSBuffer = 0: NFileSNames = 0&lt;br /&gt;Ruta = UCase(Left(Ruta, 1)) &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot;:\&amp;quot;&lt;/span&gt;&lt;br /&gt;ChDrive Ruta&lt;br /&gt;Nombre = Dir(Ruta, vbVolume)&lt;br /&gt;ret = GetVolumeInformation(Ruta, Nombre, NVolSize, NVolNumber, NMaxCompLength, _&lt;br /&gt;        NFileSFlags, NFileSBuffer, NFileSNames)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;If&lt;/span&gt; ret = 0 &lt;span style="color: #0000ff"&gt;Then&lt;/span&gt; Label1.Caption = &lt;span style="color: #b22222"&gt;&amp;quot;Numero de Serie del Volumen : &amp;quot;&lt;/span&gt; &amp;amp; Left(Hex(NVolNumber), 4) &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot;-&amp;quot;&lt;/span&gt; &amp;amp; Right(Hex(NVolNumber), 4) &amp;amp; vbCrLf &amp;amp; &lt;span style="color: #b22222"&gt;&amp;quot;Nombre del Volumen : &amp;quot;&lt;/span&gt; &amp;amp; Nombre&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.canalvisualbasic.net" target="_blank"&gt;Fuente&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-1641241509289891601?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/1641241509289891601/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=1641241509289891601&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/1641241509289891601?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/1641241509289891601?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/08/visual-basic-obtener-nro-de-serie-de-el.html" title="Visual Basic - Obtener Nro. de Serie de el disco" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;AkMAR3k9cCp7ImA9WxdUFUk.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-4693871987576323729</id><published>2008-07-31T20:54:00.001-03:00</published><updated>2008-07-31T20:54:06.768-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-31T20:54:06.768-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Basic" /><title>Visual Basic - Formulario Transparente</title><content type="html">&lt;p&gt;Insertar el siguiente Codigo en un Modulo:    &lt;br /&gt;&lt;/p&gt;  &lt;pre style="width: 100%; height: 45px"&gt;&lt;span style="color: #0000ff"&gt;Declare&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt; SetWindowLong &lt;span style="color: #0000ff"&gt;Lib&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;user32&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Alias&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;SetWindowLongA&amp;quot;&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; hwnd &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; nIndex &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; dwNewLong &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Nota: Debe estar todo en una sola linea (Usar el Visor de Texto API, que viene con Visual Basic) &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Insertar el siguiente Codigo en CommandButton para probar: &lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 102px"&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; Command1_Click()&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; Resp &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;br /&gt;    Resp = SetWindowLong(&lt;span style="color: #0000ff"&gt;Me&lt;/span&gt;.hWnd, -20, &amp;amp;H20&amp;amp;)&lt;br /&gt;    Form1.Refresh&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;En un m&amp;#243;dulo: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 169px"&gt;&lt;span style="color: #0000ff"&gt;Declare&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt; SetWindowLong &lt;span style="color: #0000ff"&gt;Lib&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;user32&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Alias&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;SetWindowLongA&amp;quot;&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; hwnd &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; nIndex &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; dwNewLong &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; WS_EX_TRANSPARENT = &amp;amp;H20&amp;amp;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_HINSTANCE = (-6)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_EXSTYLE = (-20)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_HWNDPARENT = (-8)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_ID = (-12)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_STYLE = (-16)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_USERDATA = (-21)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Const&lt;/span&gt; GWL_WNDPROC = (-4)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;y en el Form_Load &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 47px"&gt;&lt;span style="color: #0000ff"&gt;Call&lt;/span&gt; SetWindowLong(Form1.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-4693871987576323729?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/4693871987576323729/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=4693871987576323729&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/4693871987576323729?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/4693871987576323729?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/07/visual-basic-formulario-transparente.html" title="Visual Basic - Formulario Transparente" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkMNSHkyfCp7ImA9WxdUFUk.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-3193601655882112440</id><published>2008-07-31T20:48:00.001-03:00</published><updated>2008-07-31T20:54:59.794-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-31T20:54:59.794-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Basic" /><title>Visual basic - Ventana con forma eliptica</title><content type="html">Solamente necesitamos declarar en un Modulo lo siguiente:   &lt;pre style="width: 100%; height: 92px"&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Declare&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt; SetWindowRgn &lt;span style="color: #0000ff"&gt;Lib&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;user32&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Alias&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;SetWindowRgn&amp;quot;&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; hWnd &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, _&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; hRgn &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; bRedraw &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Boolean&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Declare&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt; CreateEllipticRgn &lt;span style="color: #0000ff"&gt;Lib&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;gdi32&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Alias&lt;/span&gt; &lt;span style="color: #b22222"&gt;&amp;quot;CreateEllipticRgn&amp;quot;&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; X1 &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, _&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; Y1 &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; X2 &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; Y2 &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;En el evento clic de la ventana &lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="width: 100%; height: 118px"&gt;&lt;span style="color: #0000ff"&gt;Private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt; Form_Click()&lt;br /&gt;       &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; Xs &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;, Ys &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Long&lt;/span&gt;&lt;br /&gt;        Xs = &lt;span style="color: #0000ff"&gt;Me&lt;/span&gt;.Width / Screen.TwipsPerPixelX&lt;br /&gt;        Ys = &lt;span style="color: #0000ff"&gt;Me&lt;/span&gt;.Height / Screen.TwipsPerPixelY&lt;br /&gt;    SetWindowRgn hWnd, CreateEllipticRng(0, 0, Xs, Ys), &lt;span style="color: #0000ff"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.canalvisualbasic.net" target="_blank"&gt;Fuente&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-3193601655882112440?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/3193601655882112440/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=3193601655882112440&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/3193601655882112440?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/3193601655882112440?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/07/visual-basic-ventana-con-forma-eliptica.html" title="Visual basic - Ventana con forma eliptica" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkIHSXY8fip7ImA9WxdUFUk.&quot;"><id>tag:blogger.com,1999:blog-5866703618443231475.post-6708475547103331067</id><published>2008-07-31T20:44:00.001-03:00</published><updated>2008-07-31T20:55:38.876-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-31T20:55:38.876-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Fox Pro" /><title>Visual Fox Pro - Crear PDF con PdfWriter</title><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;pre style="width: 100%; height: 153px"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; SAFETY &lt;span style="color: #0000ff"&gt;OFF&lt;/span&gt;&lt;br /&gt;WAIT WINDOW &lt;span style="color: #b22222"&gt;&amp;quot;Generando el Archivo PDF&amp;quot;&lt;/span&gt; TIMEOUT 1&lt;br /&gt;cImpPrinter = &lt;span style="color: #b22222"&gt;&amp;quot;Acrobat PDFWriter&amp;quot;&lt;/span&gt;&lt;br /&gt;REPORT FORM prestarepo2.frx NOCONSOLE &lt;span style="color: #0000ff"&gt;TO&lt;/span&gt; FILE Archipdf.ps&lt;br /&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; PRINTER &lt;span style="color: #0000ff"&gt;TO&lt;/span&gt; NAME  ( cImpPrinter ) &lt;br /&gt; &lt;br /&gt;* NOTA : PARA GENERAR DE FORMA AUTOMATIZADA EL ARCHIVO PDF INCLUIR LO SIGUIENTE EN EL ARCHIVO  &lt;span style="color: #b22222"&gt;&amp;quot;C:\SYSTEM\PDFWRITR.INI&amp;quot;&lt;/span&gt;  (UTILIZAR EL BLOC DE NOTAS)       &lt;br /&gt;* Ejemplo.-  PDFFileName = C:\EXAMPLE\EJEMPLO.PDF&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;Todo lo que un desarrollador necesita&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5866703618443231475-6708475547103331067?l=alldevsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://alldevsoft.blogspot.com/feeds/6708475547103331067/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5866703618443231475&amp;postID=6708475547103331067&amp;isPopup=true" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/6708475547103331067?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5866703618443231475/posts/default/6708475547103331067?v=2" /><link rel="alternate" type="text/html" href="http://alldevsoft.blogspot.com/2008/07/visual-fox-pro-crear-pdf-con-pdfwriter.html" title="Visual Fox Pro - Crear PDF con PdfWriter" /><author><name>Sebastian</name><uri>http://www.blogger.com/profile/02229599671614570931</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total></entry></feed>

