Acerca de:

Este blog contiene los códigos, ejemplos y bases de datos que he usado cuando aprendía acerca de algún tema específico. En lugar de borrarlos (una vez dominado ya el tema), he decidido publicarlos :)

martes, 28 de diciembre de 2010

Código fuente en VB6 para llenar un TreeView con las tablas, y otro con las vistas, de una Base de Datos en SQL Server 2005

El código fuente es muy parecido para hacer lo mismo en Oracle 10g 
De todos modos voy a poner el código fuente completo con la explicación:

En TreeView1 irán las tablas y en TreeView2 irán las vistas. "db" es un objeto tipo Connection, "nodx" es un objeto tipo Node, "rs" y "rs1" son Recordset, "count" es una variable tipo Integer. El estilo (propiedad Style) de los TreeViews es el número 7.


db.Open miConnectionString 'cadena de conexión a la BD en SQL Server

TreeView1.Nodes.Clear
Set rs = db.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))
count = 0
Set nodx = TreeView1.Nodes.Add(, , "Root", "El título que le quiero poner")

Do Until rs.EOF
    count = count + 1
    Set nodx = TreeView1.Nodes.Add(1, tvwChild, "a" & str(count), rs!TABLE_NAME)
    rs.MoveNext
Loop
rs.Close

TreeView2.Nodes.Clear
rs1 = db.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "VIEW"))  ' <<== Acá
count = 0
Set nodx = TreeView2.Nodes.Add(, , "Root", "El título que le quiero poner")

Do Until rs1.EOF
    count = count + 1
    Set nodx = TreeView2.Nodes.Add(1, tvwChild, "a" & str(count), rs1!TABLE_NAME)
    rs1.MoveNext
Loop
rs1.Close

Si se intenta abrir el recordset rs1 con db.OpenSchema(adSchemaViews) nos dará error, y si se le coloca un On Error Resume Next, el bucle que recorre rs1 será infinito, pues como rs1 nunca se abrió, su propiedad EOF nunca será verdadera.

lunes, 6 de diciembre de 2010

VB6: usando InStrRev para separar el nombre de un archivo de la ruta donde está almacenado

Imaginemos que tengo este string que contiene la ruta a una rchivo:

unaRuta = "C:\unaCarpeta\otraCarpeta\unArchivo.txt"

Y quisiera separalo en dos strings, con la ruta del archivo y el nombre del archivo por separado:

miRuta =  "C:\unaCarpeta\otraCarpeta\"
miArchivo = "unArchivo.txt"

Para hacerlo uso la función de VB6 InStrRev, que busca una cadena dentro de otra pero enpezando desde el final.
El código completo es:

Dim miRuta as String
Dim miArchivo as String
Dim unaRuta as String
Dim unaLen as Long

unaRuta = "C:\unaCarpeta\otraCarpeta\unArchivo.txt"

miRuta = Left$(unaRuta, InStrRev(unaRuta, "\"))

unaLen = Len(unaRuta) - InStrRev(unaRuta, "\")
miArchivo = Right$(unaRuta, unaLen)

Con este código chiquito ya tenemos separados el nombre de un archivo de la ruta donde está almacenado :D