Ошибка тип аксесс

Получено сообщение о несоответствии типов данных

Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Еще…Меньше

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

Для исправления этой проблемы можно сделать следующее:

  • Если вы изменили значение по умолчанию для поля в таблице и у вас появляется сообщение о несоответствии типов данных при попытке добавить новые записи, откройте таблицу в режиме конструктора и убедитесь в том, что выражение, заданное в качестве значения по умолчанию для поля, возвращает данные того же типа, что и у поля. Например, если тип поля — Число, не заключайте выражение для значения по умолчанию в кавычки (например, «1» возвращает текстовую строку, а не число).

  • Убедитесь условия что столбец тип данных совпадает с его тип данных поля. Если задать текстовые условия для числового поля или поля даты и времени, вы получите эту ошибку.

    Например, если ввести условия «50» или «13.12.2012»,возвращается сообщение об ошибке, так как Access интерпретирует значения в кавычках как текст, а не числа. Поэтому не забудьте удалить эти кавычка. Вы будете знать, что введите допустимую дату в поле «Условия», так как рядом с датой будут отображаться знаки #, например #12.13.12#.

Конфликт типов данных также может возникать в следующих ситуациях:

  • Вы задаете условие для поле подстановки, и условие использует значения, показанные в списке подстановок (например, имя), вместо связанных с ними значений внешний ключ (например, ИД). Так как значения внешнего ключа фактически являются значениями, сохраненными в базовой таблице, их следует использовать при вводе условия для поля.

  • Вы ввели знак доллара ($) в условии, заданном в поле валюты. Удалите знак доллара и просмотрите результаты.

    Если заданное числовое условие не является числом, оно окружено кавычками. При вводе знака $ приложение Access автоматически заключает строку в кавычки.

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

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

У меня есть отчет в Access с тремя полями: Width, Height и Area.
Width и Height извлекаются из таблицы, к которой привязан отчет, в то время как Area должно быть вычислено (высота * ширина). Я установил Control Source для Area на = [Height] * [Width], но при открытии формы в поле отображается #Type!, как правило, с описанием ошибок доступа, с хорошим использованием # и !, чтобы невозможно было точно погуглить … но я отвлекся. Я понятия не имею, что означает #Type!, и Access не хочет мне говорить.

Я не могу этого понять. В связанной таблице Height и Width являются целыми числами, и оба они заполняются в просматриваемой записи (так что это не проблема NULL). Если я изменю Control Source на что-нибудь действительно простое — например, =[Height], вместо этого будет выплевывать #Error! (опять же, спасибо за полезную информацию, Access. Мы » буду без тебя потеряна). Даже = 1 выплевывает #Error!.

Есть идеи, почему Access ненавидит мои источники управления?

6 ответов

Лучший ответ

Вы, вероятно, столкнулись с конфликтом имен, т. Е. Access выбирает элементы Width и Height объекта отчета , а не поля с именем Width и Height.

Я бы создал новый запрос и просто переименовал в нем проблемные поля. Итак, если вы используете конструктор запросов:

  • добавьте первичный ключ и любое другое непроблемное поле, затем WidthValue: Width и HeightValue: Height в качестве дополнительных столбцов;
  • наконец, установите в качестве источника записей отчета запрос, а не таблицу напрямую, и соответствующим образом обновите вычисленные формулы управления.


8

StackzOfZtuff
28 Сен 2017 в 11:04

Это довольно упрощенный расчет. Есть ли причина, по которой вы не создаете запрос, не выполняете расчет в указанном запросе и вместо этого привязываете отчет к запросу? Нет смысла убивать себя, пытаясь понять это.

Фактически, теперь, когда я думаю об этом, высота и ширина, вероятно, являются зарезервированными словами, поскольку они являются свойствами элемента управления. Может быть, поменять их на HHeight и WWidth или что-то в этом роде?


3

Johnny Bones
31 Окт 2013 в 19:26

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


0

user8690222
28 Сен 2017 в 17:15

Microsoft не указывает высоту и ширину как зарезервированные слова, однако они используются при изменении размеров форм и отчетов.


0

