VB.NET - Hacer una espera o pausa

Alguna vez es posible que necesitéis que el programa espere un tiempo antes de hacer algo.

Bueno la forma de hacerlo es:

System.Threading.Thread.Sleep(ElTiempoaEsperar)

Cuando llegue ahí el programa esperara el tiempo en milisegundos que le indiquemos.

Por ejemplo, si queremos que espere 3 segundos sería así:

System.Threading.Thread.Sleep(3000)

VB.Net - Comprobar si tu programa está en ejecución.

Función para comprobar si tu programa está en ejecución.

Te puede servir para que tu programa se ejecute solo una vez.

Te devuelve true si ya está en ejecución.

Function ProgramaEjecutado() As Boolean
If UBound(System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
Return True
Else
Return False
End If
End Function

VB.Net Dibujar con degradado con Drawin2D

Vamos a ver como podemos darle bonitos colores a nuestros controles a través de la librería Drawin2D

En este ejemplo vamos a hacerlo con un Panel, aunque se puede utilizar con cualquier contenedor que tenga el evento Paint y se pueda poner transparente.

El resultado sería como este:



Bueno vamos al lió!


Lo primero insertamos en el formulario el Panel, y le ponemos en la propiedad BackColor en Transparente (que está en la pestaña Web)

Ahora nos vamos al código e importamos la librería:

Imports System.Drawing.Drawing2D


Ahora nos vamos al evento Paint del panel. Y ponemos esto:

Dim Brocha As LinearGradientBrush
Dim Superficie As Graphics
Dim Rectangulo As Rectangle
Dim Lapiz As Pen

Try

'Aquí igualamos la variable superficie a los argumentos del panel
Superficie = e.Graphics
'Aquí seleccionaremos el color del borde (yo lo he puesto azul oscuro)
Lapiz = New Pen(Color.Navy, 1)

'Le damos el tamaño al rectángulo, cero a la altura y cero a la izquierda y
'el tamaño usamos las propiedades del Panel

Rectangulo = New Rectangle(0, 0, Panel1.Width, Panel1.Height)
'Aquí elegimos los colores del degradado y la forma del degradado
'Aquí esta puesto ForwardDiagonal, es decir, de esquina superior a la esquina inferior
'juega con esa propiedad para ver sus efectos
Brocha = New System.Drawing.Drawing2D.LinearGradientBrush(Rectangulo, Color.White, Color.Navy, LinearGradientMode.ForwardDiagonal)

'Aquí pintamos el cuadrado y luego el borde
Superficie.FillRectangle(Brocha, Rectangulo)
Superficie.DrawRectangle(Lapiz, Rectangulo)

'Lo liberamos de la memoria
Lapiz.Dispose()
Superficie.Dispose()
Catch ex As Exception
'No hacemos nada si falla. Si hay error
End Try




Y listo ya tendríamos nuestro panel decorado!!


Tambien, puedes añadir, por ejemplo, un label al Panel y en el mismo paint del Panel añadir que te pinte el Label de otro color, pasandole las propiedades del label

Rectangulo = New Rectangle(Label1.Left, Label1.Top, Label1.Width, Label1.Height)
Brocha = New System.Drawing.Drawing2D.LinearGradientBrush(Rectangulo, Color.Yellow, Color.LimeGreen, LinearGradientMode.ForwardDiagonal)
Superficie.FillRectangle(Brocha, Rectangulo)
Superficie.DrawRectangle(Lapiz, Rectangulo)

Quedaría así:






VB.Net - Capturar pantalla

Ahora vamos a crear un jpg que contenga una captura de la pantalla.

Hemos creado una función que devuelve una imagen, usamos el SendKeys para capturar la pantalla y la extraemos del portapapeles, luego llamaremos a la funcion y el resultado lo guardaremos en una ruta del disco duro.
Mira que bonito olle!

Public Function TrincarImagen() As Image

' Tamaño de lo que queremos copiar
' En este caso el tamaño de la ventana principal
Dim fSize As Size = Screen.PrimaryScreen.Bounds.Size
' Creamos el bitmap con el área que vamos a capturar
Dim bm As New Bitmap(fSize.Width, fSize.Height)
' Un objeto Graphics a partir del bitmap
Dim gr As Graphics = Graphics.FromImage(bm)
' Copiar todo el área de la pantalla
gr.CopyFromScreen(0, 0, 0, 0, fSize)

Return bm
End Function

Ahora solo queda llamar a la funcion y guardar la imagen. Seria algo asi:


Dim Pantallazo As Image
Pantallazo = TrincarImagen()
Pantallazo.Save("RUTA\pantallazo.jpg")



Listo!

VB.Net - Exportar DataGridView a Excel

Bueno, lo primero es añadir la referencia Microsoft.Office.Interop.Excel, dependiendo del Office que tengas podrás usar la versión 11 (hasta 2003) o la 12 (2007 jiji).

Bueno en resumen, lo que hago es, crear tres variables, que una sera el programa, el libro y otra la hoja. Luego solo nos queda escribir, y te saldrá un bonito cuento :)

