miércoles, 1 de septiembre de 2010

VB - Uso de LIKE con SQL SERVER 2008

Seguramente en muchas oportunidades se nos han presentado los siguientes casos al momento de realizar nuestros formularios de consulta :

  • Consultar todo mis proveedores cuya razón social que inicien con el o los caracteres 'XYZ'
    Rpta:
    [RAZON_SOCIAL] LIKE 'XYZ%'

  • Consultar todo mis proveedores cuya razon social finalicen con el o los caracteres 'XYZ'
    Rpta:
    [RAZON_SOCIAL] LIKE '%XYZ'

  • Consultar todo mis proveedores cuya razon social contenga el o los caracteres 'XYZ'
    Rpta:
    [RAZON_SOCIAL] LIKE '%XYZ%'
Bueno en estos casos hemos echo uso de LIKE un operador relacional que se usa para realizar comparaciones exclusivamente de cadenas.
Tambien podemos hacer uso de un comodín [ ] el cual reemplaza cualquier carácter contenido en el conjunto especificado dentro de los corchetes.

Ejemplos:

LIKE '[AH]%'
Todo lo que comience por A ó H

LIKE '[A-H]%'
Todo lo que comience por cualquier letra comprendida entre la A y la H

LIKE '[A^N]%'
Todo lo que comience por A y la segunda letra no sea una N.

Bueno ahora vayamos a la práctica, vamos a hacer uso de este operador desde VB 6.0, manos a la obra.

1)Creamos nuestra Tabla lgProveedor con la siguiente estructura


2)Abrimos Microsoft Visual Basic 6.0, como vamos a trabajar con acceso a base de datos, lo primero que tenemos que hacer es hacer referencia a la biblioteca de ADO, como se muestra en la pantalla.



3)Añadimos el siguiente control MSFlexgrid

4)Ahora diseñamos nuestro formulario de consulta, como se muestra en la figura.

5)Ahora vamos a programar nuestro formulario de consulta
Primero declaramos nuestra cadena de conexión
Const strConexion As String = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" & _
"Initial Catalog=BDDEMO;Data Source=."


Ahora programamos el botón que nos va permitir realizar la consulta.

Private Sub Command1_Click()
Dim rsProveedor As New ADODB.Recordset
Dim strNombre, strSQL, strLIKE As String

Dim iFilas As Integer 'Nro de Registros

Dim iColumnas As Integer 'Nro de Columnas


strNombre = TxtNombre.Text

strSQL = "SELECT 'COD'=prov_cod"
strSQL = strSQL & ",'NOMBRE'=prov_nom"
strSQL = strSQL & ",'DIRECCION'=prov_dir"
strSQL = strSQL & ",'TLF'=prov_tlf "
strSQL = strSQL & " FROM lgProveedor WHERE "

strLIKE = " prov_nom LIKE '" & strNombre & "%'"


rsProveedor.Open strSQL & strLIKE, strConexion, adOpenStatic, adLockPessimistic

iFilas = rsProveedor.RecordCount

iColumnas = rsProveedor.Fields.Count

Flex.Rows = iFilas + 1

Flex.Cols = iColumnas + 1

'Vamos a poner el encabezado a nuestra grilla

For i = 0 To iColumnas - 1
Flex.TextMatrix(0, i + 1) = rsProveedor.Fields(i).Name
Next i
'--------------------------------------------

'Fijamos el Ancho de las columnas

Flex.ColWidth(0) = 180: Flex.ColWidth(1) = 1000
Flex.ColWidth(2) = 3800: Flex.ColWidth(3) = 3500
Flex.ColWidth(4) = 800
'--------------------------------------------

i = 0


For i = 0 To iFilas - 1

For j = 1 To iColumnas

Flex.TextMatrix(i + 1, j) = rsProveedor.Fields(j - 1).Value

Next j


rsProveedor.MoveNext

Next i


End Sub


6)Una vez finalizado, llego el momento de poner en marcha nuestro formulario de consulta, presionamos la tecla F5 y listo!!!!!!!!!


Espero les haya sido util este post.

No hay comentarios:

Publicar un comentario