topdesk
22 Авг 2018 в 21:23

У меня была проблема, связанная с тем, что моя форма выдавала мне эту ошибку. Изменение ввода данных свойства формы на Да решило эту проблему. Не уверены, что это решит вашу проблему, но, возможно, в свойствах отчета вы найдете соответствующее поле?


0

Seth Reardon
14 Июн 2020 в 09:30

Щелкните правой кнопкой мыши в поле ОБЛАСТЬ и выберите свойства, затем перейдите на вкладку СОБЫТИЕ, затем нажмите «НА ВВОДЕ», выберите из раскрывающегося списка [Процедура события], нажмите на точки справа и перейдите к «ОСНОВНЫЕ ОСНОВЫ MICROSOFT VISUAL FOR APPLICATION» на в этом окне введите этот код над «End Sub»

Площадь = Высота * Ширина

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


-1

javad
9 Окт 2014 в 16:20

I have a report in Access with 3 fields on it: Width, Height and Area.
Width and Height are pulled from the table the report is bound to, whilst Area should be calculated (height * width). I’ve set the Control Source of the Area to = [Height] * [Width], but on opening the form the field displays #Type!, in typically descriptive Access errors fashion, with nice use of # and ! to make it impossible to accurately Google… but I digress. I have no idea what #Type! means and Access doesn’t want to tell me.

I can’t understand this. In the bound table, Height and Width are Integers, and are both populated in the record being viewed (so it’s not a NULL problem). If I change the Control Source to something really simple — like =[Height], it spits out #Error! instead (again, thanks for the useful intel, Access. We’d be lost without you). Even = 1 spits out #Error!.

Any idea why Access hates my control sources?

0 / 0 / 0

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

Сообщений: 88

1

Несоответствие типа в выражении

06.10.2019, 14:18. Показов 2451. Ответов 10


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

При создании отчета выдает ошибку «несоответствие типа в выражении» , не могу понять в чем проблема , подскажите пожалуйста.
Вот сама бд :



0



Eugene-LS

Заблокирован

06.10.2019, 14:23

2

Цитата
Сообщение от bbqrst
Посмотреть сообщение

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

Пример = Хорошо!
А точку входа в траблу, кто? — Пушкин описывать будет ???

Добавлено через 1 минуту

Цитата
Сообщение от bbqrst
Посмотреть сообщение

При создании отчета выдает ошибку

Отчёта в примере не наблюдаю …



0



0 / 0 / 0

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

Сообщений: 88

06.10.2019, 14:34

 [ТС]

3

Eugene-LS, ну если конкретнее , то при попытке создать отчет через мастер отчетов или конструктор из полей : книги.название , авторы.фамилия , издатель.название , выскакивает та самая ошибка . просто она выскакивает при любой попытке создать отчет , когда используется более одной таблицы.

Добавлено через 2 минуты

Цитата
Сообщение от Eugene-LS
Посмотреть сообщение

Отчёта в примере не наблюдаю …

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



0



Eugene-LS

Заблокирован

06.10.2019, 14:39

4

Цитата
Сообщение от bbqrst
Посмотреть сообщение

выскакивает та самая ошибка

— В каком выражении?
— Где?
— При каких условиях?

Базовый запрос отчёта … Смотреть надобно …
А пока всё беспредметно.



0



0 / 0 / 0

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

Сообщений: 88

06.10.2019, 14:43

 [ТС]

5

Eugene-LS, вот с отчетом



0



Eugene-LS

Заблокирован

06.10.2019, 14:44

6

bbqrst, Опишите пожалуйста порядок действий приводящих к ошибке.



0



Eugene-LS

Заблокирован

06.10.2019, 14:48

7

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

Решение

bbqrst, Смотрите!
Ничего не смущает?

Миниатюры

Несоответствие типа в выражении
 



1



Eugene-LS

Заблокирован

06.10.2019, 15:03

8

bbqrst, … вы в запросе источника данных отчёта устроили связь между числовым и текстовым полем!

Добавлено через 11 минут
bbqrst, связываемые поля таблиц должны быть однотипными и равно размерными.
Число с числом и текст с текстом (не желательно)
Подозреваю, что у вас стоит MSA 2016 — только эта версия могла позволить вам такие связки в конструкторе запроса …



