Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Crear recorset virtual

Estas en el tema de Crear recorset virtual en el foro de Visual Basic clásico en Foros del Web. Hola. Una pregunta por favor. Se puede crear un recorset virtual, sin utilizar tablas de ningun tipo, solo con valores que yo quiero ? Si ...
  #1 (permalink)  
Antiguo 30/08/2006, 07:29
 
Fecha de Ingreso: julio-2006
Mensajes: 98
Antigüedad: 18 años, 9 meses
Puntos: 0
Crear recorset virtual

Hola. Una pregunta por favor. Se puede crear un recorset virtual, sin utilizar tablas de ningun tipo, solo con valores que yo quiero ?

Si se puede, se puede pasar como parametro este recordset a crystal reports para imprimirlo ?

Alguien podria ayudarme ?

Gracias...
  #2 (permalink)  
Antiguo 30/08/2006, 08:14
Avatar de elsaky  
Fecha de Ingreso: junio-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 53
Antigüedad: 18 años, 10 meses
Puntos: 0
si, se puede

Ejemplo del método CreateRecordset (VB)


Puede crear un objeto Recordset y especificar la información de las columnas. Después, puede insertar datos en el objeto Recordset; el conjunto de filas inserta los datos en un búfer.

El ejemplo de código siguiente muestra cómo definir un Recordset mediante el objeto RDSServer.DataFactory. También puede usarse el objeto RDS.DataControl.

Sub RsDefineShape()

Dim vntRecordShape(3)
Dim vntField1Shape(3)
Dim vntField2Shape(3)
Dim vntField3Shape(3)
Dim vntField4Shape(3)

' En cada campo, especifica el nombre,
' tipo, tamaño y si puede ser nulo.

vntField1Shape(0) = "Name" ' Nombre de columna.
vntField1Shape(1) = CInt(129) ' Tipo de columna
vntField1Shape(2) = CInt(40) ' Tamaño de columna.
vntField1Shape(3) = False ' ¿Con valores nulos?

vntField2Shape(0) = "Age"
vntField2Shape (1) = CInt(3)
vntField2Shape (2) = CInt(-1)
vntField2Shape (3) = True

vntField3Shape (0) = "DateOfBirth"
vntField3Shape (1) = CInt(7)
vntField3Shape (2) = CInt(-1)
vntField3Shape (3) = True

vntField4Shape (0) = "Balance"
vntField4Shape (1) = CInt(6)
vntField4Shape (2) = CInt(-1)
vntField4Shape (3) = True

' Pone todos los campos en una matriz de matrices.
vntRecordShape(0) = vntField1Shape
vntRecordShape(1) = vntField2Shape
vntRecordShape(2) = vntField3Shape
vntRecordShape(3) = vntField4Shape

' Utiliza RDSServer.DataFactory para crear un
' Recordset. Toma una matriz de Variants donde
' cada elemento es a su vez otra matriz de
' Variants, uno por cada columna requerida en el
' Recordset.
' Los elementos de la matriz interna son el
' nombre, tipo, tamaño y la posibilidad de ser nula de la columna.

Dim NewRs

' Podría utilizar el objeto RDS.DataControl
' en lugar del objeto RDSServer.DataFactory. En
' cuyo caso, el código siguiente sería Set NewRS
' = ADC1.CreateRecordset(vntRecordShape)
Set NewRS = ADF.CreateRecordset(vntRecordShape)

Dim fields(3)
fields(0) = vntField1Shape(0)
fields(1) = vntField2Shape (0)
fields(2) = vntField3Shape (0)
fields(3) = vntField4Shape (0)

' Llena el nuevo Recordset con valores de datos.
Dim fieldVals(3)

' Utiliza AddNew para agregar los registros.
fieldVals(0) = "Joe"
fieldVals(1) = 5
fieldVals(2) = CDate(#1/5/96#)
fieldVals(3) = 123.456
NewRS.AddNew fields, fieldVals

fieldVals(0) = "Mary"
fieldVals(1) = 6
fieldVals(2) = CDate(#6/5/96#)
fieldVals(3) = 31
NewRS.AddNew fields, fieldVals

fieldVals(0) = "Alex"
fieldVals(1) = 13
fieldVals(2) = CDate(#1/6/96#)
fieldVals(3) = 34.0001
NewRS.AddNew fields, fieldVals

fieldVals(0) = "Susan"
fieldVals(1) = 13
fieldVals(2) = CDate(#8/6/96#)
fieldVals(3) = 0.0
NewRS.AddNew fields, fieldVals

NewRS.MoveFirst

' Establece el Recordset recién creado y poblado a
' la propiedad SourceRecordset de
' RDS.DataControl para enlazar controles visuales.
Set ADC1.SourceRecordset = NewRS

End Sub

saludos
  #3 (permalink)  
Antiguo 30/08/2006, 08:33
 
Fecha de Ingreso: julio-2006
Mensajes: 98
Antigüedad: 18 años, 9 meses
Puntos: 0
Muchisimas gracias !!!!

Otra pregunta, dentro de Crystal como lo digo que el .rpt va a recibir un recordset virtual ?

Gracias...
  #4 (permalink)  
Antiguo 30/08/2006, 09:22
Avatar de elsaky  
Fecha de Ingreso: junio-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 53
Antigüedad: 18 años, 10 meses
Puntos: 0
te paso una respuesta que dio un usuario en otro foro
no se si funciona
saludos

Usa el método SetPrivateData es del objeto Crystal, pero no se si en las versiones anteriores a la 6 venia. Sirve para enlazar recordset conectados, osea con la conexión abierta, a un Report. Puedes enlazar recordset por ADO, DAO y RDO. Y funciona tal que asín:

Report1.SetTablePrivateData 0, 3, RECORSETENLAZADOASUCONEXIÓN

Pd: El parámetro que vale 3 es siempre 3, vamos que en la ayuda pone que solo puedes poner un 3.
A por cierto el SetTablePrivateData es para la versión 7. Si tienes dudas busca en la página del Crystal en el KB.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:47.