Обновление записи в базе данных
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Обновление записи в базе данных
Ребята подскажите в чем проблема. Скажу сразу с БД никогда не работала и вот пришлось. Есть база данных созданная в MS Access 2016 и состоит из 8-ми полей, Название, ID, количество и последние пять - это фото (кстати может кто подскажет более рациональное хранение фотографии). С чтением и добавлением новой записи проблем не возникает. А вот обновить существующую не получается - выдает ошибку связанную с синтаксисом. Не понимаю ведь я делаю все по примерам из LV Examples. В приложении тестовый проект (LV 2016) При нажатии на кнопку "Update" Нужно обновить количество... Спасибо.
- Вложения
-
- Test DB.zip
- (107.46 КБ) 128 скачиваний
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Обновление записи в базе данных
У Вас поле ID - числовое, значит в запросе не нужны кавычки. Вместо where ID_item='8765' нужно where ID_item=8765.
Мы делили апельсин - много наших полегло...
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Обновление записи в базе данных
Пробовала и так и этак, ошибка одна и та жеВместо where ID_item='8765' нужно where ID_item=8765.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Обновление записи в базе данных
Access странная штука, и стандартные SQL там не всегда работают.jane_wild писал(а):Есть база данных созданная в MS Access 2016....
Нужно обновить количество...
Попробуйте тег (имя поля) обернуть в квадратные скобки или апострофы, у самого возможности проверить нет....
Типа так:
Код: Выделить всё
where [ID_item]=8765
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Обновление записи в базе данных
К сожалению ни квадратные, ни фигурные скобки, а так же апострофы не работают. Ошибка та же. Может как то по другому нужно запрос делать? В примере установленном вместе с LV (update database.vi) используется предыдущая версия БД (файл с расширением mbd) у меня же БД с расширением accdb Может в этом все дело?IvanLis писал(а):Access странная штука, и стандартные SQL там не всегда работают.
Попробуйте тег (имя поля) обернуть в квадратные скобки или апострофы, у самого возможности проверить нет....
Типа так:Код: Выделить всё
where [ID_item]=8765
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Обновление записи в базе данных
Все имена колонок нужно брать в квадратные скобки ([Count], [ID_item]) - я попробовал так, работает:
Мы делили апельсин - много наших полегло...
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Обновление записи в базе данных
Спасибо. Ошибка связанная с синтаксисом пропала, зато появилась вот эта Тип каким то значениям не присвоено значение. Каким? Ведь я обновляю одно значение в одном столбце.Все имена колонок нужно брать в квадратные скобки ([Count], [ID_item])
-
- professor
- Сообщения: 3409
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Обновление записи в базе данных
Я бы ещё и имя таблицы заскобил.
У меня ошибки нет.
Выложите свой обновлённый код, вдруг вы там что-то подпортили.
И в update data отловите строку запроса тут: что там пишут?
У меня ошибки нет.
Выложите свой обновлённый код, вдруг вы там что-то подпортили.
И в update data отловите строку запроса тут: что там пишут?
-
- professor
- Сообщения: 3409
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Обновление записи в базе данных
Рациональное в каком отношении? Под разные задачи могут потребоваться разные решения.кстати может кто подскажет более рациональное хранение фотографии
Я в одном проекте сохранял фото в jpg, читал этот файл бинарно и эту сжатую информацию кидал в базу. Там мне актуально было место экономить.
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Обновление записи в базе данных
Ошибка возникает вот здесьИ в update data отловите строку запроса тут:
У меня в таблице для jpeg файла отведено 5 полей, а хотелось бы одно. Я просто нашла в интернете пример как читать/писать из/в таблицу access и там используются 5 полей. Но ведь в самой таблице можно хранить в одном поле как attachment. Но как читать или писать с/в это поле с помощью LV я не знаю.Рациональное в каком отношении? Под разные задачи могут потребоваться разные решения.
PS. Еще вопрос, если на целевой машине, где планируется установка программы LV, не установлен MS Office но будет использоватся база данных Access, то мне нужно найти и установить Microsoft Access Database Engine правильно? И обязательно ли искать именно ту версию этого самого engine, в которой я делала базу данных - в данном случае 2016?
Я тут подумала, может все дело в версии LV, раз у Вас нет ошибки, а у меня есть...
- Вложения
-
- Test DB.zip
- (109.18 КБ) 89 скачиваний
-
- professor
- Сообщения: 3409
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Обновление записи в базе данных
меня пророй критикуют за излишнюю строгость к новичкам, но всё дело в прокладке между рулём и сиденьемjane_wild писал(а):Я тут подумала, может все дело в версии LV, раз у Вас нет ошибки, а у меня есть...
вот очевидная причина ошибки а должно быть [ID]=8765
зачем 5???У меня в таблице для jpeg файла отведено 5 полей, а хотелось бы одно. Я просто нашла в интернете пример как читать/писать из/в таблицу access и там используются 5 полей. Но ведь в самой таблице можно хранить в одном поле как attachment. Но как читать или писать с/в это поле с помощью LV я не знаю.
я в том проекте не с аксесом, а с SQLite работало, но суть не меняется. Поле бинарных данных туда жахнуть.
На этой машине аксеса нет, проверить не могу, но тулкит всё равно принимает variant, я бы ему строку скормил для начала (сохранить jpg, закрыть его, открыть как текст и прочитать целиком. Только конвертацию EOL)
по-моему нетто мне нужно найти и установить Microsoft Access Database Engine правильно?
У меня тут аксеса нет, а база успешно открывается строкой
Код: Выделить всё
Provider=Microsoft.Jet.OLEDB.4.0; Persist Security Info=False; Data Source='%s'
-
- professor
- Сообщения: 3409
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Обновление записи в базе данных
Дополнение: с вашей базой фокус не прошёл.
IvanLis подскажет, он знает по свежим следам :)
IvanLis подскажет, он знает по свежим следам :)
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Обновление записи в базе данных
Я бы очень хотела что бы Вы оказались правы, но увы - ошибка та же... Это я пробовала все варианты...должно быть [ID]=8765
Склоняюсь к мысли что что то не то с версиями. У меня Win 7 64bit, MS Office 2016 32bit, LV 2016 32bit.
Но тогда не совсем понятно почему открытие и чтение работают без ошибок...
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Обновление записи в базе данных
Там что-то происходит неправильное с парсингом данных. Попробуйте так, прописывать запрос вручную и подставлять туда параметры:
Мы делили апельсин - много наших полегло...
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Обновление записи в базе данных
Спасибо Вам добрый человек, действительно работает.Kosist писал(а):Там что-то происходит неправильное с парсингом данных. Попробуйте так, прописывать запрос вручную и подставлять туда параметры:
1- сами данныезачем 5???
я в том проекте не с аксесом, а с SQLite работало, но суть не меняется. Поле бинарных данных туда жахнуть.
На этой машине аксеса нет, проверить не могу, но тулкит всё равно принимает variant, я бы ему строку скормил для начала (сохранить jpg, закрыть его, открыть как текст и прочитать целиком. Только конвертацию EOL)
2-таблица цвета
3-ширина
4-высота
5-глубина
Понимаю что это наверное извращение, но это то что я нашла и оно работает. Теперь вот думаю как делать resize фотографий и примерно подгонять под размер, без использования NI Vision
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 875 Просмотры
-
Последнее сообщение IvanLis
-
- 13 Ответы
- 1228 Просмотры
-
Последнее сообщение Boxa
-
- 0 Ответы
- 503 Просмотры
-
Последнее сообщение Juri
-
- 3 Ответы
- 272 Просмотры
-
Последнее сообщение AndreyDmitriev
-
- 13 Ответы
- 2455 Просмотры
-
Последнее сообщение rsv