0



0 / 0 / 0

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

Сообщений: 88

06.10.2019, 15:07

 [ТС]

9

Eugene-LS, вон оно что , теперь разобрался . но почему мастер отчетов так криво создает связи , потому что я поля не правильно указал ?



0



Eugene-LS

Заблокирован

06.10.2019, 15:09

10

Цитата
Сообщение от bbqrst
Посмотреть сообщение

потому что я поля не правильно указал ?

Чуть не ответил: «Ага!» …

Скорее всего причина в этом.



0



0 / 0 / 0

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

Сообщений: 88

06.10.2019, 15:13

 [ТС]

11

Eugene-LS, понял , спасибо за помощь!



0



Какой тип данных должен быть в выражении условия отбора?

FoggyFinder

Проблема в синтаксисе запроса update, не правильно начиная с where, потому что insert и select выполняется
Ошибка указывает на эту строку = Adapter3.Fill(Table3);
5cd6d0e185d5c828820491.png5cd6d0ef90985394444693.png

BorLaze

Меня вот это вот смущает в строке update: »

Не знаю, как у MS, но в SQL строки обрамляются одинарными кавычками, а не двойными.

BorLaze

Martyr1, похоже, вот тут собака порылась: [Колличество] = »» + textBox5.Text + «»

Количество — цифровое поле, а ему подсовывается строка

BorLaze

Странно, как теперь Наименование проходит без кавычек 🙂

Что касается даты, то тут я не помогу. Есть сильно подозрение, что формат ее зависит от локали (т.е. может быть и 11.05.2019, и 11-05-2019, и 05/11/2019 — в общем, вариантов масса).

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

Для исправления этой проблемы можно сделать следующее:

Если вы изменили значение по умолчанию для поля в таблице и у вас появляется сообщение о несоответствии типов данных при попытке добавить новые записи, откройте таблицу в режиме конструктора и убедитесь в том, что выражение, заданное в качестве значения по умолчанию для поля, возвращает данные того же типа, что и у поля. Например, если тип поля — Число, не заключайте выражение для значения по умолчанию в кавычки (например, «1» возвращает текстовую строку, а не число).

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

Например, если ввести условия «50» или «13.12.2012»,возвращается сообщение об ошибке, так как Access интерпретирует значения в кавычках как текст, а не числа. Поэтому не забудьте удалить эти кавычка. Вы будете знать, что введите допустимую дату в поле «Условия», так как рядом с датой будут отображаться знаки #, например #12.13.12#.

Конфликт типов данных также может возникать в следующих ситуациях:

Вы задаете условие для поле подстановки, и условие использует значения, показанные в списке подстановок (например, имя), вместо связанных с ними значений внешний ключ (например, ИД). Так как значения внешнего ключа фактически являются значениями, сохраненными в базовой таблице, их следует использовать при вводе условия для поля.

Вы ввели знак доллара ($) в условии, заданном в поле валюты. Удалите знак доллара и просмотрите результаты.

Если заданное числовое условие не является числом, оно окружено кавычками. При вводе знака $ приложение Access автоматически заключает строку в кавычки.

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

Что значит когда в access выдает сообщение: «несоответствие типов данных в выражении условия отбора»?

а если так: SELECT Сотрудник. Таб№ FROM Сотрудник WHERE (((Сотрудник. Должность) =»Горничная»));
Поле куда это подставляется имеет тип Числовой.
значит у тебя есть классификатор должностей и соответственно
а если так: SELECT Сотрудник. Таб№ FROM Сотрудник WHERE (((Сотрудник. Должность) =1));
где 1 это код должности «Горничная»
а если хочешь выбор по названию сделать, то и выбор делай из двух таблиц а уж в этом запросе и ссылайся на название

а если так: SELECT Сотрудник.Таб№ FROM Сотрудник WHERE (((Сотрудник.Должность)=»Горничная»));
Поле куда это подставляется имеет тип Числовой.

