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

Copiar recordset

Estas en el tema de Copiar recordset en el foro de Visual Basic clásico en Foros del Web. Tengo dos recordset ado conectados a dos tablas diferentes en bases de datos diferentes, como hago para pasar los registros de un recordset a otro ...
  #1 (permalink)  
Antiguo 03/08/2006, 08:59
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 20 años
Puntos: 0
Copiar recordset

Tengo dos recordset ado conectados a dos tablas diferentes en bases de datos diferentes, como hago para pasar los registros de un recordset a otro sin hacer un bucle.
  #2 (permalink)  
Antiguo 04/08/2006, 19:41
Avatar de black_devil  
Fecha de Ingreso: junio-2006
Mensajes: 89
Antigüedad: 17 años, 9 meses
Puntos: 1
mira, no me acuerdo el código, pero hay una sentencia SQl para rescatar datos de un bd externa...
  #3 (permalink)  
Antiguo 05/08/2006, 00:50
 
Fecha de Ingreso: abril-2004
Mensajes: 192
Antigüedad: 20 años
Puntos: 0
Hola creo que hay un metodo llamado Clone, probalo ...salu2


--------------------
__________________
Recursos visual basic
  #4 (permalink)  
Antiguo 07/08/2006, 13:48
 
Fecha de Ingreso: agosto-2006
Mensajes: 9
Antigüedad: 17 años, 8 meses
Puntos: 0
si quieres copiar el recorset usa clone
Ejemplo: Set rs2 = rs.Clone

pero no entiendo muy bien lo k kieres hacer en reliadad
¿agregar los datos del otro recorset ?
  #5 (permalink)  
Antiguo 08/08/2006, 16:48
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 20 años
Puntos: 0
o se mira yo temgo un recordset1 el cual es un recordset sin coneccion o sea lo uso como tabla de trabajo en el cual efectuo una serie de calculos, luego que ya calcule todo quiero insertar esos registros en una tabla , distinta al del origen de datos del recordset1, pero sin hacer un bucle o ciclo.
  #6 (permalink)  
Antiguo 10/08/2006, 07:57
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
lo deseas hacer es crear dos recodset.

for i = 1 to Rs01.recordcount -1
Rs02.adnew
Rs02!campo1 = val(Rs01.Campo1) *10
Rs01.movenext
Next i

De esta menera el recordset Rs01 es tabla de la cual tenes los datos sin calculos y el segundo recordset, es el recodset donde pasarán los datos con otros cálculos.

con el cliclo for va a acontar todos los registro y los va ir agregando uno a uno..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #7 (permalink)  
Antiguo 10/08/2006, 08:18
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
si quieres evitar el bucle puedes hacerlo mediante el PropertyBag, y te podría quedar algo así:

Cita:
Private Function CopyRecordset(rsSource As ADODB.Recordset) As ADODB.Recordset

Dim rs As ADODB.Recordset
Dim pb As New PropertyBag

' creamos la copia del recordset
pb.WriteProperty "rs", rsSource
Set rs = pb.ReadProperty("rs")

Set pb = Nothing

'regresamos el recordset copiado
Set CopyRecordset = rs

End Function
ahora que si quieres aplicar filtros, etc puedes checar éste ejemplo

http://www.devx.com/vb2themax/Tip/18431

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #8 (permalink)  
Antiguo 11/08/2006, 08:08
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 20 años
Puntos: 0
casi bien

Ok bueno esto funciona como si clonara el recordset,pero me pierde las propiedades del source y el activeconeccion del rst ado en el cual deseo insertar los registros, y yo lo que quiero es pasar los registros al recordset y que se graven en la tabla a la cual este hace referncia en el source, repito sin hacer un ciclo.

la idea es hacer un insert ,pero enves de hacerlo con un insert desde una tabla a otra, quiero hacerlo desde un recordset ya que en este tengo los datos que quiero almacenar, no importa si es a otro o directamente en la tabla.
  #9 (permalink)  
Antiguo 11/08/2006, 08:12
Avatar de tazzito  
Fecha de Ingreso: agosto-2006
Mensajes: 381
Antigüedad: 17 años, 8 meses
Puntos: 2
directo de recordset a recordset no se, se que puedes hacer un insert masivo de una base de datos a otra algo asi como

insert into baseDestino.tablaDestino (campos) select campo1 campo 2 campoN from BaseDesde.TablaDesde where condiciones pero como averiguaras todo eso desde los recordset es coza tuya lo mejor y mas simple es recorrerlo con un ciclo
  #10 (permalink)  
Antiguo 11/08/2006, 08:13
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 20 años
Puntos: 0
yo se que es lo mas sencillo con un ciclo pero la idea es optimizar el rendimiento de la aplicacion.
  #11 (permalink)  
Antiguo 11/08/2006, 08:15
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 20 años
Puntos: 0
MIren la idea es simple yo tengo un recordset, digamos que este contiene 100 registros y yo quiero insertar estos en una tabla digamos tabla 1, sin hacer un ciclo
  #12 (permalink)  
