Ошибка преобразования типа данных 3421

В этой статье представлена ошибка с номером Ошибка 3421, известная как Ошибка Microsoft Access 3421, описанная как Ошибка преобразования типа данных.

О программе Runtime Ошибка 3421

Время выполнения Ошибка 3421 происходит, когда Microsoft Access дает сбой или падает во время запуска, отсюда и название. Это не обязательно означает, что код был каким-то образом поврежден, просто он не сработал во время выполнения. Такая ошибка появляется на экране в виде раздражающего уведомления, если ее не устранить. Вот симптомы, причины и способы устранения проблемы.

Определения (Бета)

Здесь мы приводим некоторые определения слов, содержащихся в вашей ошибке, в попытке помочь вам понять вашу проблему. Эта работа продолжается, поэтому иногда мы можем неправильно определить слово, так что не стесняйтесь пропустить этот раздел!

  • Access — НЕ ИСПОЛЬЗУЙТЕ этот тег для Microsoft Access, используйте вместо него [ms-access]
  • Преобразование типов — Преобразование типов — это способ неявного или явного изменения объекта одного типа данных на другой
  • Access . Microsoft Access, также известный как Microsoft Office Access, представляет собой систему управления базами данных от Microsoft, которая обычно объединяет реляционное ядро ​​СУБД Microsoft JetACE с графическим пользовательским интерфейсом и инструментами разработки программного обеспечения.
  • Доступ к Microsoft — Microsoft Access, также известный как Microsoft Office Access, представляет собой систему управления базами данных от Microsoft, который обычно сочетает в себе реляционное ядро ​​СУБД Microsoft JetACE с графическим пользовательским интерфейсом и инструментами разработки программного обеспечения.
  • Тип . Типы и системы типов используются для обеспечения уровней абстракции в программах.
Симптомы Ошибка 3421 — Ошибка Microsoft Access 3421

Ошибки времени выполнения происходят без предупреждения. Сообщение об ошибке может появиться на экране при любом запуске %программы%. Фактически, сообщение об ошибке или другое диалоговое окно может появляться снова и снова, если не принять меры на ранней стадии.

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

Fix Ошибка Microsoft Access 3421 (Error Ошибка 3421)
(Только для примера)

Причины Ошибка Microsoft Access 3421 — Ошибка 3421

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

Ошибки во время выполнения обычно вызваны несовместимостью программ, запущенных в одно и то же время. Они также могут возникать из-за проблем с памятью, плохого графического драйвера или заражения вирусом. Каким бы ни был случай, проблему необходимо решить немедленно, чтобы избежать дальнейших проблем. Ниже приведены способы устранения ошибки.

Методы исправления

Ошибки времени выполнения могут быть раздражающими и постоянными, но это не совсем безнадежно, существует возможность ремонта. Вот способы сделать это.

Если метод ремонта вам подошел, пожалуйста, нажмите кнопку upvote слева от ответа, это позволит другим пользователям узнать, какой метод ремонта на данный момент работает лучше всего.

Обратите внимание: ни ErrorVault.com, ни его авторы не несут ответственности за результаты действий, предпринятых при использовании любого из методов ремонта, перечисленных на этой странице — вы выполняете эти шаги на свой страх и риск.

Метод 3 — Обновите программу защиты от вирусов или загрузите и установите последнюю версию Центра обновления Windows.

Заражение вирусом, вызывающее ошибку выполнения на вашем компьютере, необходимо немедленно предотвратить, поместить в карантин или удалить. Убедитесь, что вы обновили свою антивирусную программу и выполнили тщательное сканирование компьютера или запустите Центр обновления Windows, чтобы получить последние определения вирусов и исправить их.

Метод 1 — Закройте конфликтующие программы

Когда вы получаете ошибку во время выполнения, имейте в виду, что это происходит из-за программ, которые конфликтуют друг с другом. Первое, что вы можете сделать, чтобы решить проблему, — это остановить эти конфликтующие программы.

  • Откройте диспетчер задач, одновременно нажав Ctrl-Alt-Del. Это позволит вам увидеть список запущенных в данный момент программ.
  • Перейдите на вкладку «Процессы» и остановите программы одну за другой, выделив каждую программу и нажав кнопку «Завершить процесс».
  • Вам нужно будет следить за тем, будет ли сообщение об ошибке появляться каждый раз при остановке процесса.
  • Как только вы определите, какая программа вызывает ошибку, вы можете перейти к следующему этапу устранения неполадок, переустановив приложение.

Метод 2 — Обновите / переустановите конфликтующие программы

