PASAR DATOS DE UN RECORDSET A OTRA TABLA

22/03/2011 - 11:25 por Ironpony | Informe spam
Tengo una serie de registros dentro de un recordset los cuales quiero
llevar después a una tabla, es decir

set rsdatos=db.openrecordset("Select * from TABLA where condición)

Y quiero llevar este resultado que está en rsdatos (más de un
registro) a la tabla TABLA 2

¿COMO SE PUEDE HACER?

Preguntas similare

Leer las respuestas

#1 Ironpony
22/03/2011 - 11:35 | Informe spam
Set rsListados = db.OpenRecordset("Select * from ARTICULOS where
VENDIDO=" & False & "order by categoria_padre,categoria_hijo")
y ahora el contenido de rslistados lo tengo que llevar a la tabla
INFORMES_TEMP que es la que manda los datos al CrystalReports y los
muestra por pantalla


GRACIAS!!
Respuesta Responder a este mensaje
#2 Leonardo Azpurua
22/03/2011 - 12:14 | Informe spam
"Ironpony" escribió en el mensaje
news:
Set rsListados = db.OpenRecordset("Select * from ARTICULOS where
VENDIDO=" & False & "order by categoria_padre,categoria_hijo")
y ahora el contenido de rslistados lo tengo que llevar a la tabla
INFORMES_TEMP que es la que manda los datos al CrystalReports y los
muestra por pantalla



Hola,

Si INFORMES_TEMP existe y tiene exactamente la misma estructura que
ARTICULOS, entonces:

db.Execute "INSERT INTO INFORMES_TEMP " & _
"SELECT * FROM ARTICULOS " & _
"WHERE VENDIDO = 0 " & _
"ORDER BY categoria_padre, categoria_hijo"

si por el contrario es una tabla temporal que se usa con multiples
fines, entonces:

On Error Resume Next
db.Execute "DROP TABLE INFORMES_TEMP"
On Error Goto 0
db.Execute "SELECT * INTO INFORMES_TEMP " & _
"FROM ARTICULOS WHERE VENDIDO = 0 " & _
"ORDER BY categoria_padre, categoria_hijo"

¿Estás consciente de que usar un nombre estático para una tabla
temporal puede causarte problemas en entornos multiusuarios?


Salud!
Respuesta Responder a este mensaje
#3 Ironpony
23/03/2011 - 00:14 | Informe spam
On 22 mar, 12:14, "Leonardo Azpurua" wrote:
"Ironpony" escribió en el mensajenews:

> Set rsListados = db.OpenRecordset("Select * from ARTICULOS where
> VENDIDO=" & False & "order by categoria_padre,categoria_hijo")
> y ahora el contenido de rslistados lo tengo que llevar a la tabla
> INFORMES_TEMP que es la que manda los datos al CrystalReports y los
> muestra por pantalla

Hola,

Si INFORMES_TEMP existe y tiene exactamente la misma estructura que
ARTICULOS, entonces:

    db.Execute "INSERT INTO INFORMES_TEMP " & _
                       "SELECT * FROM ARTICULOS " & _
                       "WHERE  VENDIDO = 0 " & _
                       "ORDER BY categoria_padre, categoria_hijo"

si por el contrario es una tabla temporal que se usa con multiples
fines, entonces:

    On Error Resume Next
    db.Execute "DROP TABLE INFORMES_TEMP"
    On Error Goto 0
    db.Execute "SELECT * INTO INFORMES_TEMP " & _
                      "FROM ARTICULOS WHERE VENDIDO = 0 " & _
                       "ORDER BY categoria_padre, categoria_hijo"

¿Estás consciente de que usar un nombre estático para una tabla
temporal puede causarte problemas en entornos multiusuarios?

Salud!



Buenas, tienes razón, yo uso las tablas temporales para luego mostrar
la información en el informe de crystal reports ¿como me aconsejas que
lo haga?
Respuesta Responder a este mensaje
#4 Ironpony
23/03/2011 - 00:23 | Informe spam
Buenas, tienes razón, yo uso las tablas temporales para luego mostrar
la información en el informe de crystal reports ¿como me aconsejas que
lo haga?



Además, el campo VENDIDO es de carácter de 2 posiciones con valor
"SI" o "NO", entonces el INSERT ¿como se haría? si la tabla ARTICULOS
es diferente de la tabla INFORMES_TEMP que tiene algunos campos de la
tabla ARTICULOS.
Respuesta Responder a este mensaje
#5 Leonardo Azpurua
23/03/2011 - 03:23 | Informe spam
"Ironpony" escribió en el mensaje
news:

Buenas, tienes razón, yo uso las tablas temporales para luego
mostrar
la información en el informe de crystal reports ¿como me aconsejas
que
lo haga?



Además, el campo VENDIDO es de carácter de 2 posiciones con valor
"SI" o "NO", entonces el INSERT ¿como se haría? si la tabla ARTICULOS
es diferente de la tabla INFORMES_TEMP que tiene algunos campos de la
tabla ARTICULOS.
-

Hola,

La inclusión de valores alfanuméricos en las consultas SQL tiene un
costo ligeramente más alto, en tiempo de ejecución y en complejidad
textual (ésta es la peor de las dos) que los valores numéricos.

Por ejemplo:

q = "SELECT * FROM x WHERE z = '" & criterioAlfa & "'"

frente a

q = "SELECT * FROM x WHERE y = " & Str(criterioNum)

Pero la cosa es aun peor: si <criterioAlfa> es un valor tecleado por
el usuario, corres el riesgo de que escriba algo así como
"LUCHO'; DROP TABLE x; --", quedando la sentencia así:

SELECT * FROM x WHERE y = 'LUCHO'; DROP TABLE x; --'

y permitirle a un gamberro que te vuele la tabla x.

Puedes simplificar la cosa utilizando funciones para generar los
argumentos:

Function cadenaSQL(arg As String) As String
cadenaSQL = "'" & Replace(arg, "'", "''") & "'"
End Function

y la primera instrucción queda así:

SELECT * FROM x WHERE y = " & cadenaSQL(criterioAlfa)

con una complejidad equivalente a la requerida para los argumentos
numéricos. Pero como dos concatenaciones más un replace son menos
eficientes que una llamada a Str, siguen siendo mejores los números.

La sentencia SELECT <listaColumnas> INTO x ... crea una tabla con
nombre x con las columnas definidas en <listaColumnas> y tantas filas
como devuelva el SELECT.

No dices qué componente estás usando para generar el reporte (y si lo
dijeras daría igual, porque lo que uso para mis reportes es un
formulario que contiene un RichTextBox donde escribo usando una fuente
no proporcional -Courier New), pero en algún tiempo usé Crystal y el
DataReport que viene con VB6 (o sea, con VB, porque el otro no merece
el nombre), y ambos te permitían especificar el origen de datos en
tiempo de ejecución, usando bien un SELECT o el nombre de una tabla,
siempre que la estructura de datos coincidiera con la que se había
usado para el diseño.

Cuando dependía de tablas temporales, usaba un nombre de tabla basado
en la identificación del usuario, seguida por una serie de números
generada a partir de la fecha y hora del sistema. Donde no puedo
ayudarte es en como pasarle la tabla al reporte, ya que no tengo idea
de como se usan esas herramientas.

Salud!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida