You are on page 1of 10

Obtener instancias de SQL Server y bases de datos disponibles

desde .NET (VB.NET)

Aqu os dejo el cdigo en VB.NET del formulario con los orgenes de datos de SQL Server
disponibles, vamos, lo mismo que este ejemplo pero para los que no os gusta el ";" :P

Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlClient

Public Class frmConexiones


Private servidores As SqlDataSourceEnumerator
Private tablaServidores As DataTable
Private servidor As String

Public Sub New()

' Llamada necesaria para el Diseador de Windows Forms.


InitializeComponent()

' Agregue cualquier inicializacin despus de la llamada a


InitializeComponent().
servidores = SqlDataSourceEnumerator.Instance
tablaServidores = New DataTable()
End Sub

Private Sub cmbServidores_Click(ByVal sender As System.Object, ByVal e


As System.EventArgs) Handles cmbServidores.Click

' Comprobamos que no se haya cargado ya el combobox


If tablaServidores.Rows.Count = 0 Then
' Obtenemos un dataTable con la informacin sobre
' las instancias disponibles de SQL Server 2000 y 2005
tablaServidores = servidores.GetDataSources()
' Creamos una lista para que sea el origen de datos
' del combobox
Dim listaServidores As List(Of String) = New List(Of String)

' Recorremos el dataTable y aadimos un valor nuevo la


' lista con cada fila
For Each rowServidor As DataRow In tablaServidores.Rows

' La instancia de SQL Server puede tener nombre


' de instancia o nicamente el nombre del servidor,
' comprobamos si hay nombre de instancia para
' mostrarlo
If String.IsNullOrEmpty(rowServidor("InstanceName").ToString()) Then
listaServidores.Add(rowServidor("ServerName").ToString())
Else
listaServidores.Add(rowServidor("ServerName") & "\\" &
rowServidor("InstanceName"))
End If

Next

'Asignamos la lista de servidores como origen de datos


' del combobox
Me.cmbServidores.DataSource = listaServidores
End If

End Sub

Private Sub cmbBasesdeDatos_Click(ByVal sender As System.Object, ByVal e


As System.EventArgs) Handles cmbBasesdeDatos.Click

Dim listaBasesDatos As List(Of String) = New List(Of String)


Dim cadenaConexion As String
Dim selectSQL As String

' Se comprueba que haya un servidor seleccionado para


' poder conectarnos
If Me.cmbServidores.Text = "" Then
MsgBox("Debe seleccionar un servidor")
Return
End If

servidor = Me.cmbServidores.Text

'Componemos la cadena de conexin con el servidor seleccionado y


' seguridad integrada
' si la autenticacin se hace con usuario y password hay
' que cambiar la cadena
cadenaConexion = "Data Source=" & servidor & " ;Integrated
Security=True;Initial Catalog=master"

Using con As New SqlConnection(cadenaConexion)

' Abrimos la conexin


con.Open()

'Obtenemos los nombres de las bases de datos que


' haya en el servidor
selectSQL = "select name from sys.databases;"

Dim com As SqlCommand = New SqlCommand(selectSQL, con)


Dim dr As SqlDataReader = com.ExecuteReader()

' Recorremos el dataReader


While (dr.Read())
listaBasesDatos.Add(dr(0).ToString())
End While

'Asignamos la lista de bases de datos como origen


'de datos del combobox
Me.cmbBasesdeDatos.DataSource = listaBasesDatos

End Using

End Sub