Использование панели управления

  • В Windows 7 нажмите кнопку «Пуск», затем нажмите «Панель управления», затем «Удалить программу».
  • В Windows 8 нажмите кнопку «Пуск», затем прокрутите вниз и нажмите «Дополнительные настройки», затем нажмите «Панель управления»> «Удалить программу».
  • Для Windows 10 просто введите «Панель управления» в поле поиска и щелкните результат, затем нажмите «Удалить программу».
  • В разделе «Программы и компоненты» щелкните проблемную программу и нажмите «Обновить» или «Удалить».
  • Если вы выбрали обновление, вам просто нужно будет следовать подсказке, чтобы завершить процесс, однако, если вы выбрали «Удалить», вы будете следовать подсказке, чтобы удалить, а затем повторно загрузить или использовать установочный диск приложения для переустановки. программа.

Использование других методов

  • В Windows 7 список всех установленных программ можно найти, нажав кнопку «Пуск» и наведя указатель мыши на список, отображаемый на вкладке. Вы можете увидеть в этом списке утилиту для удаления программы. Вы можете продолжить и удалить с помощью утилит, доступных на этой вкладке.
  • В Windows 10 вы можете нажать «Пуск», затем «Настройка», а затем — «Приложения».
  • Прокрутите вниз, чтобы увидеть список приложений и функций, установленных на вашем компьютере.
  • Щелкните программу, которая вызывает ошибку времени выполнения, затем вы можете удалить ее или щелкнуть Дополнительные параметры, чтобы сбросить приложение.

Метод 4 — Переустановите библиотеки времени выполнения

Вы можете получить сообщение об ошибке из-за обновления, такого как пакет MS Visual C ++, который может быть установлен неправильно или полностью. Что вы можете сделать, так это удалить текущий пакет и установить новую копию.

  • Удалите пакет, выбрав «Программы и компоненты», найдите и выделите распространяемый пакет Microsoft Visual C ++.
  • Нажмите «Удалить» в верхней части списка и, когда это будет сделано, перезагрузите компьютер.
  • Загрузите последний распространяемый пакет от Microsoft и установите его.

Метод 5 — Запустить очистку диска

Вы также можете столкнуться с ошибкой выполнения из-за очень нехватки свободного места на вашем компьютере.

  • Вам следует подумать о резервном копировании файлов и освобождении места на жестком диске.
  • Вы также можете очистить кеш и перезагрузить компьютер.
  • Вы также можете запустить очистку диска, открыть окно проводника и щелкнуть правой кнопкой мыши по основному каталогу (обычно это C :)
  • Щелкните «Свойства», а затем — «Очистка диска».

Метод 6 — Переустановите графический драйвер

Если ошибка связана с плохим графическим драйвером, вы можете сделать следующее:

  • Откройте диспетчер устройств и найдите драйвер видеокарты.
  • Щелкните правой кнопкой мыши драйвер видеокарты, затем нажмите «Удалить», затем перезагрузите компьютер.

Метод 7 — Ошибка выполнения, связанная с IE

Если полученная ошибка связана с Internet Explorer, вы можете сделать следующее:

  1. Сбросьте настройки браузера.
    • В Windows 7 вы можете нажать «Пуск», перейти в «Панель управления» и нажать «Свойства обозревателя» слева. Затем вы можете перейти на вкладку «Дополнительно» и нажать кнопку «Сброс».
    • Для Windows 8 и 10 вы можете нажать «Поиск» и ввести «Свойства обозревателя», затем перейти на вкладку «Дополнительно» и нажать «Сброс».
  2. Отключить отладку скриптов и уведомления об ошибках.
    • В том же окне «Свойства обозревателя» можно перейти на вкладку «Дополнительно» и найти пункт «Отключить отладку сценария».
    • Установите флажок в переключателе.
    • Одновременно снимите флажок «Отображать уведомление о каждой ошибке сценария», затем нажмите «Применить» и «ОК», затем перезагрузите компьютер.

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

Другие языки:

How to fix Error 3421 (Microsoft Access Error 3421) — Data type conversion error.
Wie beheben Fehler 3421 (Microsoft Access-Fehler 3421) — Fehler bei der Datentypkonvertierung.
Come fissare Errore 3421 (Errore di Microsoft Access 3421) — Errore di conversione del tipo di dati.
Hoe maak je Fout 3421 (Microsoft Access-fout 3421) — Conversiefout van gegevenstype.
Comment réparer Erreur 3421 (Erreur d’accès Microsoft 3421) — Erreur de conversion de type de données.
어떻게 고치는 지 오류 3421 (마이크로소프트 액세스 오류 3421) — 데이터 유형 변환 오류입니다.
Como corrigir o Erro 3421 (Erro 3421 do Microsoft Access) — Erro de conversão de tipo de dados.
Hur man åtgärdar Fel 3421 (Microsoft Access-fel 3421) — Konverteringsfel för datatyp.
Jak naprawić Błąd 3421 (Błąd Microsoft Access 3421) — Błąd konwersji typu danych.
Cómo arreglar Error 3421 (Error de Microsoft Access 3421) — Error de conversión de tipo de datos.

The Author Об авторе: Фил Харт является участником сообщества Microsoft с 2010 года. С текущим количеством баллов более 100 000 он внес более 3000 ответов на форумах Microsoft Support и создал почти 200 новых справочных статей в Technet Wiki.

Следуйте за нами: Facebook Youtube Twitter

Последнее обновление:

15/12/22 12:20 : Пользователь iPhone проголосовал за то, что метод восстановления 3 работает для него.

Рекомендуемый инструмент для ремонта:

Этот инструмент восстановления может устранить такие распространенные проблемы компьютера, как синие экраны, сбои и замораживание, отсутствующие DLL-файлы, а также устранить повреждения от вредоносных программ/вирусов и многое другое путем замены поврежденных и отсутствующих системных файлов.

ШАГ 1:

Нажмите здесь, чтобы скачать и установите средство восстановления Windows.

ШАГ 2:

Нажмите на Start Scan и позвольте ему проанализировать ваше устройство.

ШАГ 3:

Нажмите на Repair All, чтобы устранить все обнаруженные проблемы.

СКАЧАТЬ СЕЙЧАС

Совместимость

Требования

1 Ghz CPU, 512 MB RAM, 40 GB HDD
Эта загрузка предлагает неограниченное бесплатное сканирование ПК с Windows. Полное восстановление системы начинается от $19,95.

ID статьи: ACX06851RU

Применяется к: Windows 10, Windows 8.1, Windows 7, Windows Vista, Windows XP, Windows 2000

Совет по увеличению скорости #10

Очистка вашего реестра:

Ускорьте работу своего компьютера, удалив неработающие ярлыки, недопустимые пути, недопустимые ссылки на установщик, отсутствующие общие библиотеки DLL и многое другое из системного реестра. Однако большинство очистителей реестра не так эффективны, как вы могли бы подумать. Итак, лучше проведите небольшое исследование и выберите тот, который работает лучше всего. Кроме того, всегда создавайте резервную копию, создавая новую точку восстановления системы.

Нажмите здесь, чтобы узнать о другом способе ускорения работы ПК под управлением Windows

  • Remove From My Forums
  • Question

  • We have VBA code that runs a query on an sql database and saves the results to a local table.

    We started getting an error in the insert into the local table 

    Run-time error ‘3421’

    Data type conversion error.

    This error goes away if the access version is changed to the bi annual channel.

    If you open the debug screen and go to see what value is causing the problem access crashes.

