Conexion a una BD usando archivo *.INI

Angel
29 de Diciembre del 2005
Hola a todos, les agradeceria mucho si alguien pudiera decirme como leer un archivo *.INI en el cual indique el nombre del servidor, DB, etc (con SQLServer), desde el código, para asi no tener que estar entrando a modificar el codigo cuando vaya a otra maquina, gracias

semper
29 de Diciembre del 2005
Aqui tienes un ejemplo de como leer un archivo de texto buscando linea por linea una clave especificada y retornando como resultado el resto de la linea donde aparece dicha clave...

Coloca la funcion en un modulo para que la puedas utilizar desde cualquier parte de tu proyecto ...


En este ejemplo estoy asumiendo como sintaxis en cada linea leida del archivo indicado el formato "clave=valor_a_retornar" ... De modo que:
1) Busco la "clave" en la linea leida
2) Una vez encontrada, busco el signo de igual "="
3) Retorno como resultado lo que encuentre despues del signo "="
Si la linea no cumple las 2 primeras condiciones, el codigo se pasa a leer la siguiente linea ...


Para que lo pruebes, create el archivo que desees (por ej: Configuracion.ini) en el folder que elijas (por ej: en el path de la aplicacion) y llenalo con los valores que requieras siguiendo la sintaxis "clave=valor_a_retornar"...

Ejemplos:
SQLServer=ServidorNT
Database = BD_Pruebas
UserId= Angel
PwdId =AngelPWD
Initial Catalog=Tabla_Prueba

(En la funcion no importa si hay o no espacios antes y/o despues del signo de "=", a condicion de que se mantenga la sintaxis general en la linea) ...

Desde tu codigo, lo utilizas asi (continuando con los valores de ejemplo anteriores):

Dim cSQLServer As String
Dim cDatabase As String
Dim cUserId As String
Dim cPassword As String
Dim cTablaIni As String

cSQLServer = BuscarClave( App.Path & "Configuracion.ini, "SqlServer")

cDatabase = BuscarClave( App.Path & "Configuracion.ini, "Database")

cUserId = BuscarClave( App.Path & "Configuracion.ini, "USERID")

cPassword = BuscarClave( App.Path & "Configuracion.ini, "PwDiD")

' etc etc ...
(El segundo parametro no importa si esta en mayusculas, minusculas o mezcla de ambas) ...

' .......

Public Function BuscarClave(ArchivoIni As String, Clave As String) As String
Dim nFile As Long
Dim cLinea As String
Dim nLongClave As Long
Dim nPos As Long


nFile = FreeFile()
nLongClave = Len(Clave)
If nLongClave <= 0 Then Exit Function

Open ArchivoIni For Input As nFile
Do While Not EOF(nFile)
Line Input #nFile, cLinea
cLinea = LTrim(RTrim(cLinea))
If UCase(Left(cLinea, nLongClave)) = UCase(Clave) Then
For nPos = nLongClave + 1 To Len(cLinea)
If Mid(cLinea, nPos, 1) = "=" Then
Exit For
End If
Next
If nPos <= Len(cLinea) Then
Exit Do
End If
End If
cLinea = ""
Loop
Close nFile

If LTrim(RTrim(cLinea)) = "" Then
Exit Function
End If

BuscarClave = LTrim(RTrim(Mid(cLinea, nPos + 1)))

End Function

'........

Espero te sirva !!

Angel
29 de Diciembre del 2005
Muchas gracias Semper por la ayuda, me sirvio de mucho el codigo que pusiste.