Содержание

  1. Что значит несоответствие типа выражения access
  2. Несоответствие типа данных MS Access в выражении только в инструкции where
  3. 3 ответа
  4. Что значит несоответствие типа выражения access

Что значит несоответствие типа выражения access

Запрос базе данных MS Access возвращает сообщение «Несоответствие типов данных в выражении условия отбора». SQL запрос: SELECT * FROM MainBook WHERE (Birthday BETWEEN «01.01.2000» AND «01.01.2000») Связь с базой организована через ADO, драйвер — Microsoft Jet 4.0 OLE DB Provider.

Т.е. я пытаюсь получить поля по диапазону дат рождения людей. 🙁 Именно что пытаюсь. 🙁 Может, для ADO другой синтаксис нужен? В BDE все работало.


Anatoly Podgoretsky ( 2003-06-29 11:31 ) [1]

Оно не считает, что это даты, а как указывать литералы типа дат описано в справке по движку, у каждого свой формат. Справка есть в составе Офиса и на сайте Микрософт.


Deedlit ( 2003-06-29 11:52 ) [2]


> Anatoly Podgoretsky

Можно, если нетрудно, конкретнее — где это там искать? Я в этой области совсем начинающая. 🙁 И как вообще еще можно указать дату? Разделители другие?


Anatoly Podgoretsky ( 2003-06-29 15:23 ) [3]

А начать с того, что определить какой движок используется и искать в документации на него. Если это АДО и JET то в документации на Акцесс, справка в папке МС ОФИС, но это я уже ранее указал, там искать соответствуюзую тему.
Ты сам поищешь или как?


Deedlit ( 2003-06-29 16:09 ) [4]


> А начать с того, что определить какой движок используется
> и искать в документации на него.
> .
> Ты сам поищешь или как?

Не сердись, говорю же — не работала я с БД раньше. 🙁 Движок в данном случае — это Microsoft Jet 4.0 OLE DB Provider? В хелпе к офису про него ни слова. Есть раздел касательно типов ADO, там про DateTime написано «Date and time values for the years 100 through 9999.» Длина 8 байт. Чего ему нехватает?

для «Microsoft Jet 4.0 OLE DB Provider» есть файл справки JETSQL40.CHM поставляется с офисом, и в нем гораздо больше чем «ни слова», просто его надо было поставить (при установке офиса не убирать галочку устанавливать на хелпах).


Deedlit ( 2003-06-29 17:44 ) [6]


> sniknik ©

Я и не убирала. Ставила Word, Excel и Access, полным комплектом, MSOffice 2000. Файла НЕТ. Рискую нарваться на щелчок по носу :), но вы мне не кинете его на мыло? Очень уж хочется разобраться, что этой заразе от меня нужно. 🙁


Deedlit ( 2003-06-29 17:45 ) [7]

Уй! deedlit@land.ru Прошу прощения.


Anatoly Podgoretsky ( 2003-06-29 18:04 ) [8]

C:Program FilesMicrosoft OfficeOffice1049
У меня он в этой папке


Deedlit ( 2003-06-29 18:38 ) [9]

Только что со злости поставила вообще все комплекты справки, что с Офисом шли. Те же яйца, только в профиль. 🙁 В смысле, нет файла. В общем, либо лыжи не смазаны, либо я. гм.

Попробуй сделать поиск JETSQL40.CHM по всему диску. Может не там ищешь.


sniknik ( 2003-06-29 19:53 ) [11]

у меня в этих
D:Program FilesCommon FilesMicrosoft SharedOffice101033
D:Program FilesCommon FilesMicrosoft SharedOffice101049
от разных установок

в старом может немного иначе называтся, вроде этого JETSQL35.CHM (возможно неточно). и потом какой офис ставиш? точно есть в 2000м/XP и главное нерезанном пиратами. (насчет 97/95 . хз)

в общем полный архив справки 3.1мб, только файл 262кб его и высылаю. (гарантий что чегото нехватает само по себе дать не могу, найди полную установку офиса)


Anatoly Podgoretsky ( 2003-06-29 20:02 ) [12]

Краткая выписка по датам

