Hola necesito un select para poder realizar lo siguiente. Si tengo una tabla como esta en access Proveedor Documento -------------- ---------------- 00001 a1 00001 b1 00001 c2 00002 d3 00002 g3 como seria el select para obtener este resultado Proveedor Documento -------------- ---------------- 00001 a1,b1,c2
00002 d3,g3 Muy agredecido por tu tiempo.
Así a priori lo que pides parece bastante complicado porque no es sólo un select sino combinar varios registros. ¿Has probado con los informes o lo quieres en una tabla? Intentaré ver si se me ocurre algo pero lo veo difícil.
Bueno lo que c me ocurrió, fue crear un campo en la cabecera, y el detalle lo concateno y lo guardo ahí, de manera que no tengo que hacer ningún select extraño. Gracias de todos modos.
Lógicamente que con un Select no podrás, ya que estas trando de "Mezclar Los Registro", ¿no entiendo porque quieres acer eso?- Para mi es una barbaridad - * Ahora si esta obligado a acerlo, ya que no hayas otra salida, es porque no consolidaste bien la estructura de tus tablas por eso se te presenta esto. *****************************************************************
Pero bueno como siempre digo no hay nada imposible, es demasiado esto que te diré pero en fin, conste que esto que te diré te consumirá enormemente los recursos del Servidor. ============================================================ Puede acer un cursor que te recorra la Primera tabla, mientras va insertando pero a la vez concatenando el segundo campo, Te paso una sintaxis del Cursor Declare Nombre-cursor FOR Especificación-consulta [ORDER BY] Por ejemplo: Declare Mi_Cursor FOR SELECT num_emp, nombre, puesto, salario FROM empleados WHERE num_dept = 'informatica' Este comando es meramente declarativo, simplemente especifica las filas y columnas que se van a recuperar. La consulta se ejecuta cuando se abre o se activa el cursor. La cláusula [ORDER BY] es opcional y especifica una ordenación para las filas del cursor; si no se especifica, la ordenación de las filas es definida el gestor de SGBD. Para abrir o activar un cursor se utiliza el comando OPEN del SQL, la sintaxis en la siguiente: OPEN Nombre-cursor [USING lista-variables] Al abrir el cursor se evalúa la consulta que aparece en su definición, utilizando los valores actuales de cualquier parámetro referenciado en la consulta, para producir una colección de filas. El puntero se posiciona delante de la primera fila de datos (registro actual), esta sentencia no recupera ninguna fila. Una vez abierto el cursos se utiliza la cláusula FETCH para recuperar las filas del cursor, la sintaxis es la siguiente: FETCH Nombre-cursor INTO Lista-variables Lista - variables son las variables que van a contener los datos recuperados de la fila del cursor, en la definición deben ir separadas por comas. En la lista de variables se deben definir tantas variables como columnas tenga la fila a recuperar. Para cerrar un cursor se utiliza el comando CLOSE, este comando hace desaparecer el puntero sobre el registro actual. La sintaxis es: Close Nombre-cursor Por último, y para eliminar el cursor se utiliza el comando DROP CURSOR. Su sintaxis es la siguiente: Drop cursor Nombre-cursor *********************************************** Recorrer un cursor guardando los valores en variables
USE pubs GO DECLARE @au_lname varchar(40) DECLARE @au_fname varchar(20) DECLARE authors_cursor CURSOR FOR SELECTau_lname, au_fname FROM authors WHERE au_lname LIKE "B%" ORDER BY au_lname, au_fname OPEN authors_cursor FETCH NEXT FROM authors_cursor INTO @au_lname, @au_fname WHILE @@FETCH_STATUS = 0 BEGIN PRINT "Author: " + @au_fname + " " + @au_lname FETCH NEXT FROM authors_cursor INTO @au_lname, @au_fname END CLOSE authors_cursor DEALLOCATE authors_cursor
[size= small; font-family: Times New Roman]Yo se hacer eso con sql, pero con access se puede????[/size]
Puedes finalizar la pregunta.
Bueno lo que c me ocurrió, fue crear un campo en la cabecera, y el detalle lo concateno y lo guardo ahí, de manera que no tengo que hacer ningún select extraño. Gracias de todos modos.
A mi se me ocurre hacerlo con un do while, es decir, algo así i=1 Do While i<= 100 i_formato=Format(i,"00000") sql= "Select * From Tabla Where Proveedor Like ' " & i_formato & " ' " Set rstRegistros= New Adodb.Recordset rstRegistros.Open sql, AdopenKeySet,adLockOptimitic concatenoregistros= "i_formato : " Do while Not rstRegistro.Eof= True concatenoregistros= concatenoregistros+", "+rstRegistros!Documento loop msgbox concatenoregistro i=i+1 rstRegistro.Movenext loop esa es mi idea. hice una pequeña prueba con otros datos y segun eso es lo que dices. Suerte y no dudes en consultar.
Con un do while es sencillo pero tendría que hacer una tabla temporal, para lo que necesito, no es lo que quería pero igual gracias.
Solo un favor, podrías finalizarla. Cual quier idea es buena, y espero te haya servido.
Bueno lo que c me ocurrió, fue crear un campo en la cabecera, y el detalle lo concateno y lo guardo ahí, de manera que no tengo que hacer ningún select extraño. Gracias de todos modos.