El Blog de Alex Borrás » Posts in 'Visual Basic' category

Documentos PDF en Visual Basic

Hay algunas aplicaciones que permiten que una persona firme un documento en una tableta digital y es necesario guardar una copia del mismo en el PC. Existen varias tables digitalizadoras que permiten realizar la firma e insertarla automáticamente en un documento PDF que tengamos abierto en ese momento.

El objetivo de esta entrada es describir como podemos generar PDF a partir de un modelo fijo con campos de formulario para fecha, nombre de la persona, etc. y una base de datos de nombres que tengamos en Access utilizando para ello Visual Basic 6.0.

Para ello tendremos un proyecto de Visual Basic con un formulario en el cual pondremos un primer desplegable para seleccionar de nuestra base de datos la persona que va a firmar el documento PDF. En caso de no tener las personas en base de datos podemos poner un campo de texto para escribir el nombre de la persona.

Seguidamente debemos tener un botón que permita seleccionar el PDF que se va a firmar. Si sólo tenemos un PDF basta con poner su ruta como valor interior o de formulario, si tenemos varios modelos debe haber un sistema que permita la sección del modelo a utilizar.

El problema surge en el momento de rellenar los campos del formulario PDF desde Visual Basic, a pesar de cargar todas las DLL disponibles de Acrobat en niguna de las clase aparecen métodos que permitan cambiar el valor de los campos de un formulario, o por lo menos, no lo supe encontrar. Existe una librería en Sourgeforge que permite asignar valores a los campso entre muchas otras funciones pero el problema es que está diseñada para Visual .Net y no es compatible con Visual Basic.

Sin embargo Googleando un mucho encontré una solución distinta y que me ha servidor, se trata de crear los campos en el documento PDF y después para a modo de relleno y asignar a cada campo un valor distinto, por ejemplo:

  • Fecha: C01-123456
  • Nombre:  C02-1234567890123456789012345678901234567890123456
  • DNI:  C03-12345678

Después se abre el PDF en modo binario y con la instrucción Replace cambios estos valores por los valores del formulario, por ejemplo:

Open “InputDocument.pdf” For Binary As #1
strBytes = Space$(LOF(1))
Get #1, 1, strBytes
Close #1
strBytes = Replace(strBytes, “C01-123456″, Format(Date, “dd-mm-yyyy”))
strBytes = Replace(strBytes, “C03-12345678″, “B45123678″)
‘ Grabar fichero de salida
Open strDocumento For Binary As #2
Put #2, , strBytes
Close #2

Lo quese debe tener en cuenta es que el String sustituido debe tener el mismo tamaño exacto.

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Visual Basic
Tags: ,

Replace: Reemplazar un String dentro de una cadena

La función Replace de Visual Basic reemplaza un string formado por uno o varios caracteres en una cadena por otro string formado por uno o varios caracteres.

Su sintaxis es simple no necesita ejemplos.

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Visual Basic

Split:Separar un String en varias partes

Se utiliza la función Split:

Visual Basic:
Dim matStrings() As String
txtstrings = "Uno,Dos,Tres"
matStrings = Split(txtStrings, ",")

Obtenemos una matriz de Strings con cada uno de los elementos:

matstrings(1) = "Uno"
matstrings(2) = "Dos"
matstrings(3) = "Tres"

VN:F [1.4.6_730]
Rating: 3.0/5 (1 vote cast)
Posted in Visual Basic
Tags: ,

Lista de campos de una tabla access

Modo resumido

Visual Basic:
Sub CamposDeTabla1()
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
    Set dbs = OpenDatabase("i:\intex winbol2000\E999\car.mdb")
    Set tdf = dbs.TableDefs("CART0001")
    For Each fld In tdf.Fields
        Debug.Print fld.Name
    Next
    Set fld = Nothing
    Set tdf = Nothing
    dbs.Close
End Sub


Modo ampliado

Visual Basic:
Sub CamposDeTabla()
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
    Set dbs = OpenDatabase("i:\intex winbol2000\E999\car.mdb")
    Set tdf = dbs.TableDefs("CART0001")
    For Each fld In tdf.Fields
        Select Case fld.Type
            Case 1 ' Boolean
                Debug.Print fld.Name
            Case 4 ' Long
                Debug.Print fld.Name
            Case 7 ' Double
                Debug.Print fld.Name
            Case 8 ' Date
                Debug.Print fld.Name
            Case 10 ' Text
                Debug.Print fld.Name
            Case 12 ' Memo
                Debug.Print fld.Name
            Case Else
                Debug.Print fld.Name
        End Select
    Next
    Set fld = Nothing
    Set tdf = Nothing
    dbs.Close
End Sub

VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Microsoft Access 2000, Visual Basic
Tags: , , ,

Visual Basic 6. Como crear un hipervínculo en un formulario

Hay varias formas de crear un hipervínculo en un formulario de Visual Basic y abrir una página Web.

Una muy sencilla es la siguiente:

  • Crear una label en el formulario y en el Caption poner el texto que queramos, la dirección o el nombre de la página que queremos abrir.
  • Cambiar la proipedad Font poniendo la característica de subrayado
  • Cambiar la propiedad ForeColor y ponerle Azul
  • Cambiar la propiedad MouseIcon y buscar un icono típico de Hipervínculo por ejemplo en: C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Cursors
  • Cambiar la propiedad MousePointer a 99 (personalizado)

Crear en el formulario el Evento Click y poner una llamada a la API ShellExecute pasando como parámetro la URL que queremos abrir.

VN:F [1.4.6_730]
Rating: 4.0/5 (1 vote cast)
Posted in Visual Basic

Equivalencias PHP - Visual Basic

Obtener un fragmento de una Cadena (String)

Visual Basic:

Visual Basic:
Dim MyString As String
MyString = "This is string example"
MsgBox Mid(MyString, 5, 10)

PHP:

PHP:
$MyString = "This is string example";
echo substr($MyString,5,10);

Nota: En ambos casos el contador de caracteres empieza en 0


VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Funciones, Visual Basic
Tags: ,

Nomenclatura de Controles ActiveX en Visual Basic

Descripción de los nombres que se deben utilizar al crear un control ActiveX.

Se toma como ejemplo un control de INTEX WinBol que calcula la tabla de clasificación de una competición:

Elemento

Nombre

Comentario

Control

Nombre del Control Clasificacion Descripción Nmemotécnica
Nombre de fichero Clasificacion.ctl = Control
Nombre del OCX Clasificacion.ocx = Control

Proyecto

Nombre de fichero ClasificacionP.vbp = Control + P
Nombre del proyecto ClasificacionP = Control + P
Descripción del Proyecto INTEX WinBol Clasificacion Es lo que se ve en Referencias, se pone delante la aplicación a la que pertenece.

Proyecto de Test

Nombre de fichero Proyecto1.vbp Nombre poco importante
Nombre del proyecto Proyecto1 Nombre poco importante
Formulario de Test Form1 Nombre poco importante

Grupo de Proyectos

Grupo1 Nombre poco importante
VN:F [1.4.6_730]
Rating: 0.0/5 (0 votes cast)
Posted in Visual Basic
Tags: ,