Aquí os dejo la función, no es nada difícil de comprender.


Function GridAExcel(ByVal ElGrid As DataGridView) As Boolean

'Creamos las variables
Dim exApp As New Microsoft.Office.Interop.Excel.Application
Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet

Try
'Añadimos el Libro al programa, y la hoja al libro
exLibro = exApp.Workbooks.Add
exHoja = exLibro.Worksheets.Add()

' ¿Cuantas columnas y cuantas filas?
Dim NCol As Integer = ElGrid.ColumnCount
Dim NRow As Integer = ElGrid.RowCount

'Aqui recorremos todas las filas, y por cada fila todas las columnas y vamos escribiendo.
For i As Integer = 1 To NCol
exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).Name.ToString
'exHoja.Cells.Item(1, i).HorizontalAlignment = 3
Next

For Fila As Integer = 0 To NRow - 1
For Col As Integer = 0 To NCol - 1
exHoja.Cells.Item(Fila + 2, Col + 1) = ElGrid.Rows(Fila).Cells(Col).Value
Next
Next
'Titulo en negrita, Alineado al centro y que el tamaño de la columna se
ajuste al texto
exHoja.Rows.Item(1).Font.Bold = 1
exHoja.Rows.Item(1).HorizontalAlignment = 3
exHoja.Columns.AutoFit()


'Aplicación visible
exApp.Application.Visible = True

exHoja = Nothing
exLibro = Nothing
exApp = Nothing

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel")
'http://programaciontotal.blogspot.com
Return False
End Try

Return True

End Function



La función devuelve un True o un False, dependiendo si el resultado ha sido satisfactorio.

Si quieres también le puedes añadir un ProgressBar e ir sumándole uno al valor del Progress dentro del For.


Para llamar a la función es:

GridAExcel(nombreDeTuGrid)



Saludos

VB.Net - Enviar email

Ahora te voy a explicar como mandar un e-mail con visual basic .NET

Es bastante sencillo, esta sería la función:

Private Sub EnviarCorreo()


Dim smtpCliente As New
System.Net.Mail.SmtpClient("smtp.tudominio.com", 25)
Dim ELCorreo As New
System.Net.Mail.MailMessage("elqueenvia@tudominio.com",
"elquerecibe@dominio.com", "Asunto", "Mensaje")
smtpCliente.Credentials = New System.Net.NetworkCredential("Usuario", "Contraseña")
smtpCliente.Send(ELCorreo)

End Sub



Esa es la función, solo tienes que sustituir los datos por los tuyos :)

Por supuesto está función la podrás parametrizar por ejemplo, con todos los datos parametrizados.


Private Sub EnviarCorreo(ByVal Smtp As String, ByVal De As String, ByVal Para
As String, ByVal Asunto As String, ByVal Mensaje As String, ByVal Usuario As
String
, ByVal Pass As String)


Dim smtpCliente As New System.Net.Mail.SmtpClient(Smtp, 25)
Dim ELCorreo As New
System.Net.Mail.MailMessage(De, Para, Asunto,
Mensaje)
smtpCliente.Credentials = New System.Net.NetworkCredential(Usuario,
Pass)
smtpCliente.Send(ELCorreo)


