MS Access에서 "짧은 날짜"형식의 두 필드가있는 바인딩되지 않은 폼이있어서 날짜 선택 도구를 표시 할 수 있습니다 (Access 2007). . 버튼의 클릭에 는 데이터는 시간/날짜 필드입니다 VBA 테이블에날짜 필드가 비어있을 때 폼에서 쿼리에 삽입
strInsert = "INSERT INTO atbl_invoice (cust_id, inv_date, job_no, item_desc, job_desc, type, fday, reqday) " & _
"VALUES(" & strCid & ", Date(),'" & Me.JobNo & "','" & Me.item_desc & "','" & Me.job_desc & "','" & Me.cboType & "','" & Me.fday & "','" & Me.reqday & "')"
fday 및 reqday을이 SQL 쿼리를 사용하여 테이블에 삽입되며, '필요 = 아니오'로 설정됩니다.
양식의 두 날짜 필드가 채워지지만 두 필드 중 하나라도 비어 있으면 모두 잘됩니다. 형식 변환 실패로 인해 Nul에 1 개의 필드를 설정합니다. 오류가 발생합니다. 빈 문자열을 날짜/시간 필드에 넣으십시오.
이 필드를 비워두고 내 삽입 쿼리 작업을 계속할 수있는 방법을 알고 있습니까?
감사합니다. 누군가 궁금해 할 경우를 대비해이 작업을 마친 것입니다. 빈되었거나되지 않은 수 중 어느 두 개의 날짜 필드를 갖는
Dim strInsert0 As String
Dim strInsert1 As String
Dim strInsert2 As String
Dim strInsert3 As String
Dim strCid As String
strCid = Forms!frmCustomer!cid
strInsert0 = "INSERT INTO atbl_invoice (cust_id, inv_date, job_no, item_desc, job_desc, type) " & _
"VALUES(" & strCid & ", Date(),'" & Me.JobNo & "','" & Me.item_desc & "','" & Me.job_desc & "'," & _
"'" & Me.cboType & "')"
strInsert1 = "INSERT INTO atbl_invoice (cust_id, inv_date, job_no, item_desc, job_desc, type, fday) " & _
"VALUES(" & strCid & ", Date(),'" & Me.JobNo & "','" & Me.item_desc & "','" & Me.job_desc & "'," & _
"'" & Me.cboType & "','" & Me.fday & "')"
strInsert2 = "INSERT INTO atbl_invoice (cust_id, inv_date, job_no, item_desc, job_desc, type, reqday) " & _
"VALUES(" & strCid & ", Date(),'" & Me.JobNo & "','" & Me.item_desc & "','" & Me.job_desc & "'," & _
"'" & Me.cboType & "','" & Me.reqday & "')"
strInsert3 = "INSERT INTO atbl_invoice (cust_id, inv_date, job_no, item_desc, job_desc, type, fday, reqday) " & _
"VALUES(" & strCid & ", Date(),'" & Me.JobNo & "','" & Me.item_desc & "','" & Me.job_desc & "'," & _
"'" & Me.cboType & "','" & Me.fday & "','" & Me.reqday & "')"
If IsNull(Me.reqday) And Not IsNull(Me.fday) Then
DoCmd.RunSQL strInsert1
ElseIf IsNull(Me.fday) And Not IsNull(Me.reqday) Then
DoCmd.RunSQL strInsert2
ElseIf IsNull(Me.reqday) And IsNull(Me.fday) Then
DoCmd.RunSQL strInsert0
Else: DoCmd.RunSQL strInsert3
End If
은, 그것을 조금 복잡.
2 개의 날짜 필드가 훨씬 더 긴 If 문을 의미하므로이 경우가 아니기를 바랐습니다. 그러나 필요한 경우 필수 항목 인 경우 글 머리 기호를 물어야합니다. – Almeister9
둘 중 하나가 비어 있다면, 하나만 비어 있다면, 다른 하나는 비어있는 경우와 둘 다 모두 찼을 경우 고려해야하기 때문에 사례 선택을 사용하겠습니다. 감사. – Almeister9