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ánde cópias de cada registro em sua tabela original. - Em vez de inserir o campo
IMAGELIST, adicione uma fórmula que execute a funçãoMIDno campoIMAGELISTcom 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
IMAGELIST24 caracteres só aparece 3 vezes em vez denvezes 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á.