End Sub


Ya solo queda llamar a la función con los parametros y ¡vuala! mensaje enviado :)


Acabo de actualizar.... si quieres mandar un archivo adjunto, tendrias que poner esto antes del Send

Dim att As New System.Net.Mail.Attachment("RUTAARCHIVO.EXT")
ELCorreo.Attachments.Add(att)

Aceptar más de una conexión con Winsock

Os voy a mostrar, como podemos aceptar varias peticiones de conexión con Winsock. Aqui doy por hecho, de que conoceis Winsock, solo que está parte es mas rebuscada.

Bueno al tajo, la idea es, mantener el control winsock siempre a la escucha, cuando llegue una petición cargamos otro Winsock y a ese se la asignamos. Así podras tener tantas conexiones quieras!

Veamos, lo primero que tienes que hacer, en el modo diseño, ir a las propiedades del Winsock y en Index poner un 0 (cero). Así conseguimos poder crear un array de controles del Winsock.

Ahora lo pondremos a escuchar, pondremos el primero, ahora mismo el unico winsock que tenemos, que es Winsock1(0), yo lo he hecho en el Load, tu donde tu quieras, un botón, ect.

Private Sub Form_Load()

'Aqui pones el puerto que quieras
Winsock1(0).LocalPort = "666"

'dejo escuchando conexiones entrantes
Winsock1(0).Listen


End Sub
Bien, primero creamos una variable en General para controlar el numero de Winsock que vamos creando y para luego poder usarlos. Yo la he llamado N ( no me he comido mucho la cabeza)

Dim N as Integer

Ahora utilizaremos el evento ConnectionRequest, para aceptar la petición de conexión, pero hay que modificarlo para que nos pille que control usamos, es decir, añadir el Index (lo marco en rojo).

Ahora, hacer mágia! jiji



Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)

On Error Resume Next

'Comprobamos que el Index sea el 0, nuestro escuchador de por vida.
If Index = 0 Then
'Sumamos uno al contador de Winsocks
N = N + 1
'Cargamos un nuevo Winsock
Load Winsock1(N)
Winsock1(N).LocalPort = 0
Winsock1(N).Accept requestID 'Aceptamos la conexión

end if

end sub

Listo! Ya tendriamos un winsock conectado. Para usarlo sería por ejemplo:

Winsock(1).SenData "Ou yeah!"

Recuerda que en cada evento del Winsock, tendrás que añadir el Index as Integer.

VB.Net - Windows Mobile - Leer coordenadas GPS

Buenas, os voy a poner los pasos para leer las coordenadas del GPS.

Las coordenadas se obtienen mediante el puerto COM, que tenga configurado el PDA para acceder al GPS. En mi caso es el COM4, eso lo mirais en la configuración del PDA. (Si no lo encontrais , id probando :D )

Bueno, al lio!

En el form añadir dos labels, txtLong y txtLat. Un botón llamado btnEmp. Además añadir un control SerialPort y un Timer.

Ahora pasamos a codificar.

Primero añadimos las librerias:

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel

Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.IO.Ports

Creamos las variables:
#Region "Variables"
Public Latitud As String
Public Longitud As String
#End Region
Ahora vamos a crear el constructor.

#Region "Constructor"
Public Sub New()
' Esto es necesario
InitializeComponent()
' Aqui intentamos abri el puerto
Try
SerialPort1.PortName = "COM4"
SerialPort1.Open()
Catch ex As Exception
MessageBox.Show(ex.Message)
Timer1.Enabled = False
btnEmp.Text = "Empezar"
Return
End Try
End Sub
#End Region
Creamos el código del botón, se limitara a apagar o encender el Timer:

Private Sub btnEmp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEmp.Click
'Comprobamos el estado del timer y lo invertimos.
If Timer1.Enabled = True Then
Timer1.Enabled = False
Else
Timer1.Enabled = True
End If
If btnEmp.Text = "Empezar" Then
btnEmp.Text = "Parar"
Else
btnEmp.Text = "Empezar"
End If
End Sub
Bueno ya nos queda configurar el Timer. Por el puerto Com entran muchas lineas de datos llamadas NEMA.

El código comprueba en primer luga, si el puerto serie está abierto , si lo es, lee la salida de datos en una cadena. Cada linea se separa con el simbolo del dolar $ . La cadena que nos interes, comienza por "GPGGA"; este subcadena contiene la latitud y la longitud, además de más información, separada por comas.

Este es el código:

Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

If SerialPort1.IsOpen Then
'En esta variable, insertamos todo lo leido del Puerto.
Dim datos As String = SerialPort1.ReadExisting()
'Aqui creamos las diferentes lineas, basandonos en el simbolo del dolar
Dim strArr() As String = datos.Split("$")
Dim i As Integer = 0

If strArr.Length > 1 Then
Try
For i = 0 To strArr.Length
'Ahora obtenemos los datos, separados por las comas.
Dim strTemp As String = strArr(i)
Dim lineArr() As String = strTemp.Split(",")

'Si la linea es GPGGA, cojemos los bloques de cadena 2 y 4 (latidud y longitud) y pasamos los datos obtenidos a coordenadas UTM.
If
(lineArr(0) = "GPGGA") Then
Try
Dim dLat As Decimal
Dim dLon As Decimal

dLat = Convert.ToDecimal(lineArr(2))
dLat = dLat / 100
Dim lat() As String = dLat.ToString().Split(".")
Latitud = lat(0).ToString() + "." + ((Convert.ToDouble(lat(1)) / 60)).ToString("#####")
txtLat.Text = Latitud

dLon = Convert.ToDecimal(lineArr(4))
dLon = dLon / 100
Dim lon() As String = dLon.ToString().Split(".")
Longitud = lon(0).ToString() + "." + ((Convert.ToDouble(lon(1)) / 60)).ToString("#####")
txtLong.Text = Longitud

Catch
' Si no podemos leer el GPS
'txtLat.Text = "No puedo leer GPS "
'txtLong.Text = "No puedo leer GPS"
End Try
End If
Next
Catch
'No hacemos nada
End Try
End If
Else
txtLat.Text = "Puerto COM Cerrado"
txtLong.Text = "Puerto COM Cerrado"
End If

End Sub



Ya podeís leer las coordenadas de vuestro GPS!.

Windows Mobile - VB.Net / C++ | Crear apliación de SQL Server

Sacado del Msdn

1-Crear una aplicación de SQL Server para dispositivos inteligentes


En esta sección, aprenderá a crear un proyecto para dispositivos inteligentes en Microsoft Visual Studio 2005, agregar funcionalidad de Microsoft SQL Server 2005 Mobile Edition (SQL Server Mobile) al proyecto y, después, crear una base de datos de SQL Server Mobile usando el espacio de nombres System.Data.SqlServerCe. En la .NET Framework Reference Documentation hay temas de referencia para el espacio de nombres System.Data.SqlServerCe.
Crear un proyecto con dispositivos inteligentesCrear un proyecto con dispositivos inteligentes

Para crear una aplicación para dispositivos inteligentes, primero debe crear el proyecto en Visual Studio 2005.
Para crear un proyecto para dispositivos inteligentes

1. En Visual Studio 2005, en el menú Archivo, seleccione Nuevo y, a continuación, seleccione Proyecto.
2. En la lista Tipos de proyecto del cuadro de diálogo Nuevo proyecto, expanda el lenguaje de programación que desee usar y, a continuación, seleccione Dispositivo inteligente.
3. En la lista Plantillas, seleccione el tipo de proyecto que desee crear. Por ejemplo, si va a programar una aplicación para Pocket PC 2003, seleccione Aplicación para Pocket PC 2003.
4. Escriba un nombre y ubicación para el proyecto y, a continuación, haga clic en Aceptar.

Visual Studio crea un nuevo proyecto y muestra el formulario principal (Form1). La pantalla será parecida al sistema operativo que elija.

