Pasar de una columna a una celda en access, con un id repetido

Lo que quiero hacer es lo siguiente, Tengo una tabla creada de la siguiente forma:

Atributo casos

123123412 7676775

123123412 5557665

223123123 8678678

343432423 9879787

La tabla debe quedar de la siguiente forma:

Atributo casos

123123412 7676775,5557665

223123123 8678678

343432423 9879787

Agradezco el que me pueda ayudar, ya que no he podido realizar este cambio desde access...

1 respuesta

Respuesta
1

Vamos a ver si consigo explicarme. Te voy a poner el ejemplo suponiendo que atributo se repita dos veces, si fuera mas, en los if habría que hacer lo miso con If c=3 then... Supongamos que tienes una tabla Atributo, que tiene los campos Atributo y Casos. Y tienes otra tabla llamada Casos, con Id(Autonumerico), Atributo y Caso.

Con la tabla Atributo crea un formulario(da igual si es en columna o continuos). En el diseño del formulario ponle un botón de comando y en sus propiedades-eventos-Al hacer clic ponle

DoCmd.SetWarnings False
DoCmd.GoToRecord , , acFirst
Dim i As Integer
For i = 1 To Form.Recordset.RecordCount
Dim a, b, c As Integer
a = DLast("casos", "atributo", "atributo=forms!atributo!atributo")

c = DCount("casos", "atributo", "atributo=forms!atributo!atributo")
If c = 1 Then
DoCmd.RunSQL "insert into casos(atributo,casos)values(atributo,casos)"
Else
b = Casos & "," & DLast("casos", "atributo", "atributo=forms!atributo!atributo")
DoCmd.RunSQL "insert into casos(atributo,casos)values(atributo,'" & b & "')"
    If DCount("atributo", "casos", "atributo=forms!atributo!atributo") > 1 Then
    DoCmd.RunSQL "delete * from casos where id= DMax(""nz([id])"", ""casos"", ""atributo=forms!atributo!atributo"")"
    End If
End If
DoCmd.GoToRecord , , acNext
Next
DoCmd. GoToRecord,, acFirst

Parece complicado pero te explico la secuencia

Lo de docmd. Setwarnings es para que no aparezcan las dichosas ventanitas de " Va a anexar...

Después le digo que vaya al primer registro. Lo de i=1... es para que vaya recorriendo los registros y que en cada registro cuente cuantos atributos repetidos hay en la tabla Atributos que coincidan con el del registro actual. Si sólo es uno, que lo deje como esta. Si hay mas, que inserte en la tabla Casos, el valor de atributo y en el campo Casos, que una el valor de caso, con el del siguiente registro

Luego le digo que vaya al siguiente registro, y que esto lo haga hasta llegar al final del formulario

De todas formas, si ves que es complicado(lo parece pero no es), y quieres, mándame un mensaje a [email protected] y te mando un ejemplo. Si lo haces, en el asunto de mensaje pon tu alias krlos ya que si no sé quien me escribe no los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas