Visual Basic - RecordSet Jerarquico

Life is soft - evento anual de software empresarial
   
Vista:

RecordSet Jerarquico

Publicado por julio (48 intervenciones) el 23/11/2007 21:19:43
Tengo una base de datos en Access que al recuperar las consultas, por la cantidad de registros, resulta lento. Por el momento no quiero migrar a un gestor de base de datos.
Estoy intentado usar recorset jerarquico, creo que con este recurso las consultas serán mas rapidas. Pero más allá de encontrar la solucion a la lentitud, no se como se usa el Shape en ADO.

Fuí a la ayuda de Visual Bsic, y encontré un ejemplo que al copiar el codigo en formulario automaticamente da líne roja de error.

(tambien visite la pagina de microsoft como utilizar el comando SHAPE de ADO, tampoco encuentro que tengo que hacer para poder usarlo en mi código)

Que tengo que activar para poder usarlo en Visual Basic 6: A continuacion el código que aparece en la ayudad de Visual Basic.

Sub datashape()

Dim cnn As New ADODB.Connection

Dim rst As New ADODB.Recordset

Dim rsChapter As Variant

cnn.Provider = "MSDataShape"

cnn.Open "Data Provider=MSDASQL;" & _
"DSN=vfox;uid=sa;pwd=vfox;database=pubs”

'PASO 1

rst.StayInSync = FALSE

rst.Open "SHAPE {select * from authors}
APPEND ({select * from titleauthor} AS chapter
RELATE au_id TO au_id)",
cnn

'PASO 2

While Not rst.EOF

Debug.Print rst("au_fname"), rst("au_lname"),
rst("state"), rst("au_id")

'PASO 3

rsChapter = rst("chapter")

'PASO 4

While Not rsChapter.EOF

Debug.Print rsChapter(0), rsChapter(1),
rsChapter(2), rsChapter(3)

rsChapter.MoveNext

Wend

rst.MoveNext

Wend

End Sub

Desde ya muchas gracias por vuestra ayuda
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:RecordSet Jerarquico

Publicado por pablo (19 intervenciones) el 24/11/2007 09:57:41
How To Use the ADO SHAPE Command

http://support.microsoft.com/default.aspx?scid=kb;EN-US;189657
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:RecordSet Jerarquico

Publicado por julio (48 intervenciones) el 24/11/2007 12:10:18
recordset jerarquico en ADO
Aquí la página oficial de microsoft (lo bueno, está en nuestro idioma)

http://support.microsoft.com/default.aspx?scid=kb;EN-es;189657

pero no pude encuentrar en ella QUE DEBO ACTIVAR para poder usarlo dentro de mi codigo. La cuestion, que ni la sintaxis dentro del editor me la acepta como valida. Supongo que algo me esta faltando, y no se qué es?.

Agradeceré su ayuda
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:RecordSet Jerarquico

Publicado por Yuridia (1 intervención) el 14/11/2008 16:24:14
Aumenta en un tu proveedor de datos el "PROVIDER = MSDataShape"
Asi:

rs.ActiveConnection = "PROVIDER=MSDataShape;Data PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=E:MiBaseDatos.mdb"
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:RecordSet Jerarquico

Publicado por JULIO (48 intervenciones) el 17/11/2008 22:07:03
Gracias por vuestra ayuda. En la actualidad migre a MySQL, mucho mas facíl de usar y con resultados muy superiores Access.
Muchisimas gracias
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:RecordSet Jerarquico

Publicado por Luis Alberto (8 intervenciones) el 18/12/2008 03:49:17
No sé si les sirva todavía. Yo tenía el mimo problema. La solución no es "activando" nada. Simplemente es parte de la estructura que forma el DataEnvironment (en adelante d.e.), es decir, primero creamos un d.e. y luego creamos un COMMAND con las sentencias sql-transac que deseamos, luego en las pesañas de propiedades buscamos la que dice AGRUPAR y ponemos los campos que queremos. Sin embargo, se puede usar un string SQL que se asigna al COMMANDTEXT del COMMAND, éste es el que tiene derecho a usar el famoso SHAPE. Les pongo mi ejemplo:

SQL = "SHAPE {" & _
"SELECT " & _
"cliente.clienteId, " & _
"cliente.cliente, " & _
"cliente_det.aparato, " & _
"cliente_det.defecto, " & _
"cliente_det.valor, " & _
"cliente_det.fecha, " & _
"cliente_det.fechaSig, " & _
"cliente_det.Observaciones " & _
"FROM " & _
"cliente, " & _
"cliente_det " & _
"WHERE " & _
"cliente.clienteId = cliente_det.clienteId " & _
"AND (cliente_det.fechaSig BETWEEN ? AND ?) " & _
"and (cliente_det.defecto like ? or cliente_det.observaciones like ?) " & _
"and (cliente.municipioId like ? and cliente.zona like ?)} AS rptFechasVisitas " & _
"COMPUTE " & _
"rptFechasVisitas BY 'clienteId','cliente'"

de.Commands.Item("rptFechasVisitas_Grouping").CommandText = SQL

La idea realmente es crear el COMMAND y luego manejarlo a nuestro antojo. Lo malo es que hay que definir a "piecito" los parámetros, ya sea en la ficha del COMMAND o desde el código. Es algo tedioso pero funciona.

Espero les sirva.

Saludos, desde Guatemala!
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