Agregar SQLServer Mobile al proyectoAgregar SQLServer Mobile al proyecto

El siguiente paso para crear una aplicación compatible con SQL Server Mobile consiste en agregar una referencia al ensamblado de SQL Server Mobile.
Para agregar una referencia a SQL Server Mobile

1. En Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en Referencias y seleccione Agregar referencia.
Nota: Si la carpeta Referencias no aparece en el Explorador de soluciones, haga clic en Mostrar todos los archivos en la parte superior del Explorador de soluciones.

2. En la lista de ensamblados de .NET, seleccione System.Data.SqlServerCe y, a continuación, haga clic en Aceptar. Si System.Data.SqlServerCe no aparece, siga estos pasos:
2.1. Haga clic en Examinar.
2.2. Busque el siguiente directorio:
C:\Archivos de programa\Microsoft Visual Studio 8\Common7\IDE
2.3. Seleccione System.Data.SqlServerCe.dll y, a continuación, haga clic en Aceptar.

La lista de referencias del Explorador de soluciones incluye ahora System.Data.SqlServerCe y su proyecto puede utilizar este ensamblado.

3. En Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en Form1.cs o Form1.vb y seleccione Ver código.

4.
En la parte superior del código para el formulario, agregue una directiva para utilizar el espacio de nombres System.Data.SqlServerCe:

C#

using System.Data.SqlServerCe;

Visual Basic
Imports System.Data.SqlServerCe


Usar los objetos de SQLServer MobileUsar los objetos de SQLServer Mobile

Después de agregar el espacio de nombres System.Data.SqlServerCe, puede empezar a usar código en él mediante los objetos de SQL Server Mobile. En el siguiente ejemplo de código se muestra cómo usar el objeto Engine para crear un archivo de base de datos de SQL Server Mobile.

C#
using System.Xml;
using System.Data;
using System.Data.SqlServerCe;
using System.Data.Common;
using System.Windows.Forms;
using System.IO;

public class NETCF_SqlCeEngine
{
public void CreateDB()
{
File.Delete("Test.sdf");
string connString = "Data Source='Test.sdf'; LCID=1033; Password=\"s$;2'!dS64\"; Encrypt = TRUE;";
SqlCeEngine engine = new SqlCeEngine(connString);
engine.CreateDatabase();
}
}

Visual Basic

Imports System
Imports System.Xml
Imports System.Data
Imports System.Data.SqlServerCe
Imports System.Data.Common
Imports System.Windows.Forms
Imports System.IO

Public Class NETCF_SqlCeEngine

Public Sub CreateDB()
File.Delete("Test.sdf")
Dim connString As String = "Data Source='Test.sdf'; LCID=1033; Password=""s$;2'!dS64""; Encrypt = TRUE;"
Dim engine As New SqlCeEngine(connString)
engine.CreateDatabase()
End Sub
End Class


2-Un ejemplo sacado del MSDN

http://msdn2.microsoft.com/es-es/library/ms174006.aspx

3-Usar el método CreateDatabase

El método CreateDatabase permite crear una nueva base de datos de SQL Server 2005 Mobile Edition (SQL Server Mobile) en el entorno de desarrollo Microsoft Visual Studio .NET.
EjemplosEjemplos

El código siguiente muestra cómo crear un nuevo objeto SqlCeEngine y luego llamar el método CreateDatabase para crear una nueva base de datos de SQL Server Mobile. En este ejemplo, se utiliza un objeto System.IO.File para comprobar si el archivo de base de datos existe. Si existe, se elimina la base de datos. A continuación, se crea una nueva base de datos con el método CreateDatabase.

C#
if (File.Exists("Test.sdf"))
File.Delete("Test.sdf");

string connStr = "Data Source = Test.sdf; Password = ;";

SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();
Visual Basic
If File.Exists("Test.sdf") Then
File.Delete("Test.sdf")
End If
Dim connStr As String = "Data Source = Test.sdf; Password = ;"

Dim engine As New SqlCeEngine(connStr)
engine.CreateDatabase()
engine.Dispose()

Visual Basic - Extraer el codigo fuente de una Web