End Class
Convertir nmeros en letras en
SQL Server
/****** Object: UserDefinedFunction [dbo].[ufn_CantidadConLetra] Script
Date: 23/12/2014 14:07:42 ******/
DROP FUNCTION [dbo].[ufn_CantidadConLetra]
GO
/****** Object: UserDefinedFunction [dbo].[ufn_CantidadConLetra] Script
Date: 23/12/2014 14:07:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[ufn_CantidadConLetra]
(
@Numero Decimal(19,4)
)
RETURNS Varchar(180)
AS
BEGIN
DECLARE @lnEntero INT,
@lcRetorno VARCHAR(512),
@lnTerna INT,
@lcMiles VARCHAR(512),
@lcCadena VARCHAR(512),
@lnUnidades INT,
@lnDecenas INT,
@lnCentenas INT,
@lnFraccion INT
SELECT @lnEntero = CAST(@Numero AS INT),
@lnFraccion = (@Numero @lnEntero) * 100,
@lcRetorno = ,
@lnTerna = 1
WHILE @lnEntero > 0
BEGIN /* WHILE */
Recorro columna por columna
SELECT @lcCadena =
SELECT @lnUnidades = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnDecenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
SELECT @lnCentenas = @lnEntero % 10
SELECT @lnEntero = CAST(@lnEntero/10 AS INT)
print cast(@lnCentenas as varchar(3)) + cast(@lnDecenas as
varchar(3))+ cast(@lnUnidades as varchar(3))
print @lnEntero
Analizo las unidades
SELECT @lcCadena =
CASE /* UNIDADES */
WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN UNO + @lcCadena
WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN UN + @lcCadena
WHEN @lnUnidades = 2 THEN DOS + @lcCadena
WHEN @lnUnidades = 3 THEN TRES + @lcCadena
WHEN @lnUnidades = 4 THEN CUATRO + @lcCadena
WHEN @lnUnidades = 5 THEN CINCO + @lcCadena
WHEN @lnUnidades = 6 THEN SEIS + @lcCadena
WHEN @lnUnidades = 7 THEN SIETE + @lcCadena
WHEN @lnUnidades = 8 THEN OCHO + @lcCadena
WHEN @lnUnidades = 9 THEN NUEVE + @lcCadena
ELSE @lcCadena
END /* UNIDADES */
print @lcCadena
Analizo las decenas
SELECT @lcCadena =
CASE /* DECENAS */
WHEN @lnDecenas = 1 THEN
CASE @lnUnidades
WHEN 0 THEN DIEZ
WHEN 1 THEN ONCE
WHEN 2 THEN DOCE
WHEN 3 THEN TRECE
WHEN 4 THEN CATORCE
WHEN 5 THEN QUINCE
ELSE DIECI + @lcCadena
END
WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN VEINTE
+ @lcCadena
WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN VEINTI + @lcC
adena
WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN TREINTA
+ @lcCadena
WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN TREINTA Y
+ @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN CUARENTA
+ @lcCadena
WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN CUARENTA Y
+ @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN CINCUENTA
+ @lcCadena
WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN CINCUENTA Y
+ @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN SESENTA
+ @lcCadena
WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN SESENTA Y
+ @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN SETENTA
+ @lcCadena
WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN SETENTA Y
+ @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN OCHENTA
+ @lcCadena
WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN OCHENTA Y
+ @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN NOVENTA
+ @lcCadena
WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN NOVENTA Y
+ @lcCadena
ELSE @lcCadena
END /* DECENAS */
print @lcCadena
Analizo las centenas
SELECT @lcCadena =
CASE /* CENTENAS */
WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 T
HEN CIEN +@lcCadena
WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas
= 0) THENCIENTO + @lcCadena
WHEN @lnCentenas = 2 THEN DOSCIENTOS + @lcCadena
WHEN @lnCentenas = 3 THEN TRESCIENTOS + @lcCadena
WHEN @lnCentenas = 4 THEN CUATROCIENTOS + @lcCadena
WHEN @lnCentenas = 5 THEN QUINIENTOS + @lcCadena
WHEN @lnCentenas = 6 THEN SEISCIENTOS + @lcCadena
WHEN @lnCentenas = 7 THEN SETECIENTOS + @lcCadena
WHEN @lnCentenas = 8 THEN OCHOCIENTOS + @lcCadena
WHEN @lnCentenas = 9 THEN NOVECIENTOS + @lcCadena
ELSE @lcCadena
END /* CENTENAS */
print @lcCadena
Analizo los millares
SELECT @lcCadena =
CASE /* TERNA */
WHEN @lnTerna = 1 THEN @lcCadena
WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas
<> 0) THEN@lcCadena + MIL
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas
<> 0) AND
@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @
lcCadena + MILLON
WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas
<> 0) AND
NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) T
HEN @lcCadena+ MILLONES
WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas
<> 0) THEN@lcCadena + MIL MILLONES
ELSE
END /* MILLARES */
print @lcCadena
Armo el retorno columna a columna
print @lcCadena
SELECT @lcRetorno = @lcCadena + @lcRetorno
SELECT @lnTerna = @lnTerna + 1
END /* WHILE */
IF @lnTerna = 1
SELECT @lcRetorno = CERO
RETURN RTRIM(@lcRetorno)
END
GO
Para utilizar la funcin, solo deben consultarla con el nmero
que se desee convertir, de la siguiente forma:
SELECT [dbo].[ufn_CantidadConLetra](5321)

Espero que el ejemplo les haya sido de utilidad.