Dudas SQL Server 2005 Express / VB6

19/12/2006 - 14:56 por BonoMan | Informe spam
Hola:

Estoy migrando una aplicación hecha en VB6 de Access 2000 a SQL Server
2005 Express, y me encuentro con varias dudas / problemas:

1.- De la base de datos anterior en Access 2000 vinculaba varias tablas
a otra base de datos también en Access 2000 en otra ubicación y actualizaba
estos vinculos por si la base de datos principal había cambiado de ubicación
con el siguiente código (ahora adaptado a SQL Server 2005 Express):

Public Function actualizaVinculosWeb() As Boolean
On Error GoTo ErrVin

actualizaVinculosWeb = False

With cnnActual
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.path & "\Web\Web.mdb"
.Open
End With

' Abro el catálogo
Set Cat = New ADOX.Catalog
Cat.ActiveConnection = cnnActual

If Not vinculaTabla("Productos") Then Exit Function
If Not vinculaTabla("Servicios") Then Exit Function
If Not vinculaTabla("Web_Contadores") Then Exit Function
If Not vinculaTabla("Web_Imagenes") Then Exit Function
If Not vinculaTabla("Web_Textos") Then Exit Function

actualizaVinculosWeb = True

ErrVin:
cnnActual.Close
End Function

Private Function vinculaTabla(NomTabla As String) As Boolean
On Error GoTo ErrTbl

vinculaTabla = False

Cat.Tables.Item(NomTabla).Properties("Jet OLEDB:Link Provider String") =
"Provider=SQLNCLI.1;Integrated Security=SSPI; " & _
"Data
Source=(local)\SQLEXPRESS; " & _
"AttachDbFilename=" & App.path
& "\Datos\Principal.mdf; " & _
"Persist Security Info=False;
"
Cat.Tables.Item(NomTabla).Properties("Jet OLEDB:Remote Table Name") =
NomTabla

vinculaTabla = True

ErrTbl:
End Function

Este código (adaptado tal cual a SQL Server 2005 Express) me devuelve el
error "No se pudo encontrar el archivo ISAM instalable.", lo he intentado
sin la propiedad AttachDbFilename, ubicando la base de datos en el
directorio de datos por defecto de SQL 2005, pero el resultado es el mismo
(el resto de la aplicación funciona perfectamente en ambos casos), ¿Alguien
sabe si es posible realizar esto? o ¿Tiene algún error la cadena de
conexión?.

2.- Mi otra pregunta es... ¿Como detecto si el sistema tiene instalado
.NET Framework 2.0 y SQL Server 2005 Express con un instalador de VB6
convencional (hecho con Wise 9.0? Supongo que tendré que buscar una
ubicación en concreto.

Un saludo y gracias por adelantado.
 

Leer las respuestas

#1 Maxi
19/12/2006 - 18:22 | Informe spam
Bono, para vincular servidores SQL tiene otros metodos, o bien hacer un
linked server con sp_addlinkedserver o sino usar consultas Adhoc como
podrian ser Openrowset. Te recomiendo que leas en tus libros online con
respecto a estos temas


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"BonoMan" escribió en el mensaje
news:%
Hola:

Estoy migrando una aplicación hecha en VB6 de Access 2000 a SQL Server
2005 Express, y me encuentro con varias dudas / problemas:

1.- De la base de datos anterior en Access 2000 vinculaba varias tablas
a otra base de datos también en Access 2000 en otra ubicación y
actualizaba estos vinculos por si la base de datos principal había
cambiado de ubicación con el siguiente código (ahora adaptado a SQL Server
2005 Express):

Public Function actualizaVinculosWeb() As Boolean
On Error GoTo ErrVin

actualizaVinculosWeb = False

With cnnActual
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.path & "\Web\Web.mdb"
.Open
End With

' Abro el catálogo
Set Cat = New ADOX.Catalog
Cat.ActiveConnection = cnnActual

If Not vinculaTabla("Productos") Then Exit Function
If Not vinculaTabla("Servicios") Then Exit Function
If Not vinculaTabla("Web_Contadores") Then Exit Function
If Not vinculaTabla("Web_Imagenes") Then Exit Function
If Not vinculaTabla("Web_Textos") Then Exit Function

actualizaVinculosWeb = True

ErrVin:
cnnActual.Close
End Function

Private Function vinculaTabla(NomTabla As String) As Boolean
On Error GoTo ErrTbl

vinculaTabla = False

Cat.Tables.Item(NomTabla).Properties("Jet OLEDB:Link Provider String") =
"Provider=SQLNCLI.1;Integrated Security=SSPI; " & _
"Data
Source=(local)\SQLEXPRESS; " & _
"AttachDbFilename=" &
App.path & "\Datos\Principal.mdf; " & _
"Persist Security Info=False;
"
Cat.Tables.Item(NomTabla).Properties("Jet OLEDB:Remote Table Name") =
NomTabla

vinculaTabla = True

ErrTbl:
End Function

Este código (adaptado tal cual a SQL Server 2005 Express) me devuelve
el
error "No se pudo encontrar el archivo ISAM instalable.", lo he intentado
sin la propiedad AttachDbFilename, ubicando la base de datos en el
directorio de datos por defecto de SQL 2005, pero el resultado es el mismo
(el resto de la aplicación funciona perfectamente en ambos casos),
¿Alguien
sabe si es posible realizar esto? o ¿Tiene algún error la cadena de
conexión?.

2.- Mi otra pregunta es... ¿Como detecto si el sistema tiene instalado
.NET Framework 2.0 y SQL Server 2005 Express con un instalador de VB6
convencional (hecho con Wise 9.0? Supongo que tendré que buscar una
ubicación en concreto.

Un saludo y gracias por adelantado.

Preguntas similares