Antiguo 15/08/2006, 10:31
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 20 años
Puntos: 0
hola nadie tiene idea ahun de lo que intento hacer
  #13 (permalink)  
Antiguo 16/08/2006, 07:43
Avatar de elsaky  
Fecha de Ingreso: junio-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 53
Antigüedad: 17 años, 10 meses
Puntos: 0
yo uso esto
tienen que ser las dos tablas iguales

insert into tabla2 select * from tabla1 where ....

por ahi te sirva, saludos
  #14 (permalink)  
Antiguo 17/08/2006, 08:53
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 20 años
Puntos: 0
no no

Los datos los tengo en un recordset y los quiero enviar a una tabla.
  #15 (permalink)  
Antiguo 18/08/2006, 05:06
Avatar de elsaky  
Fecha de Ingreso: junio-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 53
Antigüedad: 17 años, 10 meses
Puntos: 0
justamente eso es copiar un rs entero a una tabla, sin hacer un bucle
  #16 (permalink)  
Antiguo 18/08/2006, 12:30
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 20 años
Puntos: 0
nooo

creo que esta equivocando los conceptos un recordset es un recordset de tipo ADO, no una consulta de accion de datos anexados.
  #17 (permalink)  
Antiguo 18/08/2006, 16:46
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años
Puntos: 9
hola amigo,,,

leete esto, espero te sirva..

suerte

http://www.gamarod.com.ar/articulos/...eis_lineas.asp
__________________

***Aprendiz de todo y maestro de nada***
  #18 (permalink)  
Antiguo 23/08/2006, 07:02
Avatar de elsaky  
Fecha de Ingreso: junio-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 53
Antigüedad: 17 años, 10 meses
Puntos: 0
De acuerdo

fijate aca si te sirve

http://www.mvp-access.com/softjaen/

saludos
  #19 (permalink)  
Antiguo 23/08/2006, 07:14
Avatar de elsaky  
Fecha de Ingreso: junio-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 53
Antigüedad: 17 años, 10 meses
Puntos: 0
Copiar la estructura de un Recordset existente en otro objeto Recordset
Por Enrique Martínez Montejo «SoftJaén»


El siguiente ejemplo implementa una función que devolverá un objeto Recordset que contendrá la misma estructura que el objeto Recordset pasado en el argumento de la función.

Una vez que la función haya devuelto el objeto Recordset, podemos abrirlo mediante el método Open disponiendo así de un objeto Recordset desconectado, donde podemos añadirle registros para guardarlo posteriormente en un archivo con formato de Lenguaje de Marcado Extensible (XML).

Para ejecutar el ejemplo necesitará insertar un control CommandButton en el formulario de inicio del proyecto. Copie y pegue el siguiente código en la sección Declaraciones del formulario de inicio del proyecto.

Private Sub Form_Load()

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim rstCopy As ADODB.Recordset

' Creamos un nuevo objeto Connection
Set cnn = New ADODB.Connection

' Abrimos la conexión
With cnn
.Provider = "SQLOLEDB"
.ConnectionString = "Persist Security Info=False;" & _
"Data Source=NOMBRE_INSTANCIA_SQL2000;" & _
"Integrated Security=SSPI;" & _
"Initial Catalog=Northwind"
.Open
End With

' Creamos un nuevo objeto Recordset
Set rst = New ADODB.Recordset

' Configuramos y abrimos el Recordset
With rst
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open "Employees", cnn, , , adCmdTable
End With

' Copiamos la estructura del Recordset
Set rstCopy = CopyRecordset(rst)

' Cerramos los objetos Connection y Recordset principales
rst.Close
cnn.Close

' Creamos un archivo XML con la estructura
' del Recordset copiado, por lo que antes debemos
' de abrir el objeto Recordset
'
rstCopy.Open
rstCopy.Save "C:\Mis documentos\Employees.xml", adPersistXML

End Sub

Private Function CopyRecordset(ByVal rs As ADODB.Recordset) As ADODB.Recordset

Dim oCopyRst As ADODB.Recordset
Dim fld As ADODB.Field

Set oCopyRst = New ADODB.Recordset

' Recorremos la colección de campos para ir
' copiándolos con las mismas propiedades
For Each fld In rs.Fields
oCopyRst.Fields.Append _
fld.Name, _
fld.Type, _
fld.DefinedSize, _
fld.Attributes

' Tenemos en cuenta las propiedades de precisión y
' escala numérica para los tipos de datos numéricos
' que tengan establecidas dichas propiedades.
If fld.Type = adNumeric Or fld.Type = adDecimal Then
With oCopyRst
.Fields(.Fields.Count - 1).Precision = fld.Precision
.Fields(.Fields.Count - 1).NumericScale = fld.NumericScale
End With
End If
Next

' Devolvemos el nuevo objeto Recordset
Set CopyRecordset = oCopyRst

End Function
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 08:47.