Visual Basic - Conexión a base de datos de red

Life is soft - evento anual de software empresarial
 
Vista:

Conexión a base de datos de red

Publicado por Christian (5 intervenciones) el 25/09/2002 18:23:10
Hol de antemano gracias.

Necesito que mi programita lea de algun lugar la dirección de la base de datos a la que se va a conectar, que lo haga solo una vez y que al inicialixzarse lea de esta fuente su ruta de coonexión.

no quiero hacerlo en una tabla de base de datos y se que se puede hacer con una archivo .ini o en el registro de windows pero no se como.

ayudame, gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Conexión a base de datos de red

Publicado por txibit.es.fm (29 intervenciones) el 25/09/2002 20:37:15
En primer lugar, metes la cadena de conexión en un archivo .ini, de la siguiente forma (es un ejemplo):

[DATOS]
CONEXION=Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Ges_Consultec;Data Source=desarrollo

(ésta era una conexión de SQL Server, si la conexión fuese contra una BD de Access la cadena de conexión sería una cosa así más o menos):

CONEXION=Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:\Mis documentos\Consultec\Getxo\BDatos\Empleo.mdb

Bien, supongamos que al archivo le has llamado Programa.ini

Nada más comenzar el programa (supongamos que comienza en un procedimiento Sub Main en uno de los módulos) declaramos una vble para el nombre del archivo .ini, una vble para recoger la cadena de conexión y un objeto connection para conectar con la bd:

Public Fichero_INI As String
Public Cadena_Conexion as String
Public Cnn as Connection

En el sub main pondremos algo así:

Sub Main()
Fichero_INI = App.Path & "\Programa.ini"
Call Abrir_Conexion
frmFormularioInicial.Show
End Sub

La función abrir_conexión será más o menos así:

Public Function Abrir_Conexion() As Boolean
On Error GoTo Hay_Error
Set Cnn = New Connection
Cadena_Conexion = IniLeer(Fichero_INI, "DATOS", "CONEXION")
Cnn.Open Cadena_Conexion
No_Hay_Error:
Abrir_Conexion = True
Salir:
Exit Function
Hay_Error:
Abrir_Conexion = False
Call MsgBox(Err.Description, vbOKOnly + vbCritical, "Mensaje de Error%
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Completo la respuesta anterior

Publicado por Christian A. Valeria Celedón (8 intervenciones) el 26/09/2002 03:09:47
La respuesta que te dio mi tocallo está bien, pero le faltó el código de la función IniLeer() así que te le adjunto. Crea un nuevo módulo y coloca lo siguiente:

Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Public Function IniLeer(FilePath As String, Section As String, KeyName As String) As String
Dim sReturn As String
Dim lReturn As Long
Dim LenReturn As Long
LenReturn = 4096
sReturn = String(LenReturn, 0)
lReturn = GetPrivateProfileString(Section, KeyName, "", sReturn, LenReturn, FilePath)
If lReturn <> 0 Then IniLeer = Left(sReturn, lReturn) Else IniLeer = ""
End Function

Además, si así lo quieres puedes agregar la siguiente función para escribir en un archivo .INI

Public Sub IniEscribir(FilePath As String, Section As String, KeyName As String, vKeyValue As Variant)
Dim sKeyValue As String
Dim lReturn As Long
If IsDate(vKeyValue) Then
sKeyValue = Format(vKeyValue, "dd/mm/yyyy")
Else
sKeyValue = CStr(vKeyValue)
End If
lReturn = WritePrivateProfileString(Section, KeyName, sKeyValue, FilePath)
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar