Ошибка 3464 access

I am working on a form on Access. It is supposed to insert data into a table, but I keep getting error 3464.

I am a little new to Visual Basic. This was previously working, but no longer. I am using SQL Server as a back-end. The connection works and it was inserting new rows. I have looked online but have not found a comprehensive explanation of this error.

Private Sub mSubmitButton_Click()

    CurrentDb.Execute "INSERT INTO dbo_Reporting_Table([Date], Vendor, Ordered_By, Picked_Up_By, Reported_By) " & _
    " VALUES('" & Me.mDate & "','" & Me.mVendor & "','" & Me.mOrdered_By & "','" & _
    Me.mPicked_Up_By & "','" & Me.mReported_By & "')"

    CurrentDb.Execute "INSERT INTO dbo_Items_Table([PO#], [Item], [Price], [Equipment], [Quantity]) " & _
    " VALUES(" & Me.mPONumber & ",'" & Me.mItemInput0 & "'," & Me.mPriceInput0 & ",'" & _
    Me.mEquipmentInput0 & "'," & Me.mQuantityInput0 & ")"


    Me.mItemInput0 = ""
    Me.mPriceInput0 = ""
    Me.mEquipmentInput0 = ""
    Me.mQuantityInput0 = ""

    Me.mDate = ""
    Me.mVendor = ""
    Me.mOrdered_By = ""
    Me.mPicked_Up_By = ""
    Me.Requery

    Exit Sub

Error_PopupMessage:
    'Response = MsgBox(Message, vbOKOnly + vbInformation, "Form Entry Hint", "help", "1000")
    Exit Sub

End Sub

Any advice on what I might be doing wrong would be greatly appreciated.

Vladimir_prog

0 / 0 / 0

Регистрация: 14.07.2016

Сообщений: 2

1

14.07.2016, 23:33. Показов 4316. Ответов 2

Метки sql, запрос, ошибка, с (Все метки)


Студворк — интернет-сервис помощи студентам

Всем доброго времени суток.
Задача такова: Нужно выбрать все записи у которых поле «vDate» соответствует значению переменной «dDATE», после чего занести результат во временную таблицу.
Проблема: При выполнении команды «Excecute», в качестве результата я получаю сообщение об ошибке:
«Run-time error ‘3464’ Не соответствие типов данных в выражении условия отбора»
Прошу помощи разобраться с причиной возникновения этой ошибки.
P.S. 1. Временная таблица «Temp_WeeklyReport» имеет все те же поля что и таблица «021».
2. Поле «DateValue» таблицы «Table_Temp1» имеет тип Date, соответственно.

Visual Basic
1
2
3
4
5
dim dDATE As Date
 
vDATE = DLookup("DateValue", "Table_Temp1")
 
CurrentDb.Execute "INSERT INTO Temp_WeeklyReport SELECT * FROM 021 WHERE vDate = '" & dDATE & "'"

Буду очень благодарен за помощь, а то уже 2 дня с этим вожусь.



0



mobile

Эксперт MS Access

26784 / 14463 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

15.07.2016, 00:27

2

Лучший ответ Сообщение было отмечено Vladimir_prog как решение

Решение

Vladimir_prog, дата не текст, дата в Access поле типа Double — числовое поле с плавающей запятой. К тому же дату в ВБА надо задавать по американскому формату: mm/dd/yyyy. И указатель типа даты это решетки «#». Следовательно выражение для Where надо переписать так:

Visual Basic
1
2
CurrentDb.Execute "INSERT INTO Temp_WeeklyReport SELECT * FROM [021] " _
& "WHERE vDate = " & Format(dDATE, "#mm/dd/yyyy#")

Обратный слэш указывает, что следующий символ не системный



1



0 / 0 / 0

Регистрация: 14.07.2016

Сообщений: 2

15.07.2016, 01:25

 [ТС]

3

mobile, большое спасибо за столь быстрый и рассписаный ответ !
Всё верно, всё работает.



0



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

Сводка «Microsoft Access Error 3464

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

Ошибка 3464 может столкнуться с пользователями Microsoft Access, если они регулярно используют программу, также рассматривается как «Data type mismatch in criteria expression.». Когда появится ошибка, пользователи компьютеров смогут уведомить разработчика о наличии ошибки 3464 через отчеты об ошибках. Затем Microsoft Corporation будет иметь знания, чтобы исследовать, как и где устранить проблему. Если есть запрос на обновление Microsoft Access, это обычно обходной путь для устранения проблем, таких как ошибка 3464 и другие ошибки.

Что вызывает ошибку 3464 во время выполнения?

Наиболее распространенные вхождения «Microsoft Access Error 3464» проблемы при загрузке Microsoft Access. Мы можем определить, что ошибки во время выполнения ошибки 3464 происходят из:

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

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

Ошибка 3464 Logic Error — Логическая ошибка возникает, когда ПК производит неправильный вывод, даже когда пользователь вводит правильный вход. Обычные причины этой проблемы связаны с ошибками в обработке данных.

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

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

Частичный список ошибок Microsoft Access Error 3464 Microsoft Access:

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

Эти сообщения об ошибках Microsoft Corporation могут появляться во время установки программы, в то время как программа, связанная с Microsoft Access Error 3464 (например, Microsoft Access) работает, во время запуска или завершения работы Windows, или даже во время установки операционной системы Windows. Документирование проблем Microsoft Access Error 3464 в Microsoft Access является ключевым для определения причины проблем с электронной Windows и сообщения о них в Microsoft Corporation.

Создатели Microsoft Access Error 3464 Трудности

Проблемы Microsoft Access и Microsoft Access Error 3464 возникают из отсутствующих или поврежденных файлов, недействительных записей реестра Windows и вредоносных инфекций.

В основном, осложнения Microsoft Access Error 3464 связаны с:

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

Продукт Solvusoft

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

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

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

I have a database that worked perfectly before, but today for some reason it has this error:

run time error 3464 data type mismatch

When I click debug, it pointed out the line that has the error:

Set rst = CurrentDb().OpenRecordset(strSQL)

How could I fix it? Thank you!!!!

Below is my code:

Function DmdQtyThruDate(ItemVar As String, DatePeg As Date) As Double
Dim rst As DAO.Recordset
    Dim strSQL As String
    
    strSQL = "SELECT Sum(TotQty) AS TotTotQty "
    strSQL = strSQL & "FROM ("
    strSQL = strSQL & "SELECT DISTINCTROW Sum([dbo_apsplan].[qty]) AS TotQty "
    strSQL = strSQL & "FROM [dbo_apsplan] LEFT JOIN [dbo_job_sch] ON (([dbo_apsplan].[ref_line_suf] = [dbo_job_sch].[suffix]) AND ([dbo_apsplan].[ref_num] = [dbo_job_sch].[job])) "
    strSQL = strSQL & "WHERE ([dbo_apsplan].[item]='" & ItemVar & "' AND [dbo_apsplan].[is_demand]=1 AND DateValue(IIf([dbo_apsplan].[ref_type]='j',[dbo_job_sch].[start_date],[dbo_apsplan].[due_date]))<=DateValue(#" & DatePeg & "#)) "
    strSQL = strSQL & "UNION ALL "
    strSQL = strSQL & "SELECT Sum([qty_ordered]-[qty_shipped]) AS TotQty "
    strSQL = strSQL & "FROM [dbo_coitem] "
    strSQL = strSQL & "WHERE (([item]='" & ItemVar & "') AND ([ref_num]is null) AND ([stat]='o' Or [stat]='p') AND (DateValue([due_date])<=DateValue(#" & DatePeg & "#)))); "
    
    Set rst = CurrentDb().OpenRecordset(strSQL)
    If rst.EOF = False Then
       DmdQtyThruDate = Nz(rst("TotTotQty"), 0)
    Else
        DmdQtyThruDate = 0
    End If
    
    rst.Close
    Set rst = Nothing

End Function

Parzival's user avatar

Parzival

2,0014 gold badges13 silver badges28 bronze badges

asked Apr 16, 2021 at 19:36

Trung Tran's user avatar

4

Consider using parameterized stored queries which is more efficient than VBA run queries especially with JOIN and UNION since Access engine saves best execution plan. This also helps avoid concatenation of SQL and VBA, enhances readability and maintainability, and better aligns data types.

SQL (save as a stored query; PARAMETERS clause is supported in Access SQL)

PARAMETERS prmItemVar Text, prmDatePeg Date;
SELECT SUM(TotQty) AS TotTotQty
FROM (
  SELECT SUM(a.[qty]) AS TotQty
  FROM [dbo_apsplan] a 
  LEFT JOIN [dbo_job_sch] j 
      ON ((a.[ref_line_suf] = j.[suffix]) 
      AND (a.[ref_num] = j.[job]))
  WHERE a.[item] = prmItemVar
    AND a.[is_demand]=1 
    AND DateValue(IIf(a.[ref_type] = 'j', j.[start_date], a.[due_date])
        ) <= prmDatePeg
  
  UNION ALL

  SELECT SUM([qty_ordered] - [qty_shipped]) AS TotQty
  FROM [dbo_coitem]
  WHERE [item] = prmItemVar
    AND [ref_num] IS NULL
    AND ([stat]='o' OR [stat]='p')
    AND DateValue([due_date]) <= prmDatePeg
);

VBA

Function DmdQtyThruDate(ItemVar As String, DatePeg As Date) As Double
    Dim qDef   As DAO.QueryDef
    Dim rst    As DAO.Recordset
    Dim strSQL As String
    
    ' INITIALIZE QUERYDEF
    Set qDef = CurrentDb.QueryDefs("mySavedQuery")    

    ' BIND PARAMETERS
    qDef!prmItemVar = ItemVar
    qDef!prmDatePeg = DatePeg

    ' OPEN RECORDSET
    Set rst = qDef.OpenRecordset()
    If rst.EOF = False Then
       DmdQtyThruDate = Nz(rst("TotTotQty"), 0)
    Else
       DmdQtyThruDate = 0
    End If
    
    rst.Close
    Set rst = Nothing: Set qDef = Nothing

End Function

answered Apr 16, 2021 at 20:34

Parfait's user avatar

ParfaitParfait

104k17 gold badges93 silver badges124 bronze badges

  • Remove From My Forums
  • Question

  • I am trying to print a report I am recieving an emrro Run-tim error 3464: Data type mismatch in criteria expresson. How can I debug this error so that I can be able the report in Access?

    • Moved by

      Thursday, July 12, 2012 1:38 AM
      moving to a more appropriate forum (From:Excel IT Pro Discussions)

Answers

  • Hi,

    As your code, I found that your SQL is a select statement, and based on my try, I think the CurrentDb.Execute
    cannot run a “Select” SQL statement. Since the “dbFailOnError” means
    Rolls back updates if an error occurs. A “select” SQL statement will not update any object. I think we can use DoCmd.RunSQL strSQL instead.

    About this method, please refer to the following link:

    http://msdn.microsoft.com/en-us/library/ff194626.aspx

    And in your code “strSQL = rs![Col1]”. This statement will change the strSQL statement, it will return the result of the select statement. Then use this result of the select statement
    will cause an error.


    Jaynet Zhang

    TechNet Community Support

    • Marked as answer by
      Jaynet Zhang
      Thursday, July 19, 2012 3:03 AM

Понравилась статья? Поделить с друзьями:
  • Ошибка 345 ваз 2110
  • Ошибка 346 факс
  • Ошибка 345 nissan teana
  • Ошибка 346 на приоре 16 клапанов
  • Ошибка 3449 атол