이 문제는 익숙한 것처럼 들리지만이 포럼이나 다른 곳에서 본 비슷한 질문에 대한 비틀어 짐이 있기 때문에 끝까지 읽으십시오. Access 2010을 사용하여 다른 시스템에서 실행할 코드를 만드는 간단한 응용 프로그램을 작성하고 있습니다. 그 중 하나는 모든 사용자 항목을 쉼표로 구분하여 사용자 당 레코드 수를 단일 레코드로 변환하는 것입니다. 여기에 설명하기 위해 나의 입력의 샘플입니다 :MS 액세스 메모 필드 잘림
USER MBR
---- ----
USR1 DRG
USR1 ABC
USR1 XYZ
USR2 123A
USR2 ABS2
그리고이 형식으로 필요합니다
USER MBR_LIST
----- ---------------
USR1 DRG, ABC, XYZ
USR2 123A, ABS2
지금까지 너무 잘 알고. Allen Brown이 2008 년에 게시 한 코드를 사용했지만 (http://allenbrowne.com/func-concat.html) 문제가 발생했습니다. 코드가 제대로 작동합니다. 디버깅 할 때 예상대로 출력 문자열 ("strOut")에 단일 사용자에 대한 모든 MBR이 있음을 알 수 있습니다. 이 문자열은 7,000자를 넘는 경우가 있습니다.
INSERT INTO Table2 ([USR], MBR_LIST)
SELECT B.USR, ConcatRelated("MBR","Table1","Table1.USR = '" & B.USR & "'","USR") AS Mbr_List
FROM (SELECT Table1.USR FROM Table1 GROUP BY Table1.USR) AS B;
(참고 : 쿼리가 일을 피하기 위해 같은 내장 그래서 다시 훌륭한 조언 다음은, 내가 메모로 설정 MBR_LIST 필드와 테이블을 만들었습니다, 나는 알렌의 기능을 수행 주위 발견 메모 필드를 자르는 것으로 알려진 메모 필드에서 그룹화)
여전히 이렇게하면 테이블의 내 MBR_LIST 필드에 320 자 (?) 만 표시됩니다. MID에를 (사용, 최후의 수단으로
INSERT INTO Table2 ([USR], MBR_LIST)
SELECT B.USR, "" as Mbr_List
FROM [Table2] as B Where (False)
UNION ALL
SELECT B.USR, ConcatRelated("MBR","Table1","Table1.USR = '" & B.USR & "'","USR") AS Mbr_List
FROM (SELECT Table1.USR FROM Table1 GROUP BY Table1.USR) AS B;
: - :
은이 게시물에 제안에도 빈 행을 추가하는 시도 분야는 여전히 320 개 문자로 잘립니다 MS Access Create Table is Truncating Memo Field,하지만 성공) 나는 SELECT 문에서 각각 300 개의 문자 (Mbr_1 ~ Mbr_20)로 20 개의 "덩어리"를 만들었고, 모두 괜찮 았어. 그런 다음 이것을 연결된 다른 덩어리로 감쌌다. (Mbr_1 & Mbr_2 & ... & Mbr_20) AS Mbr_LIST, got - 320 chars!
왜 그런지 그리고 어떻게 삽입하여 전체 문자열을 표시합니까?
감사합니다, 부족
죄송합니다. 테이블 모양의 코드를 만드는 방법을 모르므로 샘플이 엉망입니다. 잘하면 당신은 내 의도를 이해할 것입니다, 또는이 포럼에서 이것을 올바르게 코딩하는 방법을 알려주십시오. – tribe
시도한 다음, 생성 된 각 필드의 데이터 유형을 확인하여, 테이블을 먼 길을 만들지 만 입력을 기반으로하거나 열을 조정 한 다음에 삽입해야 할 수도 있습니다. 원본 및 dest 모두에서 "select *"레코드를 열고 MBR_LIST 필드 유형을 확인하십시오. ""필드보다는 먼저 선택을 시도해보십시오. –
'INSERT INTO' 부분을 생략하면 어떻게됩니까? SELECT 만 실행하면됩니까? – Andre