Para extraer el codigo fuente de una Web, usaremos el control Inet.

Para usar el control inet, añadimos el control Microsoft Internet Transfer Control.

Y asi extraeremos el codigo:


Dim Datos As String

Datos = Inet1.OpenURL("http://programaciontotal.blogspot.com")
Ahora la variable datos, contendrá el codigo fuente de la página.

BlackBerry - Pasar al Connector los datos del APN

Para usar los datos de la Apn en el momento de la conexión, sin tener que configurarlo en la Blackberry, usa este codigo en la conexión.

conn = (HttpConnection)Connector.open(Url+";deviceside=true;apn=TUAPN;tunnelauthusername=USUARIO;tunnelauthpassword=CONTRASEÑA");
Esto es un ejemplo de como seria con Vodafone:

conn = (HttpConnection)Connector.open(Url+";deviceside=true;apn=ac.vodafone.es;tunnelauthusername=vodafone;tunnelauthpassword=vodafone");

Visual Basic - Pasar un Recordset a Excel

Esto es una función, que le pasais, un Recorset Ado, un Spreadsheet (ahora lo defino), una Barra de progreso y un Label (para mostrar las cantidades) y pasara todo el recorset a un Excel

Spreadsheet es un control, es un libro Excel en si. Para utilizarlo, en componentes, añadis Microsoft Office Web Components. Os aparecera una serie de controles de Office, pues agregais al Formulario el de Excel.

¡Pues no necesitais mas! Aqui esta la función


Function RellenaExcel(Rs As ADODB.Recordset, ByRef Excel As Spreadsheet, ByRef Barra As ProgressBar, MostrarCantidades As Label) As Boolean

Dim Max As Integer
Dim Fila As Integer


Barra.Min = 0
Barra.Value = 0
If Rs.RecordCount <> 0 Then
Barra.Max = Rs.RecordCount
MostrarCantidades.Caption = "0 / " + Str(Barra.Max)
Else
MsgBox "El resultado de la consulta no contiene datos.", vbExclamation
Exit Function
End If
Max = Rs.Fields.Count - 1

For i = 0 To Max
Excel.ActiveSheet.Cells(1, i + 1).Value = Rs(i).Name
Next i


Fila = 2
Barra.Value = 1
MostrarCantidades.Caption = "1 / " + Str(Barra.Max)

While Not Rs.EOF

For i = 0 To Max
Excel.ActiveSheet.Cells(Fila, i + 1).Value = Rs(i).Value
Next i

Barra.Value = Fila - 1
DoEvents
MostrarCantidades.Caption = Str(Barra.Value) + " / " + Str(Barra.Max)
Fila = Fila + 1
Rs.MoveNext

Wend


With Excel.ActiveSheet.Range(Excel.Cells(1, 1), Excel.ActiveSheet.Cells(1, Max + 1))
.Font.Bold = True
.Font.Size = 10
.Font.Name = "Arial"
.Font.Color = vbWhite
'.Borders.Color = vbGreen
.Interior.Color = RGB(0, 0, 128)
.Borders.Color = RGB(0, 0, 0)

End With
With Excel.ActiveSheet.Range(Excel.Cells(2, 1), Excel.ActiveSheet.Cells(Fila - 1, Max + 1)).Font
.Size = 9
'.Bold = True
.Name = "Arial"
End With

Set rango = Excel.Worksheets("Hoja1").Range("A1:BV" + Trim(Fila + 1))
rango.Columns.AutoFit

RellenaExcel = True



End Function

Visual Basic - Conectar con Base de Datos Acces

Lo primero que hay que hacer es añadir la referencia Microsoft ADO.

Ahora, conectamos con las base de datos.

Set BaseDatos = Workspaces(0).OpenDatabase("RutadelaBD\bd.mdb", False, False)

Cuando conectamos, abrimos un recorset con la consulta que queremos realizar.

SQL = "SELECT * FROM Clientes"

Set Rs = BaseDatos.OpenRecordset(SQL, dbOpenSnapshot)

Luego imprimimos los resultados

Msgbox "Nombre: "+ Rs!Nombre

