, 난 당신과 같이 별도의 숫자 필드에 뭔가를 당신이 파생 시퀀스 번호를 유지하는 것이 좋습니다 것입니다 :
CasePK CaseDate CaseMonthSeq
------ ---------- ------------
101 2013-10-01 1
새로운 일련 번호를 도출하는 프로세스를 간소화 할 수 있습니다 그 방법을, 구성 요소에서 "CaseID"문자열을 쉽게 작성할 수 있습니다. 즉, 문자열을 서로 떼어 놓는 것보다 함께 묶는 것이 더 쉽습니다.
다음 테스트 코드는 레코드를 테이블에 삽입 할 때 시퀀스 번호를 파생시킬 수있는 방법을 보여줍니다. 유도가 는 암시 트랜잭션 내에서 수행되므로 Debug.Print
문 단순히 SQL 명령을 출력
Sub CaseSeqTest()
Dim cdb As DAO.Database, SQL As String
Dim dtCaseDate As Date
dtCaseDate = DateSerial(2013, 10, 3) ' sample date for testing
Set cdb = CurrentDb
SQL = _
"INSERT INTO Cases (" & _
"CaseDate, " & _
"CaseMonthSeq " & _
") VALUES (" & _
"#" & Format(dtCaseDate, "yyyy-mm-dd") & "#, " & _
"Nz(DMax(""CaseMonthSeq"", ""Cases"", ""Format(CaseDate, """"yymm"""") = """"" & Format(dtCaseDate, "yymm") & """""""), 0) + 1 " & _
")"
Debug.Print SQL
cdb.Execute SQL, dbFailOnError
Set cdb = Nothing
End Sub
다중 사용자 환경에 적합해야하고이를 INSERT 명령문 내부에서 수행되기 때문으로 실행될 다음 케이스 ...
INSERT INTO Cases (CaseDate, CaseMonthSeq) VALUES (#2013-10-03#, Nz(DMax("CaseMonthSeq", "Cases", "Format(CaseDate, ""yymm"") = ""1310"""), 0) + 1)
... 및 기록 테이블에 삽입된다
CasePK CaseDate CaseMonthSeq
------ ---------- ------------
101 2013-10-01 1
102 2013-10-03 2
CasePK CaseDate CaseID
------ ---------- ----------
101 2013-10-01 CEF-1310-1
102 2013-10-03 CEF-1310-2
를 반환
SELECT
CasePK,
CaseDate,
"CEF-" & Format(CaseDate, "yymm") & "-" & CaseMonthSeq AS CaseID
FROM Cases
당신이 그때 당신은 항상이 같은 "즉시"그것을 함께 잇 수 CaseID을 표시하려면 414,... ... ...당신이 액세스 (또는 이상) 2010을 사용하고 있기 때문에, 또는 당신이이 [CaseID] 식
"CEF-" & Right(Year([CaseDate]),2) & IIf(Month([CaseDate])>9,"","0") & Month([CaseDate]) & "-" & [CaseMonthSeq]
을 사용하여 계산 된 필드로 그래서 당신은 단지 [CaseID] 직접 검색 할 수 생성하기 위해 [사례] 테이블을 변경할 수 있으며, CaseID를 쿼리 또는 보고서에 사용할 때마다 어셈블리 ID를 조합하는 논리를 다시 작성하지 않아도됩니다.
큰 활약을했습니다. 오늘 날짜 대신 현장에서 날짜를 사용하기 위해 사소한 변경을했습니다. 고마워요. 나는 테이블을 더 잘 디자인 할 것입니다. 팁 고마워. – jstacy00