Los foros del Guille

MKN Reservas (Maro - Kayak Nerja)


Kayak Maro - Rutas y alquiler de kayak y tabla

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu inter�s (algunos de los avisos publicados)

01/feb./2019

Los moderadores, MVP y administradores podrán seguir editando, respondiendo o creando nuevos mensajes

Con idea de que puedan ayudar a responder e ir cerrando mensajes ;-)

  Foro: VB6.General Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 52087 - Pasar datos de una segunda tabla
IDAsuntoFechaNick 
52087 Pasar datos de una segunda tabla10/03/10 20:10abinfra   
Para pasar los registros filtrados de una tabla al report hago lo siguiente:

a) Creo el recordset:

Set rsLinPed = New ADODB.Recordset
strSQL = "SELECT * FROM LinPeSEA WHERE Numero = '" & TBcNumPed & "'"
rsLinPed.Open strSQL, g_db, adOpenDynamic, adLockOptimistic

b) paso al report:

With crReport
   .Database.SetDataSource rsLinPed
   .PaperOrientation = 1
   .PaperSize = 0
   .DiscardSavedData
End With


¿Pero que código debo añadir (al margen del recordset), para pasar los registros filtrados de una segunda tabla?

Saludos cordiales.
IDAsuntoFechaNick 
52088 Re: Pasar datos de una segunda tabla (Resp: 52087)10/03/10 22:38DragonRed   
tendrias que usar esto, ya que si quieres trabajar con el recordset tendrias que hacer un for e insertar fila por fila.

asumo que g_db es el objeto conecction

strSQL = "insert into tabla2 SELECT * FROM LinPeSEA WHERE
     Numero = '" & TBcNumPed & "'"
g_db.execute=strsql


Saludos
Lima Peru

"Si se puede imaginar, se puede programar"


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
52091 Re: Pasar datos de una segunda tabla (Resp: 52088)11/03/10 05:32abinfra   
Hola DragonRed, gracias por responder.

¿Entiendo que con lo que me informas, debería quedar asíduda

a) Creo el recordset:

Set rsLinPed = New ADODB.Recordset
strSQL = "SELECT * FROM LinPeSEA WHERE Numero = '" & TBcNumPed & "'"
strSQL = "insert into PedidSEA SELECT * FROM LinPeSEA WHERE
     Numero = '" & TBcNumPed & "'"
rsLinPed.Open strSQL, g_db, adOpenDynamic, adLockOptimistic

b) paso al report:
With crReport
   .Database.SetDataSource rsLinPed
   .PaperOrientation = 1
   .PaperSize = 0
   .DiscardSavedData
End With


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
52095 Re: Pasar datos de una segunda tabla (Resp: 52091)11/03/10 16:20DragonRed   
Seria de la siguiente manera

a) Creo el recordset:

Set rsLinPed = New ADODB.Recordset
strSQL = "SELECT * FROM LinPeSEA WHERE Numero = '" & TBcNumPed & "'"
rsLinPed.Open strSQL, g_db, adOpenDynamic, adLockOptimistic

b) insertas la data
strSQL = "insert into PedidSEA SELECT * FROM LinPeSEA WHERE
     Numero = '" & TBcNumPed & "'"
g_db.execute strsql


c) paso al report:
With crReport
   .Database.SetDataSource rsLinPed
   .PaperOrientation = 1
   .PaperSize = 0
   .DiscardSavedData
End With



Saludos
Lima Peru

"Si se puede imaginar, se puede programar"


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
52101 Re: Pasar datos de una segunda tabla (Resp: 52095)11/03/10 21:03abinfra   
Gracias DragonRed, por responder.

He puesto el código que me sugieres, y me da el siguiente error:

[Microsoft][ODBC SQL Server Driver][SQL Server] Error de inserción: el nombre de columna o los valores especificados no corresponden a la definición de la tabla.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
52102 Re: Pasar datos de una segunda tabla (Resp: 52101)11/03/10 22:43DragonRed   
Eso quiere decir, que los campos de la tabla PedidSEA no son los mismos que la tabla LinPeSEA.
Ahi vas a tener que indicar que campos deseas pasar, ya que puede ser que LinPeSEA tenga mas campos que PedidSEA, o los campos tengan distinto nombre




Saludos
Lima Peru

"Si se puede imaginar, se puede programar"


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
52105 Re: Pasar datos de una segunda tabla (Resp: 52102)12/03/10 08:08abinfra   
Hola DragonRed, gracias por responder nuevamente.
Efectivamente las dos tablas tienen campos distintos excepto tres (Numero, CodPro y Fecha).

La tabla PedidSEA contiene los datos generales de pedidos y la tabla LinPeSEA las líneas de pedidos.

El campo que relaciona ambas tablas es Numero.

Con estos datos, ¿me puedes informar del código que tendría que usar para construir un RecordSet con los datos de un pedido determinado de ambas tablas?, o sea filtrado por la variable TBcNumPed que contiene el valor del número del pedido que quiero imprimir.

Saludos cordiales.
[Editado: abinfra, 12/03/2010 08:08:51]


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
52119 Re: Pasar datos de una segunda tabla (Resp: 52105)13/03/10 07:32abinfra   
Solucionado, pero aparece otro problema, me explico:
Solucionado con este código:
a) Haciendo referencia a los alias de las dos tablas:
strSQL = "SELECT a.*, b.* FROM PedidSEA a INNER JOIN
     LinPeSEA b ON a.Numero = b.Numero WHERE b.Numero = '" & TBcNumPed & "'"

b) Sin hacer referencia a los alias de las dos tablas:
strSQL = "SELECT PedidSEA.*, LinPeSEA.* FROM PedidSEA INNER
     JOIN LinPeSEA ON PedidSEA.Numero = LinPeSEA.Numero WHERE LinPeSEA.Numero = '" &
     TBcNumPed & "'"

Nuevo problema:
Aprovechando que le envío al informe este RecordSet con información de las dos tablas, inserto campos de ambas tablas en el informe y los muestra correctamente, pero al salir me da el siguiente error y al cerrar la ventana del error se cierra el proyecto y Visual Basic 6:

Visual Basic ha detectado un problema y debe cerrarse. Sentimos los inconvenientes ocasionados.

Pero si solo inserto datos de una de las dos tablas (ya sea de una o de otra), no aparece el error.

Pregunta de ignorante, ¿será cuestión de la falta de alguna referencia o complemento?.

Saludos cordiales.

[Editado: abinfra, 13/03/2010 07:57:28]
[abinfra, 13/03/2010 07:58:08]


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
52123 Re: Pasar datos de una segunda tabla (Resp: 52119)13/03/10 23:17abinfra   
Se ha solucionado lo del error, pero no se muy bien como.
No entiendo mucho de vínculos, pero ha sido cambiando los vínculos de ambas tablas a través del asistente de bases de datos que crea por defecto al insertar las referidas tablas.

Cuando inserto las dos tablas, crea tres vínculos (creo que por Nombre) por los tres campos que son iguales en ambas tablas, de LinPeSEA hacia PedidSEA, que creo que fue el orden por el que las inserté.

Jugando con los vínculos, al final puse solo un vínculo, el del campo Numero que es igual en ambas tablas y por el que se hace la comparación en la creación del RecordSet, cambiando el sentido del vínculo, de PedidSEA hacia LinPESEA y vinculado por Clave.

Si teneis una explicación a esto, os agradecería la información.

Saludos cordiales.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
52151 Re: Pasar datos de una segunda tabla (Resp: 52123)17/03/10 15:36DragonRed   
lo que queda saber es como insertar, porque lo que muestras son consultas, pero en ningun caso algun insert.

Lo que tienes que tener presente es que los campos a insertar tienen que los mismos que los campos en el select.

un ejemplo


tabla1
campo1 int
campo2 char(10)
campo6 date

tabla2
campo5 date
campo3 char(10)

tabla3
campo5 date
campo4 int

insert into tabla1
select t3.campo4, t2.campo3, t2.campo5
from tabla2 t2 inner join tabla3 t3 on t2.campo5=t3.campo5






Saludos
Lima Peru

"Si se puede imaginar, se puede programar"
[Editado: DragonRed, 17/03/2010 15:37:07]


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
52157 Re: Pasar datos de una segunda tabla (Resp: 52151)17/03/10 22:01abinfra   
Gracias DragonRed por tu ayuda.

Saludos cordiales.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2026  - foros.elGuille v1.0.6.3 (01/Jun/2021 12:45 GMT +2)  - (ASP.NET v4.0.30319.42000)
 
La hora GMT del servidor es: 10/06/2026 11:52:25 GMT