2013-08-20 4 views
0

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 

은, 그것을 조금 복잡.

답변

1

확실하지 않지만 null 값을 저장할 수 없다고 생각합니다. 내가 너라면, if 문을 실행하여 그들이 null인지 확인한다. 아래 코드를 확인하십시오 :

if len(me.fday.value) > 0 and len(me.reqday.value) > 0 then 
      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 & "')" 
    else 
     strInsert = "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 & "')" 
    end if 

이 작동하는지 확인하고, 답변에 답변하고 알려주십시오.

+0

2 개의 날짜 필드가 훨씬 더 긴 If 문을 의미하므로이 경우가 아니기를 바랐습니다. 그러나 필요한 경우 필수 항목 인 경우 글 머리 기호를 물어야합니다. – Almeister9

+0

둘 중 하나가 비어 있다면, 하나만 비어 있다면, 다른 하나는 비어있는 경우와 둘 다 모두 찼을 경우 고려해야하기 때문에 사례 선택을 사용하겠습니다. 감사. – Almeister9

관련 문제