| |||
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. |
| |||
Hola creo que hay un metodo llamado Clone, probalo ...salu2 --------------------
__________________ Recursos visual basic |
| |||
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. |
| ||||
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 |
| ||||
si quieres evitar el bucle puedes hacerlo mediante el PropertyBag, y te podría quedar algo así: Cita: ahora que si quieres aplicar filtros, etc puedes checar éste ejemploPrivate 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 http://www.devx.com/vb2themax/Tip/18431 Salu2
__________________ Nadie roba nada ya que en la vida todo se paga . . . Exentrit - Soluciones SharePoint & Net |
| |||
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. |
| ||||
hola amigo,,, leete esto, espero te sirva.. suerte http://www.gamarod.com.ar/articulos/...eis_lineas.asp
__________________ ***Aprendiz de todo y maestro de nada*** |
| ||||
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 |