Получено сообщение о несоответствии типов данных
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 |
Заблокирован |
|
06.10.2019, 14:23 |
2 |
При создании отчета выдает ошибку «несоответствие типа в выражении» , не могу понять в чем проблема , подскажите пожалуйста. Пример = Хорошо! Добавлено через 1 минуту
При создании отчета выдает ошибку Отчёта в примере не наблюдаю …
0 |
0 / 0 / 0 Регистрация: 02.11.2018 Сообщений: 88 |
|
06.10.2019, 14:34 [ТС] |
3 |
Eugene-LS, ну если конкретнее , то при попытке создать отчет через мастер отчетов или конструктор из полей : книги.название , авторы.фамилия , издатель.название , выскакивает та самая ошибка . просто она выскакивает при любой попытке создать отчет , когда используется более одной таблицы. Добавлено через 2 минуты
Отчёта в примере не наблюдаю … Все неудачные попытки были удалены , во избежание позора
0 |
Заблокирован |
|
06.10.2019, 14:39 |
4 |
выскакивает та самая ошибка — В каком выражении?
0 |
0 / 0 / 0 Регистрация: 02.11.2018 Сообщений: 88 |
|
06.10.2019, 14:43 [ТС] |
5 |
Eugene-LS, вот с отчетом
0 |
Заблокирован |
|
06.10.2019, 14:44 |
6 |
bbqrst, Опишите пожалуйста порядок действий приводящих к ошибке.
0 |
Заблокирован |
|
06.10.2019, 14:48 |
7 |
Решениеbbqrst, Смотрите! Миниатюры
1 |
Заблокирован |
|
06.10.2019, 15:03 |
8 |
bbqrst, … вы в запросе источника данных отчёта устроили связь между числовым и текстовым полем! Добавлено через 11 минут
0 |
0 / 0 / 0 Регистрация: 02.11.2018 Сообщений: 88 |
|
06.10.2019, 15:07 [ТС] |
9 |
Eugene-LS, вон оно что , теперь разобрался . но почему мастер отчетов так криво создает связи , потому что я поля не правильно указал ?
0 |
Заблокирован |
|
06.10.2019, 15:09 |
10 |
потому что я поля не правильно указал ? Чуть не ответил: «Ага!» …
0 |
0 / 0 / 0 Регистрация: 02.11.2018 Сообщений: 88 |
|
06.10.2019, 15:13 [ТС] |
11 |
Eugene-LS, понял , спасибо за помощь!
0 |
Какой тип данных должен быть в выражении условия отбора?
Проблема в синтаксисе запроса update, не правильно начиная с where, потому что insert и select выполняется
Ошибка указывает на эту строку = Adapter3.Fill(Table3);
Меня вот это вот смущает в строке update: »
Не знаю, как у MS, но в SQL строки обрамляются одинарными кавычками, а не двойными.
Martyr1, похоже, вот тут собака порылась: [Колличество] = »» + textBox5.Text + «»
Количество — цифровое поле, а ему подсовывается строка
Странно, как теперь Наименование проходит без кавычек 🙂
Что касается даты, то тут я не помогу. Есть сильно подозрение, что формат ее зависит от локали (т.е. может быть и 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 (((Сотрудник.Должность)=»Горничная»));
Поле куда это подставляется имеет тип Числовой.
Содержание
- Что значит несоответствие типа выражения access
- Несоответствие типа данных MS Access в выражении только в инструкции where
- 3 ответа
- Что значит несоответствие типа выражения 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 |
|
||
Код |
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 |
|
||
|
Rodman |
|
||
CIO Профиль Репутация: 1
|
|||
|
Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.8.2007
Репутация: нет
Всего: 1
То же самое ругается.
В качестве разделителя в системе «,»-запятая,
хотя пробовал и с точкой, и с целыи числом,и с нулём.
строки и даты идут без проблем,чтение и запись,
числа — только читает.
Базу тоже пробовал пересоздавать.
И двухнедельной давности прога работает нормально.
Прилепляю архив с кодами, может поможет.
Присоединённый файл ( Кол-во скачиваний: 5 ) Test_05.rar 19,80 Kb
wol |
|
||
|
Эксперт
Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир
Репутация: 4
Всего: 118
jonie |
|
||
|
Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.8.2007
Репутация: нет
Всего: 1
wol |
|
||
|
Rodman |
|
||
CIO Профиль Репутация: 1 jonie, говорит верняк. 1. Кто тебя учил так называть поля?!больше никогда так не делай, давай им понятные имена. Я исправил Присоединённый файл ( Кол-во скачиваний: 7 ) |
|||
|
Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.8.2007
Репутация: нет
Всего: 1
wol |
|
||
|
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.11.2006
Репутация: нет
Всего: нет
pollux |
|
||
Код |
dm.AD1.Fields[3].AsFloat:=strtofloat(edit1.Text); |
Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.
Благодарим за понимание.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | C/C++: Базы данных | Следующая тема » |
[ Время генерации скрипта: 0.1109 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Источник
Adblock
detector
Какой тип данных должен быть в выражении условия отбора?
В чем проблема не дает записать в базу?
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