При указании аргумента условиеОтбора литералы даты (символы дат) должны вводиться в американском формате, даже если используется неамериканская версия ядра базы данных Jet. Например, дата 10 мая 1996 года записывается в России как 10.05.96, а в США как 5/10/96. Обязательно заключите даты в символы «решетки» (#), как показано в следующих примерах.

Для отбора записей с этой датой в российской базе данных необходимо использовать следующую инструкцию SQL:

WHERE ДатаИсполнения = #5/10/96#;

Кроме того, можно применять функцию DateValue, которая поддерживает международные стандарты, заданные в Microsoft Windows®. Например, для отбора записей в американской базе данных создайте текст программы:

WHERE ДатаИсполнения = DateValue(«5/10/96»);

Для российской базы данных текст программы будет выглядеть так:

WHERE ДатаИсполнения = DateValue(«10.5.96»);


Deedlit ( 2003-06-29 20:58 ) [13]

Угу, уже все нашла в JETSQL40, огромное спасибо за него sniknik«у. Правда, в качестве инструкции обнаружилось лишь упоминание, что длина поля даты составляет 8 байт и может быть от 100 до 9999 лет. В общем, успела натереть веревку мылом 🙂 , пока не наткнулась на пример программы в том же разделе.

Исходный запрос в итоге стал выглядеть вот так: (Birthday BETWEEN #01/01/00# AND #01/01/00#)» .

Еще раз спасибо уважаемым Анатолию и sniknik»у за потраченное на мою скромную персону время. (делает почтительный книксен)

Источник

Несоответствие типа данных MS Access в выражении только в инструкции where

Я работаю над выражением, которое вызывает несоответствие типов данных только в операторе Where .

Как видите, я добавил функцию Nz() к каждой ссылке и даже попытался применить CBool() ко всему оператору, но это по-прежнему вызывает несоответствие типов данных.

Я определил это по этому выражению, и выражение работает точно так, как ожидалось в операторе Select . Когда я добавляю его в оператор Where , чтобы вернуть только True , возникает ошибка.

Что я мог упустить?

Обновление: полный запрос для заинтересованных

3 ответа

Какой тип данных и формат TEST_DATE? Я получаю сообщение об ошибке, если использую тип данных Date / Time и устанавливаю для данных значение false, но он работает, если он оценивается как true. Возможно, поэтому вы видите, что он работает в Select. Когда я делаю TEST_DATE двойным и использую ваш формат в функции nz (19981231), он работает во всех случаях.

Оператор Where не похож на инструкцию Select . Access ожидает условное выражение, которое он может проверить на истинность или ложь.

Быстрая версия могла бы взять это утверждение целиком и протестировать его на True :

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

Это работает для меня:

И NBR_YRS_VALID, и TEST_DATE — длинное целое число

Источник

Что значит несоответствие типа выражения access

Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.8.2007

Репутация: нет
Всего: 1

wol
Дата 26.8.2007, 13:05 (ссылка) | (нет голосов) Загрузка .
Код
x1:=strtofloat(edit1.Text);
dm.AD1.Active:=true;
dm.AD1.Append;
dm.AD1.Fields[1].AsDateTime:=wrem;
dm.AD1.Fields[2].AsString:=obsch;
dm.AD1.Fields[3].AsFloat:=x1;
dm.AD1.Fields[4].AsString:=’OK’;
dm.AD1.Post;
dm.AD1.Active:=false;

Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.8.2007

Репутация: нет
Всего: 1

wol
Дата 26.8.2007, 19:03 (ссылка) | (нет голосов) Загрузка .
Rodman
Дата 27.8.2007, 08:52 (ссылка) | (нет голосов) Загрузка .

CIO

Профиль
Группа: Модератор
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122

Код
x1:=strtofloat(edit1.Text);
dm.AD1.Active:=true;
dm.AD1.Append;
dm.AD1.Fields[1].Value:=wrem;
dm.AD1.Fields[2].Value:=obsch;
dm.AD1.Fields[3].Value:=x1;
dm.AD1.Fields[4].Value:=’OK’;
dm.AD1.Post;
dm.AD1.Active:=false;

Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.8.2007

Репутация: нет
Всего: 1

То же самое ругается.
В качестве разделителя в системе «,»-запятая,
хотя пробовал и с точкой, и с целыи числом,и с нулём.
строки и даты идут без проблем,чтение и запись,
числа — только читает.
Базу тоже пробовал пересоздавать.
И двухнедельной давности прога работает нормально.
Прилепляю архив с кодами, может поможет.

Присоединённый файл ( Кол-во скачиваний: 5 )
Test_05.rar 19,80 Kb

wol
Дата 27.8.2007, 22:39 (ссылка) | (нет голосов) Загрузка .

Эксперт

Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 4
Всего: 118

jonie
Дата 28.8.2007, 00:29 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.8.2007

Репутация: нет
Всего: 1

wol
Дата 28.8.2007, 09:21 (ссылка) | (нет голосов) Загрузка .
Rodman
Дата 28.8.2007, 09:29 (ссылка) | (нет голосов) Загрузка .

CIO

Профиль
Группа: Модератор
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122

jonie, говорит верняк.

1. Кто тебя учил так называть поля?!больше никогда так не делай, давай им понятные имена. Я исправил
2. Файл «Пароль к базе» заметил только когда архивил по новой
3. Пробуй.

Присоединённый файл ( Кол-во скачиваний: 7 )
Text.rar 15,86 Kb

Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.8.2007

Репутация: нет
Всего: 1

wol
Дата 28.8.2007, 22:20 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.11.2006

Репутация: нет
Всего: нет

pollux
Дата 20.4.2012, 16:36 (ссылка) | (нет голосов) Загрузка .
Код
dm.AD1.Fields[3].AsFloat:=strtofloat(edit1.Text);

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »

[ Время генерации скрипта: 0.1109 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Adblock
detector

  • FoggyFinder

Какой тип данных должен быть в выражении условия отбора?

В чем проблема не дает записать в базу?
System.Data.OleDb.OleDbException: «Несоответствие типов данных в выражении условия отбора.»

private void Button2_Click(object sender, EventArgs e)
        {
            OleDbConnection Base3 = new OleDbConnection
   (@"Provider= Microsoft.JET.OLEDB.4.0;Data Source=C:UsersMaKsiDesktopДипломbaza.mdb");
            Base3.Open();
            OleDbDataAdapter Adapter3 = new OleDbDataAdapter
                ("UPDATE [Продукты] SET [Наименование] = "" + textBox4.Text + "",[Колличество] = "" + textBox5.Text + "",[Дата] = "" + dateTimePicker2.Value.ToString("dd.MM.yyyy") + "" WHERE [Код] = "" + textBox3.Text + """, Base3);
            DataTable Table3 = new DataTable();
            Adapter3.Fill(Table3);
            Base3.Close();
            OleDbConnection Base4 = new OleDbConnection
                (@"Provider= Microsoft.JET.OLEDB.4.0;Data Source=C:UsersMaKsiDesktopДипломbaza.mdb");
            Base4.Open();
            OleDbDataAdapter Adapter4 = new OleDbDataAdapter
                ("SELECT * FROM Продукты", Base4);
            DataTable Table4 = new DataTable();
            Adapter4.Fill(Table4);
            dataGridView1.DataSource = Table4;
            Base4.Close();
        }


  • Вопрос задан

    более трёх лет назад

  • 935 просмотров

OleDbConnection Base3 = new OleDbConnection
               (@"Provider= Microsoft.JET.OLEDB.4.0;Data Source=C:UsersMaKsiDesktopДипломbaza.mdb");
            Base3.Open();
            OleDbDataAdapter Adapter3 = new OleDbDataAdapter
                ("UPDATE Продукты SET Наименование = "" + textBox4.Text + "", Количество = "" + textBox5.Text + "", Дата = "" + dateTimePicker2.Value.ToString("dd.MM.yyyy") + "" WHERE Код = " + textBox3.Text + "", Base3);
            DataTable Table3 = new DataTable();
            Adapter3.Fill(Table3);
            Base3.Close();

В таком виде все работает

Пригласить эксперта


  • Показать ещё
    Загружается…

06 июн. 2023, в 09:58

100000 руб./за проект

06 июн. 2023, в 09:53

2000 руб./за проект

06 июн. 2023, в 08:55

2000 руб./за проект

Минуточку внимания

Для удобства вопроса сделал тестовую базу данных «pacient.mdb», таблица «spisok», столбцы «Код, ColФамилия, ColВозраст, ColПоступил, ColВыбыл». Запрос формируется при нажатии на кнопку ‘ButtonЗапрос’ на форме.
В базе Access тип данных для ColПоступил, ColВыбыл-‘Дата/Время’, формат поля — ‘краткий формат даты’, типа 22.03.2013. Данные выводим в DataGridView- dgv1
При запросе к типам данных ‘строка’, ‘число’ все работает, при запросе к типу данных ‘Дата/Время’ выдает ошибку «Несоответствие типов данных в выражении условия отбора» пробовал разные варианты
Помогите пожалуйста!!!
Код программы прилагаю

Imports System.Data.OleDb ‘DataTabletln
Imports System.IO
Public Class Form1
    Public m_DS As New DataSet()
    Public m_dt As DataTable
    Public m_da As OleDbDataAdapter
    Public m_dv As DataView
    Public WithEvents m_cm As CurrencyManager
    Public Const connstr As String = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=pacient.mdb»
    Public conn As New OleDbConnection(connstr)
    Public s1, s2 As String
    Public d1, d2 As DateTime
    Public d3 As Date
    Public n1, n2 As Integer

    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        conn.Open()
        LoadData() ‘загружаем все таблицы
        BindControls() ‘связываем элементы управления с источниками данных
    End Sub

    Public Sub LoadData()
        LoadTable(«spisok», «SELECT * FROM spisok», m_dt, m_da)
    End Sub

    Public Sub LoadTable(ByVal tabname As String, ByVal sel As String, ByRef dt As DataTable, ByRef da As OleDbDataAdapter)
        ‘ Create a data adapter.
        da = New OleDbDataAdapter(sel, connstr)
        ‘ Создать INSERT, UPDATE, and DELETE команды.
        Dim cmdb As New OleDbCommandBuilder(da) ‘генерирует команды, согласующие изменения, вносимые в объект dataset, со связанной БД

        Try
            da.InsertCommand = cmdb.GetInsertCommand() ‘добавляет новую запись в базу
            da.UpdateCommand = cmdb.GetUpdateCommand() ‘обновляет запись в базе
            da.DeleteCommand = cmdb.GetDeleteCommand() ‘удаляет запись из набора данных
        Catch exc As Exception
            MsgBox(exc.Message)
        End Try
        da.TableMappings.Add(«Table», tabname)
        ‘ Load the DataSet.
        da.Fill(m_DS)
        ‘ Save a reference to the new table.
        dt = m_DS.Tables(tabname)
    End Sub

    Public Sub BindControls()
        m_dv = New DataView(m_dt) : dgv1.DataSource = m_dv : m_cm = CType(Me.BindingContext(m_dt), CurrencyManager)
    End Sub

    Private Sub ButtonЗапрос_Click(sender As System.Object, e As System.EventArgs) Handles ButtonЗапрос.Click
        m_DS.Clear()
        s1 = «23.01.2013»
        ‘d1 = d1.ToShortDateString
        d1 = «23.01.2013»
        ‘d1 = «23/01/2013»
        d3 = «23/01/2013»
        ‘LoadTable(«spisok», «SELECT * FROM spisok where ColПоступил = ‘23.02.2013’», m_dt, m_da)
        LoadTable(«spisok», «SELECT * FROM spisok where ColПоступил > ‘» & d1 & «‘», m_dt, m_da)
        ‘LoadTable(«spisok», «SELECT * FROM spisok where ColПоступил > ‘» & d3 & «‘», m_dt, m_da)
    End Sub
End Class

  • Изменено

    23 августа 2013 г. 16:31

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка тип serial не существует
  • Ошибка тип bigserial не существует
  • Ошибка тинькофф пополнение
  • Ошибка тинькофф неуспешная авторизация

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии