Existe uma solução bastante fácil no Access.
- Crie uma tabela que não seja nada além de uma lista de números:
1, 2, 3, 4, ... n
, em quen
é o maior número de itens que já estariam no seuIMAGELIST
. Não é um custo muito alto para torná-lo maior do que o necessário, portanto, suba para 50 ou algo assim. - Crie uma consulta que atraia sua tabela original e a tabela de números sem qualquer junção . Se você acabou de fazer
SELECT *
, você receberán
de cópias de cada registro em sua tabela original. - Em vez de inserir o campo
IMAGELIST
, adicione uma fórmula que execute a funçãoMID
no campoIMAGELIST
com base no valor da tabela de números. - Filtrar para mostrar apenas os registros em que a fórmula não retorna uma string em branco. Isso significa que um registro com
IMAGELIST
24 caracteres só aparece 3 vezes em vez den
vezes com um monte de registros em branco.
Aqui está o SQL para essa consulta:
SELECT Table1.ID, Table1.IFIELD1, Table1.IFIELD2, Table1.IFIELD3, Table1.IFIELD4, Table2.Number, Mid([IMAGELIST],([Number]-1)*8+1,8) AS ImageListParse
FROM Table1, Table2
WHERE Mid([IMAGELIST],([Number]-1)*8+1,8)<>""
ORDER BY Table1.ID, Table2.Number;
No meu modelo rápido, Table1
é sua tabela original, Table2
é a tabela de números, Number
é o único campo em Table2
e são apenas os números 1-n e eu adicionei o campo de autonumeração ID
to Table1
apenas para classificação.
Isso tudo pressupõe que cada item em IMAGELIST
tenha exatamente 8 caracteres. Se isso variar de tamanho, essa abordagem não funcionará.