Как исправить ошибку во время выполнения 3075 через VBA MS ACCESS? - PullRequest
0 голосов
/ 15 января 2020

Я сталкиваюсь с "Ошибка выполнения 3075" с моим кодом. Я думаю, что в значительной степени пишу код правильно, странно то, что когда я проверяю значение моей переменной, оно обрезается / укорачивается от того, что должно было быть полным значением, но когда я пытался вывести его в "непосредственное окно", оно показывает полное значение.

Я должен был получить все это / мое непосредственное окно выводит следующее:

Быстрая коричневая лиса перепрыгивает через ленивую собаку.

Но моя переменная содержит только это:

Быстрая коричневая лиса прыгает o

Длина реального вывода, который Я пытаюсь получить 611.

И затем после этого вывода я получу «Ошибка выполнения 3075».

Вот пример моего кода:

           Dim rs2 As DAO.Recordset
           Set rs2 = CurrentDb.OpenRecordset("Select * FROM 2011_50K_ServiceText", dbOpenDynaset)

           If DCount("*", "2011_50K_ServiceText") = 0 Then 'checks if table is empty

           Else
           rs2.MoveFirst
           While rs2.EOF = False
           i = i + 1
           i2ndSetInterval = Format(i, "00")
           s50KServiceText = rs2!Field1

                        If InStr(s50KServiceText, "See") > 0 Or InStr(s50KServiceText, "See") = 0 Then

                           If InStr(s50KServiceText, "See") = 0 Then

                           Else
                               s50KServiceText = Left(rs2!Field1, InStr(rs2!Field1, "See") - 1)
                           End If
                                sT = "50000"
                                sFrequency = CStr(getFrequencyInterval(sT))
                                sFrequency = sFrequency & "_" & CStr(i2ndSetInterval)
                                sLength = Len(s50KServiceText)
                                Debug.Print (s50KServiceText)
                                DoCmd.SetWarnings (WarningsOff)
                                DoCmd.RunSQL "INSERT INTO 2011_VehicleDistanceBased([Vehicle],[Frequency],[Service_Text]) values ('" + LabelVehicle.Caption + "', '" + sFrequency + "', '" + s50KServiceText + "')"
                                DoCmd.SetWarnings (WarningsOn)
                        End If
           rs2.MoveNext
           Wend
           i2ndSetInterval = 0 'set it back to default
           i = 0
           rs2.Close
           Set rs2 = Nothing
           End If

У кого-нибудь есть идеи? Это будет высоко ценится. Спасибо

Ответы [ 2 ]

1 голос
/ 15 января 2020

У меня есть база данных, где некоторые фамилии имеют одинарные кавычки, и они нам нужны. В случае, если вам нужна одинарная кавычка, у меня получалось использовать одинарные кавычки дважды, и это исправляло все.

Поэтому попробуйте s50KServiceText = Replace(s50KServiceText, "'", "''") на случай, если вам нужно сохранить '.

* 1006. * ПРИМЕЧАНИЕ: Пожалуйста, обратите внимание, что '' отличается от ". Вот почему я сказал одинарные кавычки дважды
0 голосов
/ 15 января 2020

Я знаю, что есть разные ситуации, когда это может произойти, но моя была решена, когда я обнаружил, что значение, которое я пытаюсь получить, содержит "одинарную кавычку". Предложение SQL вызывает ошибку, потому что оно также читает его.

Итак, исправление, которое работало для меня, было таким:

If InStr(s50KServiceText, "'") = 0 Then

Else

s50KServiceText = Replace(s50KServiceText, "'", "") <<<<--- this was the fixed

End If

DoCmd.SetWarnings (WarningsOff)

DoCmd.RunSQL "INSERT INTO 2011_VehicleDistanceBased([Vehicle],[Frequency],[Service_Text]) values ('" + LabelVehicle.Caption + "', '" + sFrequency + "', '" + s50KServiceText + "')"

DoCmd.SetWarnings (WarningsOn)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...