2017-04-07 3 views
0

Microsoft Access 내에서 데이터베이스를 만들고 양식을 사용했습니다.
양식에 단추가 붙어 있으며 클릭하면 새 레코드를 customerHeader 테이블에 삽입하고 싶습니다.
해당 테이블에는 자동 번호 인 네 개의 필드가 있습니다. 내 SQL 문에서는 autofield이므로 orderNumber를 포함하지 않습니다.
버튼을 클릭하면 on click 이벤트가 실행될 때 Microsoft Access에서 추가 쿼리의 레코드를 추가 할 수 없다는 오류가 발생합니다.Microsoft Access VBA INSERT SQL 문

모든 아이디어는 어디서나 보였습니다. 해결책을 찾을 수 없었습니다.

Private Sub addOrder_Click() 
    Dim mySql As String 
    Dim rowNum As Integer 
    Dim recCount As Long 
    Dim orderNumber As Long 
    Dim myBool As Boolean 


    Dim todayDate As Date 

    todayDate = CDate(Date) 

    myBool = False 


    MsgBox todayDate 

    rowNum = Form.CurrentRecord 
    rowNum = CInt(rowNum - 1) 



    'DoCmd.GoToRecord , , acNewRec 
    mySql = "INSERT INTO orderHeader (orderDate,custNumber,printed) VALUES (" & todayDate & "," & rowNum & "," & myBool & ")" 

    DoCmd.RunSQL mySql 

    Me!orderNum.Requery 
+0

날짜별로'# '를 추가 할 수 있지만 SQL 자체는 작동하지만 - (# "& todayDate &"#, "'(당신은 날짜 형식 당신의 지역에 따라 - 나는 Access에서 날짜가 싫어). 그것이주는 ssage? 보통 그것은 말합니다 - 'MS Access는 타입 변환 실패로 인해 필드를 널로 설정하고 x 레코드를 추가하지 않았습니다 .....' –

+0

특별히 "Microsoft access set 0 field (s)을 유형 변환 실패로 인해 Null로 변경했으며 키 위반으로 인해 테이블에 레코드를 1 개 추가하지 않았고 잠금 위반으로 인해 레코드가 0 개, 유효성 검사 규칙으로 인해 레코드가 0 개가되지 않았습니다. 위반 ". 나는 날짜에 #을 더하려고 애쓸 것이다. –

답변

0

당신이 많은 주위에 필요가 없습니다 - 그냥 날짜 값에 대한 문자열 표현의 형식에 대해서는 ISO 순서를 사용

mySql = "INSERT INTO orderHeader (orderDate,custNumber,printed) VALUES (#" & Format(todayDate, "yyyy\/mm\/dd") & "#," & rowNum & "," & myBool & ")" 

그러나, 그것의 오늘, 간단하게 사용

mySql = "INSERT INTO orderHeader (orderDate,custNumber,printed) VALUES (Date()," & rowNum & "," & myBool & ")" 
+0

나는 지금 그것을 시도했다. 그리고 불행하게도, 나는 이전과 같은 같은 오류가 주어지고있다. –

+0

다음 다른 일이 벌어지고 있습니다. 값을 수동으로 삽입하여 잘못된 값을 찾으십시오. – Gustav

+0

"키 위반"은 고유 한 인덱스가있는 필드에 중복 값을 삽입하려고 시도하는 것을 의미합니다. – Gustav