Answers

  • Maybe you have been hit by a bug in the recent update commented by Microsoft:

    If you are on version 2005, build 12827.20010 or greater, and you manipulate Decimal fields (Access DataType=Number/FieldSize=Decimal, or SQL DataType=Decimal) using DAO (Data
    Access Objects
    ), you might have identified your app crashing. If you hover a variable with the type in VBA code, you may see that the field is not being displayed properly; either reading as ‘?????’ or giving a Type Mismatch error,
    or Access may crash.

    We are very sorry for the inconvenience this causes in your Access app. The Access team is working on resolving this issue as soon as possible, and we will report back to you once this error has been fixed.
    In the interim, we’d recommend for you to roll back to a previous version (
    https://support.microsoft.com/en-us/help/2770432/how-to-revert-to-an-earlier-version-of-office-2013-or-office-2016-clic),
    or switch to a slower channel (e.g Monthly Enterprise Channel, or SemiAnnual Channel), until the issue is fixed in Current Channel.  The issue only impacts Decimal types so if avoiding DAO code that manipulates Decimal types is possible, we’d advise this
    as a short term solution.

    If so, try changing the data type to Currency or Double.


    Gustav Brock

    • Marked as answer by

      Wednesday, June 10, 2020 8:16 AM

  • Remove From My Forums
  • Question

  • We have VBA code that runs a query on an sql database and saves the results to a local table.

    We started getting an error in the insert into the local table 

    Run-time error ‘3421’

    Data type conversion error.

    This error goes away if the access version is changed to the bi annual channel.

    If you open the debug screen and go to see what value is causing the problem access crashes.

Answers

  • Maybe you have been hit by a bug in the recent update commented by Microsoft:

    If you are on version 2005, build 12827.20010 or greater, and you manipulate Decimal fields (Access DataType=Number/FieldSize=Decimal, or SQL DataType=Decimal) using DAO (Data
    Access Objects
    ), you might have identified your app crashing. If you hover a variable with the type in VBA code, you may see that the field is not being displayed properly; either reading as ‘?????’ or giving a Type Mismatch error,
    or Access may crash.

    We are very sorry for the inconvenience this causes in your Access app. The Access team is working on resolving this issue as soon as possible, and we will report back to you once this error has been fixed.
    In the interim, we’d recommend for you to roll back to a previous version (
    https://support.microsoft.com/en-us/help/2770432/how-to-revert-to-an-earlier-version-of-office-2013-or-office-2016-clic),
    or switch to a slower channel (e.g Monthly Enterprise Channel, or SemiAnnual Channel), until the issue is fixed in Current Channel.  The issue only impacts Decimal types so if avoiding DAO code that manipulates Decimal types is possible, we’d advise this
    as a short term solution.

    If so, try changing the data type to Currency or Double.


    Gustav Brock

    • Marked as answer by

      Wednesday, June 10, 2020 8:16 AM

Описание и решение проблемы
Проблема: при обмене с сервером ЕИС, в протоколе обмена диагностируется сообщение: «Ошибка обмена (p2): 3421 — Ошибка преобразования типа данных.»
Причина: скорее всего, проблема с одной из БД ЕИС «еНот».
Способ решения: выполните следующие действия:
1. в eNot.ini, в раздел [Settings] добавьте следующие строки:
LogLevel=100
DebugLevel=100
2. запустите «еНот», несколько раз выполните обмен (меню «Обмен» – «Выполнить все F5») с сервером и пришлите на электронный адрес службы поддержки, архивированный каталог: C:Program FilesTriasofteNotLog201010 (где 2010 — текущий год, 10 — текущий месяц);
3. после чего удалите строки указанные в пункте 1 из файла eNot.ini. К отправляемому письму приложите снимок ошибки или ее текст с указанием действий предшествующих данной ошибке.

Подробности статьи

Создано: 11 Oct 2010 3:10 PM
 Отзывы пользователей Добавить отзыв

Icon Ex Номер ошибки: Ошибка 3421
Название ошибки: Microsoft Access Error 3421
Описание ошибки: Data type conversion error.
Разработчик: Microsoft Corporation
Программное обеспечение: Microsoft Access
Относится к: Windows XP, Vista, 7, 8, 10, 11

Оценка «Microsoft Access Error 3421»

Как правило, практикующие ПК и сотрудники службы поддержки знают «Microsoft Access Error 3421» как форму «ошибки во время выполнения». Разработчики тратят много времени и усилий на написание кода, чтобы убедиться, что Microsoft Access стабилен до продажи продукта. Тем не менее, возможно, что иногда ошибки, такие как ошибка 3421, не устранены, даже на этом этапе.

«Data type conversion error.» может возникнуть у пользователей Microsoft Access даже при нормальном использовании приложения. Во время возникновения ошибки 3421 конечный пользователь может сообщить о проблеме в Microsoft Corporation. Затем Microsoft Corporation нужно будет исправить эти ошибки в главном исходном коде и предоставить модифицированную версию для загрузки. Чтобы исправить такие ошибки 3421 ошибки, устанавливаемое обновление программного обеспечения будет выпущено от поставщика программного обеспечения.

У вас будет сбой во время выполнения Microsoft Access, если вы столкнетесь с «Microsoft Access Error 3421» во время выполнения. Следующие три наиболее значимые причины ошибок выполнения ошибки 3421 включают в себя:

Ошибка 3421 Crash — Номер ошибки вызовет блокировка системы компьютера, препятствуя использованию программы. Обычно это происходит, когда Microsoft Access не может распознать, что ему дается неправильный ввод, или не знает, что он должен производить.

Утечка памяти «Microsoft Access Error 3421» — когда происходит утечка памяти Microsoft Access, это приведет к вялой работе операционной системы из-за нехватки системных ресурсов. Повреждение памяти и другие потенциальные ошибки в коде могут произойти, когда память обрабатывается неправильно.

Ошибка 3421 Logic Error — логическая ошибка Microsoft Access возникает, когда она производит неправильный вывод, несмотря на то, что пользователь предоставляет правильный ввод. Это происходит, когда исходный код Microsoft Corporation вызывает недостаток в обработке информации.

Microsoft Access Error 3421 проблемы часто являются результатом отсутствия, удаления или случайного перемещения файла из исходного места установки Microsoft Access. Возникновение подобных проблем является раздражающим фактором, однако их легко устранить, заменив файл Microsoft Corporation, из-за которого возникает проблема. Если ошибка Microsoft Access Error 3421 возникла в результате его удаления по причине заражения вредоносным ПО, мы рекомендуем запустить сканирование реестра, чтобы очистить все недействительные ссылки на пути к файлам, созданные вредоносной программой.

Классические проблемы Microsoft Access Error 3421

Обнаруженные проблемы Microsoft Access Error 3421 с Microsoft Access включают:

  • «Ошибка программного обеспечения Microsoft Access Error 3421. «
  • «Microsoft Access Error 3421 не является программой Win32. «
  • «Извините, Microsoft Access Error 3421 столкнулся с проблемой. «
  • «Файл Microsoft Access Error 3421 не найден.»
  • «Microsoft Access Error 3421 не может быть найден. «
  • «Проблема при запуске приложения: Microsoft Access Error 3421. «
  • «Файл Microsoft Access Error 3421 не запущен.»
  • «Microsoft Access Error 3421 остановлен. «
  • «Неверный путь к программе: Microsoft Access Error 3421. «

Обычно ошибки Microsoft Access Error 3421 с Microsoft Access возникают во время запуска или завершения работы, в то время как программы, связанные с Microsoft Access Error 3421, выполняются, или редко во время последовательности обновления ОС. Выделение при возникновении ошибок Microsoft Access Error 3421 имеет первостепенное значение для поиска причины проблем Microsoft Access и сообщения о них вMicrosoft Corporation за помощью.

Причины проблем Microsoft Access Error 3421

Проблемы Microsoft Access Error 3421 могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с Microsoft Access Error 3421, или к вирусам / вредоносному ПО.

В частности, проблемы с Microsoft Access Error 3421, вызванные:

  • Недопустимые разделы реестра Microsoft Access Error 3421/повреждены.
  • Зазаражение вредоносными программами повредил файл Microsoft Access Error 3421.
  • Вредоносное удаление (или ошибка) Microsoft Access Error 3421 другим приложением (не Microsoft Access).
  • Другое программное обеспечение, конфликтующее с Microsoft Access, Microsoft Access Error 3421 или общими ссылками.
  • Поврежденная установка или загрузка Microsoft Access (Microsoft Access Error 3421).

Продукт Solvusoft

Загрузка
WinThruster 2022 — Проверьте свой компьютер на наличие ошибок.

Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11

Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

  • Home
  • VBForums
  • Visual Basic
  • Office Development
  • VBA error: Run-time error 3421: Data type conversion error.

  1. Jul 4th, 2014, 09:48 AM

    #1

    Arcadia01 is offline

    Thread Starter


    Junior Member


    VBA error: Run-time error 3421: Data type conversion error.

    The whole day i’m strugeling to solve this issue but it seems i can’t come any further with this

    In Access i have made a report with a button that has to open a e-mail message and insert the filtered data of the training days.

    But the problem is i can’t do this because the 2 parameters from the query that is linked to the report are blocking it. And i used the vba code below that should be working but it does not and it gives the following error message:


    VBA error Run-time error 3421: Data type conversion error.

    And the following line is highlighted in yellow:

    qdf.Parameters(«[van: dd-mm-yy]») = Format(InputBox(«van: dd-mm-yy», «Start Date», Format(Date, «dd-mm-yy»)), «#mm/dd/yyyy#»)

    The SQL query that is linked with the report is as follow

    Code:

    PARAMETERS [van: dd-mm-yy] DateTime, [tot: dd-mm-yy] DateTime;
    SELECT TrainingCalender.Title, TrainingCalender.Location, TrainingCalender.[Start Time], TrainingCalender.[End Time], TrainingCalender.Description, [Training description].[Training description]
    FROM TrainingCalender LEFT JOIN [Training description] ON TrainingCalender.Title = [Training description].Title
    WHERE (((TrainingCalender.[Start Time])>=[van: dd-mm-yy]) AND ((TrainingCalender.[End Time])<=[tot: dd-mm-yy]));

    And below you can see the VBA code i’m using:

    Code:

    Private Sub Command18_Click()
        Dim objOutlook As Outlook.Application
        Dim objOutlookMsg As Outlook.MailItem
        Dim objOutlookRecip As Outlook.Recipient
        Dim objOutlookAttach As Outlook.Attachment
        Dim qry As QueryDef
        Dim rst As Recordset
    
        Dim db As DAO.Database
        Dim qdf As DAO.QueryDef
        Dim prm As Parameter
    
        ' Create the Outlook session.
        Set objOutlook = CreateObject("Outlook.Application")
    
        ' Create the message.
        Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
    
        With objOutlookMsg
            ' Add the To recipient(s) to the message.
            Set objOutlookRecip = .Recipients.Add("person@mail.com")
            objOutlookRecip.Type = olTo
    
            ' Add the CC recipient(s) to the message.
            Set objOutlookRecip = .Recipients.Add("Michael Syama")
            objOutlookRecip.Type = olCC
    
            ' Add the BCC recipient(s) to the message.
            Set objOutlookRecip = .Recipients.Add("Andrew Fler")
            objOutlookRecip.Type = olBCC
    
            ' Set the Subject, Body, and Importance of the message.
            .Subject = "Training dates"
    
            .BodyFormat = olFormatHTML
    
            .HTMLBody = "<p><strong>Dear Colleague,</strong></p>" & _
                        "Welcome to our we updated training curricula as well as a much better training infrastructure." & _
                        "<p>Please see the attachment for the dates! </p>" & _
                        "<b><strong>With Kind regards,</strong></b>" & _
                        "<p> Name <br> </p>" & _
                        "<b> Below you can see the upcoming training schedule: </b><br> "
    
            Set db = CurrentDb
            Set qdf = db.QueryDefs("TrainingCalender Query")
            qdf.Parameters("[van: dd-mm-yy]") = Format(InputBox("van: dd-mm-yy", "Start Date", Format(Date, "dd-mm-yy")), "#mm/dd/yyyy#")
            qdf.Parameters("[tot: dd-mm-yy]") = Format(InputBox("tot: dd-mm-yy", "End Date", Format(Date, "dd-mm-yy")), "#mm/dd/yyyy#")
            Set rst = qdf.OpenRecordset()
    
            Do Until rst.EOF
                .HTMLBody = .HTMLBody & " <TABLE BORDER=4 RULES=NONE FRAME=BOX> " & " " & _
                            " <br>  <p> " & " Training: " & rst![Title] & " " & " <br> " & _
                            " Start Time: " & rst![Start Time] & " " & " <br> " & " Place: " & rst![Location] & " </table> "
                rst.MoveNext
            Loop
            .Importance = olImportanceHigh  'High importance
    
            ' Add attachments to the message.
            If Not IsMissing(AttachmentPath) Then _
                Set objOutlookAttach = .Attachments.Add("L:PublicAccessPDFTrainingen.pdf")
    
            ' Resolve each Recipient's name.
            For Each objOutlookRecip In .Recipients
                objOutlookRecip.Resolve
            Next
    
            ' Should we display the message before sending?
            If DisplayMsg Then
                .Display
            Else
                .Save
                .Display
            End If
        End With
        Set objOutlook = Nothing
    End Sub

    I really hope someone can help me out here because my head is exploding right now


  2. Jul 4th, 2014, 10:40 AM

    #2

    Re: VBA error: Run-time error 3421: Data type conversion error.

    the inputbox will return a string (if entered correctly then formatted as dd-mm-yy) if you want to put this into a datetime parameter you need to cast it to a date. the transfer into #mm/dd/yyyy# format should not be required.


  3. Jul 7th, 2014, 03:49 AM

    #3

    Arcadia01 is offline

    Thread Starter


    Junior Member


    Re: VBA error: Run-time error 3421: Data type conversion error.

    Quote Originally Posted by digitalShaman
    View Post

    the inputbox will return a string (if entered correctly then formatted as dd-mm-yy) if you want to put this into a datetime parameter you need to cast it to a date. the transfer into #mm/dd/yyyy# format should not be required.

    So it would be something like this?

    qdf.Parameters(«[van: dd-mm-yy]») = Format(InputBox(«van: dd-mm-yy», «Start Date», Format(Date, «dd-mm-yy»)

    qdf.Parameters(«[tot: dd-mm-yy]») = Format(InputBox(«tot: dd-mm-yy», «End Date», Format(Date, «dd-mm-yy»)


  4. Jul 7th, 2014, 04:20 AM

    #4

    Arcadia01 is offline

    Thread Starter


    Junior Member


    Re: VBA error: Run-time error 3421: Data type conversion error.

    no that does not work can you give me a a sample?


  5. Jul 7th, 2014, 07:22 AM

    #5

    Arcadia01 is offline

    Thread Starter


    Junior Member


    Re: VBA error: Run-time error 3421: Data type conversion error.

    Quote Originally Posted by Arcadia01
    View Post

    no that does not work can you give me a a sample?

    I fixed it it:

    qdf.Parameters(«[tot: dd-mm-yy]») = Format(InputBox(«tot: dd-mm-yy», «End Date»), «dd/mm/yyyy»)


  6. Jul 7th, 2014, 12:19 PM

    #6

    Re: VBA error: Run-time error 3421: Data type conversion error.

    i think a
    qdf.Parameters(«[tot: dd-mm-yy]») = Cdate(InputBox(«tot: dd-mm-yy», «End Date»))

    should have also worked as long as the entry is a valid date.


  • Home
  • VBForums
  • Visual Basic
  • Office Development
  • VBA error: Run-time error 3421: Data type conversion error.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
  • BB code is On
  • Smilies are On
  • [IMG] code is On
  • [VIDEO] code is On
  • HTML code is Off

Forum Rules


Click Here to Expand Forum to Full Width

Список заполняется значениями из отдельной таблицы. Значение этого списка вставляется в таблицу транзакций как новая запись. Доступ выдает ошибку «Ошибка преобразования типа данных 3421», когда я пытаюсь присвоить значение списка моему параметру sql. Список имеет тип txtMealType, он вставляется как MealID, который представляет собой короткое текстовое поле.

Set dbs = CurrentDb
Dim vblMealType As String
txtMealType.SetFocus
vblMealType = txtMealType.Value
If (txtMealType & vbNullString) = vbNullString Then Exit Sub
Dim qdf As DAO.QueryDef
Set qdf = dbs.CreateQueryDef("", _
        "PARAMETERS prmCustomerID Long, prmMealID Long, prmTransactionAmount Currency, prmTransactionDate DateTime;" & _
        "INSERT INTO dbo_Transactions (CustomerID, MealID, TransactionAmount, TransactionDate) " & _
        "VALUES ([prmCustomerID], [prmMealID], [prmTransactionAmount], [prmTransactionDate]) ")
qdf!prmCustomerID = txtCustomerID.Value


qdf!prmTransactionAmount = txtCharge.Value
txtCharge.SetFocus
qdf!prmTransactionDate = Format(Date, "yyyy-mm-dd")
qdf!prmMealID = vblMealType
qdf.Execute
 MsgBox "Customer Charge Succesfull.", _
              vbOKOnly + vbInformation
Set qdf = Nothing
Set dbs = Nothing

I have been using a vba code to make my work life easier but for some reason it stopped working as supposed to. What it does it gets a number from my DB and goes to website to find relevant certificate assigned to this number (company), then it reads the grade and expiry date which are to be recorded in same DB. The issue is now when it goes to

rs.fields(«Expiry»).Value = Split(sResult, «|»)(1)

it throws a Runtime error 3421 which i believe is due to column being formatted as for date data type but it worked correctly for several months..? It work when changed data type to text however that will mess it up as later I use it in queries and reports and need it as a date.

Any ideas why it changed and how to fix it please?
Thanks
MD

Sub Get_BRCDirectory_Data()
Dim sCode, rs As DAO.Recordset, dic As Object, sResult As String, i As Long

Set dic = CreateObject("Scripting.Dictionary")
dic.CompareMode = 1

Set rs = CurrentDb.OpenRecordset("Approved")
If Not (rs.BOF And rs.EOF) Then
    rs.MoveFirst

    Do
        sCode = rs.fields("SupplierCode").Value
        
        If sCode <> "" Then
            If Not dic.Exists(sCode) Then
                sResult = GetGradeExpiryDate(CStr(sCode))
    
                rs.Edit
                rs.fields("Grade").Value = Trim(Split(sResult, "|")(0))
                rs.fields("Expiry").Value = Split(sResult, "|")(1)
                rs.UPDATE
                dic(sCode) = Array(rs.fields("Grade").Value, rs.fields("Expiry").Value)
            Else
                rs.Edit
                rs.fields("Grade").Value = dic(sCode)(0)
                rs.fields("Expiry").Value = dic(sCode)(1)
                rs.UPDATE
            End If
        End If

        rs.MoveNext
    Loop Until rs.EOF
End If

MsgBox "Done", 64

 «Ошибка обмена (p2): 3421 — Ошибка преобразования типа данных.»

Описание и решение проблемы
Проблема: при обмене с сервером ЕИС, в протоколе обмена диагностируется сообщение: «Ошибка обмена (p2): 3421 — Ошибка преобразования типа данных.»
Причина: скорее всего, проблема с одной из БД ЕИС «еНот».
Способ решения: выполните следующие действия:
1. в eNot.ini, в раздел [Settings] добавьте следующие строки:
LogLevel=100
DebugLevel=100
2. запустите «еНот», несколько раз выполните обмен (меню «Обмен» – «Выполнить все F5») с сервером и пришлите на электронный адрес службы поддержки, архивированный каталог: C:Program FilesTriasofteNotLog201010 (где 2010 — текущий год, 10 — текущий месяц);
3. после чего удалите строки указанные в пункте 1 из файла eNot.ini. К отправляемому письму приложите снимок ошибки или ее текст с указанием действий предшествующих данной ошибке.

Подробности статьи

Cтатья №: 158
Создано: 11 Oct 2010 3:10 PM

 Отзывы пользователей Добавить отзыв
 Назад
 Войти [Пароль утерян] 
Электронная почта:
Пароль:
Запомнить:
 
 Поиск
 Свойства статьи

 Оставьте отзыв

 Распечатать статью

 PDF версия

 Послать статью по почте

 Добавить в избранное

  • Remove From My Forums
  • Question

  • Hello, trying to run Db.QueryDefs to pull data from a query and receiving Run time error. Changed data set (
    Dim sQuery   As String) to Long, Double, String and still giving me an error. The data that I need is «string» or «number» like 19.20 or so.

    Thank you and have a good day!

    Dim Db              As Database  ‘current database
    Dim RS              As Recordset    ‘holds query result
    Dim sQuery       As String
    Dim sPercentage  As String
    Dim qdf             As QueryDef

    Set Db = CurrentDb()

    Set qdf = Db.QueryDefs(«qryPercentage»)

    sQuery = «SELECT qryPercentage.Convert FROM qryPercentage;»

    Set RS = qdf.OpenRecordset(sQuery)

    sPercentage = RS.Fields(«Convert»).Value


    JayZ

    • Edited by

      Monday, November 2, 2020 8:06 PM

Answers

  • Thank you so much for those of you who assisted me with this. Have a great day!

    This is a link that Microsoft MVP suggested (See https://www.devhut.net/2011/11/07/ms-access-vba-run-parameter-query-in-vba/) 

    Is working now. 

    Dim db              As DAO.Database
    Dim qdf             As DAO.QueryDef
    Dim prm            As DAO.Parameter
    Dim rs               As DAO.Recordset
    Dim sPercentage  As Integer

        Set db = CurrentDb

        Set qdf = db.QueryDefs(«qryPercentage»)

        For Each prm In qdf.Parameters
            prm = Eval(prm.Name)
             Debug.Print prm.Name
        Next prm

        Set rs = qdf.OpenRecordset

        ‘Work with the recordset
        sPercentage = rs.Fields(«Convert»).Value


    JayZ

    • Marked as answer by
      Radio Fixer
      Monday, November 9, 2020 3:53 PM

Ага… и что еще ты ожидаешь? :-D Действительно, «конвертировать» 31 июня невозможно!

Итак, оперативный вопрос: «И что теперь?»

«Да… вот в чем дело…»

Что вам нужно сделать, это настроить блок обработки ошибок времени выполнения (» on error gotoresume next «в Visual Basic), которая будет перехватывать это исключение всякий раз, когда оно может быть выброшено.

КСТАТИ: причина, по которой все происходит так, заключается в том, что «в 99,9% случаев преобразование будет успешным, пока пользователь не нажмет клавишу». Следовательно, толстые пальцы — это » исключение», которое должно быть очень эффективно рассматривается как таковой. Вместо того, чтобы обременять наш код постоянными (!) Проверками, чтобы увидеть, удалось ли преобразование даты… с потенциально ужасными (!!) последствиями, если мы не сможем включить хотя бы один несчастный тест… мы используем исключение-бросок механизм для выделения (редких) случаев, когда это не так.

Следовательно, «если вы» придете к следующему утверждению «», вы можете быть уверены (!), Что преобразование прошло успешно, потому что «если бы этого не произошло, вы бы (сразу…) не были бы здесь».

Вместо того, чтобы сообщать вам об их ошибках с помощью кода возврата, который обязывает вас «проверять каждый из них, каждый (!) Раз, более или менее под страхом смерти», функции обрабатывают «исключения из правила». ”Как исключения, которые они… и обязывают вас быть готовыми“ поймать ”их.

  • Ошибка препроцессинга java что это
  • Ошибка преобразования данных ответа есиа
  • Ошибка препарирования idb при прошивке
  • Ошибка преобразования данных xtdo
  • Ошибка преобразования типов python