Provider=MSDataShape

Al parecer nadie puede decirme como crear un ODBC desde código por ello he decidido cambiar las conexiones a la BD. Hasta ahora todo me ha ido bien con lo siguiente:
cn2.Provider = "Microsoft.JET.OLEDB.4.0;" & _
"Jet OLEDB:Database Password=aa"
Cn2.Open "c:\RegistroBD.mdb"
Pero necesito crear un origen de datos para un recordset jerárquico y por mucho que he probado no consigo crearlo. Teniendo un ODBC creado hasta ahora lo había hecho así:
MiRecordset.ActiveConnection="Provider=MSDataShape.1;Persist Security Info=False;Data Source=" & BDDSN & ";Data Provider=MSDASQL"
BDDSN recibe el nombre del OBDC perviamente creado en Panel de Control
¿Cómo puedo hacerlo?

1 Respuesta

Respuesta
1
Estuve analizado la cuestión y creo que deberías utilizar ADO para todo ese tipo de cosas, que lo permite e implementa sin ningún problema
espero que este código de ejemplo te sirva !
En un modulo:
Global xBase As New Connection
Global Tclientes As New Recordset
Y luego:
Private Sub Form_Load()
'xBase.Open "Provider=Microsoft.JET.OLEDB.4.0;" & _
"User ID=sa;" & _
"Initial Catalog=master;" & _
"origen de datos=SERVIDOR"
xBase.Open "Provider=Microsoft.JET.OLEDB.4.0;User ID= ; password=; Catalogo inicial=master; origen de datos=SERVIDOR"
'Tabla.open "nombre de tabla o vista", BDD, Tipo cursor, Tipo bloqueo, Opciones
Tclientes.Open "vistacodcliente", xBase, adOpenKeyset, adLockOptimistic, adCmdTable
Tclientes.MoveLast
VidSocio = Tclientes!cod_cliente + 1
Tclientes.Close
Form1.Caption = VidSocio
Tclientes. Open "clientes", xBase, adOpenDynamic, adLockOptimistic, adCmdTable
CargarControles
Estoy utilizando ADO pero no se si de la forma correcta/usual
Tengo un formulario con un MSHFlexgrid con el siguiente código:
'Conexion
Dim cnShape As ADODB.Connection
'Recordset para dar origen al grid
Dim tHistAlb As ADODB.Recordset
Private Sub Form_Load()
Set cnShape = New ADODB.Connection
Set tHistAlb = New ADODB.Recordset
'NO ME FUNCIONA
'cnShape.Provider = "MSDataShape"
'cnShape.Open "Data Provider=MSDASQL;" & _
"database=" & App.Path & "\Base de Datos\BD.mdb;"
'tHistAlb.ActiveConnection = cnShape
'SI FUNCIONA
tHistAlb.ActiveConnection = "Provider=MSDataShape.1;Persist Security Info=False;Data Source=" & BDDSN & ";Data Provider=MSDASQL"
tHistAlb.CursorType = adOpenKeyset
tHistAlb.LockType = adLockOptimistic
Mostrar
End Sub
Sub Mostrar()
...
'Se genera la consultya SQL según algunos parametros y/o datos
tHistAlb.Source="SHAPE {SELECT ... FROM MAESTRO WHERE...} APPEND ({SELECT ... FROM DETALLES} RELATE...)
tHistAlb.Open
Set MSHFlexGrid.DataSource = tHistAlb
End sub
Este es más o menos el funcionamiento del formulario, muestra las facturas del cliente introducido.
El problema está en esa parte comentada (NO FUNCIONA), no se como generar la conexión sin ODBC.
Gracias.
PD: Me interesaría más saber como generar y modificar Fuentes de Datos ODBC (clave de la BD,...), ¿me puedes ayudar?
Primero. ¿Esta establecida la conexión OBDC desde el panel de control con la BDD en cuestión?
La lógica dice que lo que esta como NO FUNCIONA, debería poder...
Pero te propongo que hagas una prueba. Agrega un control ADODataControl al formulario (esta en componentes, hay que agregarlo) y a través de las propiedades (click derecho en el control, Propiedades) establezcas una conexión a la BDD usando un componente ODBC, le indiques con que tabla va a funcionar y esto te va a provocar una cadena de conexión que la vas a ver en la primer pestaña. Esta cadena (que esta bien), cópiala y pégala en el código en reemplazo de la cadena de conexión actual y probá a ver que sucede, debería funcionar... recordá que la lógica no siempre es lógica... en ultimo caso, si el programa no va a correr en una red podes crearlo (y es lo más conveniente) usando DAO que es más ágil en un entorno monousuario, ADO es más efectivo en entorno de red con servidor de BDD.
Y con respecto a
PD: Me interesaría más saber como generar y modificar Fuentes de Datos ODBC (clave de la BD,...), ¿me puedes ayudar?
Consulta en la página del guille: http://guille.costasol.net
(Mantenme al tantode las novedades. SUERTE)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas