The unit in each case is days - in code "d".
However, the 30-day (monthly) would be adding multiples of 30. This means payment date is shifting through the months. I would expect at least one month to be skipped, probably February.
This is why I presumed 1 meant monthly and used the IIf() conditional. Would anyone really ever make daily payments?
If you want to stay with these units, then:
Code:
CurrentDb.Execute "INSERT INTO tPayments(LoanNumber, PaymentDate) " & _
"VALUES(" & Me.LoanNumber & ",#" & DateAdd(IIf(Me.Frequency = 30, "m", "d"), IIf(Me.Frequency = 30, 1, Me.Frequency) * x, Me.StartPaymentDate) & "#)"