Necesito separar en dos columnas registros iguales con el campo diferente

Tengo una tabla 

IdExpediente          NombreMotivo

DD-A-100028          Factura CIF Com no coincide

DD-A-100054          Boletín no coincide

DD-A-100054          Acta documento no coincide

DD-A-100067           Factura CIF Com no coincide

DD-A-100067           Acta documento no coincide

DD-A-100082           Factura Cuantía no coincide

DD-A-100082           Boletín documento no coincide

Y necesito separar en otro campo el nombremotivo según su expediente para que quede así

IdExpediente          NombreMotivo                                            Motivo2

DD-A-100028          Factura CIF Com no coincide       

DD-A-100054         Boletín no coincide                             Acta documento no coincide

DD-A-100067         Factura CIF Com no coincide            Acta documento no coincide

DD-A-100082         Factura Cuantía no coincide              Boletín documento no coincide

Es en una tabla de access y quiero saber si se puede hacer alguna consulta.

Gracias

1

1 Respuesta

11.725 pts. Soy experto en programación en Visual Basic para...

ya probaste con  SELECT  Distinct(IdExpediente), NombreMotivo from tabla?

Lo que necesito es que me cree un campo nuevo con los motivos diferentes para cada expediente, con distinct crea filas con los motivos pero no una columna nueva separando cada motivo.

Lo sospeche desde un principio. hablando enserio voy a probar con un condicional if

Lo complicado es que, va a tocar utilizar código VBA

También sospechaba lo de utilizar VBA, pero aquí yo me pierdo solo conozco SQL

Si ese es el inconveniente toca utilizar VBA, por que el SQL maneja columnas y no tanto las filas en cambio con VBA se puede hacer operaciones con registros.. después en un momento le envío un código VBA que le puede ayudar.

¡Gracias! 

He estado trabajando con la consulta y creo que lo ideal y puede que más sencillo es dejar una celda con todos los motivos para cada expediente. Quedaría así

Idexpediente         Nombremotivo

DD-A-100028 Factura CIF Com no coincide

DD-A-100054 Boletín no coincide

                                 Acta documento no coincide  

DD-A-100067         Factura CIF Com no coincide  

                                 Acta documento no coincide 

DD-A-100082         Factura Cuantía no coincide

                                 Boletín documento no coincide 

DD-A-10524           Acta documento no coincide 

                                 Boletín documento no coincide 

                                 Factura CIF Com no coincide

Este código no lo he probado pero se podría implementar en su proyecto, ya se a incluyendo un botón dentro de un formulario :

Y asignando el siguiente código:

Dim db1 As dao.Database
Dim db2 As dao.Database
Dim sql as string

Dim rs1 As dao.Recordset, rs2 As dao.Recordset

'''''On Error Resume Next

Set db1 = CurrentDb
Set db2 = CurrentDb

Set rs1 = db1.OpenRecordset("Select NombreMotivo from Productos Tabla1") 'Se coloca asi por que es un subformulario dentro de otro subformulario
Set rs2 = db2.OpenRecordset("Select NombreMotivo2 from Productos Tabla1") ' Lo asignamos a otro campo llamado Cantidad_compra2 (2)

Do While Not rs1.EOF
Do While Not rs2.EOF

rs1.edit
rs2.edit

if DLookUp("[IdExpediente]","Tabla1","[Id]=" & [Id]-1) then
rs2!NombreMotivo2=rs1!NombreMotivo
sql = "delete IdExpediente,NombreMotivo from Tabla1 "
' Si no funciona bien seria
' sql = "delete IdExpediente,NombreMotivo from Tabla1 Where "[Id]=" & [Id]-1"
CurrentDb.Execute sql
end if

rs2.update

rs2.MoveNext
rs1.MoveNext
Loop
Loop

Para que funcione bien tiene que activar las siguientes referencias dentro del gestor de progrtamacion de VBA
Menu Herramientas - referencias

* Visual Basic for Applications
*Microsoft Access 15.0 Object Library
* OLE Automation
* Microsoft Office 15.0 Access Database engine Object
* Microsoft Active x Data Objects Recordset 6.0 Library

Exitos y me cuenta como le fue :)

Att. Hernán Camilo M.V

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas