| ID | Asunto | Fecha | Nick | |
| 52087 | Pasar datos de una segunda tabla | 10/03/10 20:10 | abinfra | |  |
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. |
|
| ID | Asunto | Fecha | Nick | |
| 52088 | Re: Pasar datos de una segunda tabla (Resp: 52087) | 10/03/10 22:38 | DragonRed | | |
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=strsqlSaludos Lima Peru "Si se puede imaginar, se puede programar"
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 52091 | Re: Pasar datos de una segunda tabla (Resp: 52088) | 11/03/10 05:32 | abinfra | | |
Hola DragonRed, gracias por responder. ¿Entiendo que con lo que me informas, debería quedar así  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, adLockOptimisticb) 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. |
|
| ID | Asunto | Fecha | Nick | |
| 52095 | Re: Pasar datos de una segunda tabla (Resp: 52091) | 11/03/10 16:20 | DragonRed | | |
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 strsqlc) 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. |
|
| ID | Asunto | Fecha | Nick | |
| 52101 | Re: Pasar datos de una segunda tabla (Resp: 52095) | 11/03/10 21:03 | abinfra | | |
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. |
|
| ID | Asunto | Fecha | Nick | |
| 52102 | Re: Pasar datos de una segunda tabla (Resp: 52101) | 11/03/10 22:43 | DragonRed | | |
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. |
|
| ID | Asunto | Fecha | Nick | |
| 52105 | Re: Pasar datos de una segunda tabla (Resp: 52102) | 12/03/10 08:08 | abinfra | | |
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. |
|
| ID | Asunto | Fecha | Nick | |
| 52119 | Re: Pasar datos de una segunda tabla (Resp: 52105) | 13/03/10 07:32 | abinfra | | |
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. |
|
| ID | Asunto | Fecha | Nick | |
| 52123 | Re: Pasar datos de una segunda tabla (Resp: 52119) | 13/03/10 23:17 | abinfra | | |
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. |
|
| ID | Asunto | Fecha | Nick | |
| 52151 | Re: Pasar datos de una segunda tabla (Resp: 52123) | 17/03/10 15:36 | DragonRed | | |
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. |
|
| ID | Asunto | Fecha | Nick | |
| 52157 | Re: Pasar datos de una segunda tabla (Resp: 52151) | 17/03/10 22:01 | abinfra | |  |
Gracias DragonRed por tu ayuda.
Saludos cordiales.
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |