Я работаю над пользовательским сценарием VBA, который динамически собирает введенные пользователем данные формы и вставляет их в базу данных MySQL. Моя проблема в том, чтобы преобразовать данные поля формы в скрипт SQL, я должен использовать строковые функции; таким образом, все мои данные, включая даты, вставляются в виде текста. Мне нужно преобразовать все даты, которые собирает форма, из формата м / д / гггг в формат гггг-мм-дд для моей базы данных MySQL, чтобы вывести схему и загрузить данные о дате в БД без ошибок. Мне нужно сделать это динамически, то есть скрипт должен работать независимо от того, сколько полей даты собрано. У меня есть:
Private Sub Submit_Button()
Dim doc as Document
Dim control As ContentControl
Dim FormDateField As Date
Dim ReportNumber As String
Dim myValues As String
Dim myFields As String
Dim conn As ADODB.Connection
Dim strSQL As String
Set doc = Application.ActiveDocument
Set conn = New ADODB.Connection
conn.open "DSN=ABCD"
For Each control In doc.ContentControls
Skip = False
If Left(control.Range.Text, 5) = "Click" Or Left(control.Range.Text, 6) = "Choose" Then
Skip = True
Else:
myFields = myFields & control.Tag
myValues = myValues & "'" & control.Range.Text & "'"
End If
If Not Skip Then
myFields = myFields & ", "
myValues = myValues & ", "
End If
Next
myFields = Left(myFields, Len(myFields) - 2)
myValues = Left(myValues, Len(myValues) - 2)
strSQL = "INSERT INTO TABLE_1 ("
strSQL = strSQL & myFields
strSQL = strSQL & ") VALUES (" & myValues
strSQL = strSQL & ")"
conn.Execute strSQL
MsgBox "Form data saved to database!"
conn.Close
End Sub
Однако моя программа падает, потому что она пытается вставить строку в поле даты (фактическая конечная форма будет иметь много полей даты.) Я подумала, если я изменю формат даты в MySQL формате, это может быть в состоянии вывести схему? Я попытался добавить
If IsDate(control.Range.Text) Then
control.Range.Text = Format(control.Range.Text, "yyyy-mm-dd")
Else FoundOne = False
End If
, и я знаю, что в Excel вы можете сделать:
Application.FindFormat.NumberFormat = "m/d/yyyy"
Application.ReplaceFormat = "yyyy-mm-dd"
Есть предложения? Спасибо.