Si la consulta devuelve mas de una fila, para pasar de un registro a otro utilizamos, Rs.MoveNext

Un ejemplo sería:

while not Rs.EOF
combo1.addItem Rs!Nombre
Rs.MoveNext
end while

El while not Rs.EOF significa, Mientras no sea el final del RecordSet

BlackBerry - Pin, número de télefono e IMEI.

Para capturar el Pin y el teléfono (el teléfono que captura es el que esta configurado en la BlackBerry,(opciones avanzadas -> SIM)) usamos las clases DeviceInfo y Phone

String Pin = (Integer.toString(net.rim.device.api.system.DeviceInfo
.getDeviceId(),16)).toUpperCase();

String Tel = "" + net.rim.blackberry.api.phone.Phone
.getDevicePhoneNumber(fals
e)
;

String imei = new String(net.rim.device.api.system.GPRSInfo.imeiToString
(net.rim.device.api.system.GPRSInfo.getIMEI()));;

Como veis, para poder capturar el Pin correctamente, hemos tenido que pasar la información que recibimos a Hexadecimal.

BlackBerry - Crear icono para una Web

Aqui te pongo el código para crear un icono de acceso directo a una Web.



import net.rim.device.api.ui.UiApplication;
import net.rim.blackberry.api.browser.*;

public class IconoWeb extends UiApplication {

public IconoWeb() {
BrowserSession visita=Browser.getDefaultSession();
visita.displayPage("http://programaciontotal.blogspot.com");
visita.showBrowser();
System.exit(0);
}

public static void main(String[] args) {
IconoWeb iw = new IconoWeb();
iw.enterEventDispatcher();

}
}

Por último, en las propiedades del proyecto, le asignais un icono, y listo!

* Esta aplicación debe ser firmada con las Secure Apis de Rim

SQL - Reducir el fichero de Log

Reducir el fichero de log es importante, para ganar espacio de disco duro y quita las transaciones que puedan estar causando algun interbloqueo.

BACKUP LOG MiBase WITH TRUNCATE_ONLY
DBCC SHRINKFILE (MiBase_Log, 100)

Con este codigo, reduciras el fichero de log a 100 megas.

BlackBerry - Escribir en el Registro de Eventos (ALT + LGLG)


Para poder escribir en el Registro de eventos, hay que utilizar la clase EventLogger.

Priemero importamos la clase.

import net.rim.device.api.system.EventLogger;



Luego hay que registrar la aplicación usando el evento register.

EventLogger.register(0x838d33f5c17fdb7dL,"MiApp", EventLogger.VIEWER_STRING)

Ese numero tan raro es el nombre del programa convertido a Long. (En este caso MiApp)

¿Como lo sacas?, Muy facil, escribe el nombre del programa en cualquier parte, lo seleccionas y eliges la opcion "Convert String to a Long"

Ya solo nos queda usar el evento logEvent para escribir cuando queramos.

EventLogger.logEvent(0x28287bf38ffcab2aL, (("Mensaje para el Registro de eventos".getBytes(),EventLogger.INFORMATION );
Como veis la Cadena hay qye pasarla en bytes.

Utilizando esto, sabreis que hace en cada momento vuestro programa en la BlackBerry.

Conexión base de datos SQL Server en Visual Basic 6. ADO

Este codigo es un ejemplo de una conexión ADO con una base de datos SQL Server.

Dim rs As New ADODB.Recordset
Dim cn As ADODB.Connection

'Abrimos la base de datos
Set cn = New ADODB.Connection
sCon = "driver={SQL Server};"
sCon = sCon + "Server=TUSERVIDOR;uid=USUARIO;pwd=PASS;"
sCon = sCon + "database=TUBASEDEDATOS"
cn.ConnectionString = sCon
cn.ConnectionTimeout = 30
cn.Open

'Aqui usamos un Recorset para extraer los datos de la consulta

QuerySQL = "SELECT * FROM TABLA"
rs.CursorLocation = adUseClient
rs.Open QuerySQL, cn, adOpenKeyset, adLockOptimistic