Обычно я выясняю свои DateTime
вопросов в VBA
и SQL
пробной и ошибочной, но в этом случае я ударил стену.Доступ к VBA: SQL String со строкой tablefield преобразуется как дата
Я даже не уверен, что могу делать то, что хочу.
У меня есть временной таблицы с полями F1, F2 и т.д.
поле F7 содержит дату в виде строки н формате дд/мм/гггг.
Теперь я хочу скопировать данные из временной таблицы в таблицу, где данные в поле F7 должны храниться в поле Date/Time
. Формат этого поля - Short Date (dd-MM-yyyy).
Я попытался с помощью CDate()
, Format()
и Trim()
в одиночку и в нескольких комбинациях, а также дополняя свои данные даты с ## и добавить скобки [] к моему столу fieldname
, но я просто не могу найти правильную комбинацию.
Это мой код. importedDate
отлично работает, потому что я использую переменную. Но для поля F7, я смешение SQL
запроса с преобразованием VBA
даты, и он не работает для меня:
Sub MoveImportedData()
Dim SQLStr As String
SQLStr = "INSERT INTO TblDebitorSaldoListe " _
& "(CompanyCode,CompanyName, CustomerNumber, CustomerName, OneTimeCustomerName, TermsOfPayment, NetDueDate, Reference, " _
& "DunningBlock,Comment, ReminderOne, ReminderTwo, DebtCollection, TotalAmountDKK, TotalNotYetDueDKK, TotalOverdueDKK, " _
& "ReminderOneFile, ReminderTwoFile, NoReminder, ImportedDate) " _
& "SELECT F1, F2, F3, F4, F5, F6, #" & CDate("F7") & "#, F8, F9, '', '', '', '', F10, F11, F12, '', '', 0, '" & CDate(Date) & "' " _
& "FROM TEMP WHERE Len(F1)=4" _
MsgBox SQLStr
DoCmd.RunSQL SQLStr
End Sub
Любой помощь будет оценен. Я использую Access 2013.
Спасибо.
Можете ли вы добавить код, который вы пробовали, чтобы преобразовать 'DataType'? Может быть, что-то не так с кодом, который вы использовали здесь? – David
Я пробовал эту комбинацию среди других: & "SELECT F1, F2, F3, F4, F5, F6, 'CDate (Формат (Trim (F7)", & Chr (34) & "dd-mm-yyyy" & Chr (34) & ")) ', F8, F9,' ',' ',' ',' ', F10, F11, F12,' ',' ', 0,' '& CDate (Date) &"' " _ – ahsoe
Можете ли вы объявить переменную (например, 'newDate') как тип' DateTime'. Выполните запрос SELECT для получения значения F7, затем запустите команду VBA Convert на значение, а затем вставьте его таким образом? Для каждой строки может потребоваться цикл, поэтому не самый эффективный способ, а просто проверить, работает ли он. – David