Обновление записи в базе данных

Простейшие вопросы в области инженерной разработки
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Обновление записи в базе данных

Сообщение jane_wild »

Ребята подскажите в чем проблема. Скажу сразу с БД никогда не работала и вот пришлось. Есть база данных созданная в MS Access 2016 и состоит из 8-ми полей, Название, ID, количество и последние пять - это фото (кстати может кто подскажет более рациональное хранение фотографии). С чтением и добавлением новой записи проблем не возникает. А вот обновить существующую не получается - выдает ошибку связанную с синтаксисом. Не понимаю ведь я делаю все по примерам из LV Examples. В приложении тестовый проект (LV 2016) При нажатии на кнопку "Update" Нужно обновить количество... Спасибо.
Вложения
Test DB.zip
(107.46 КБ) 126 скачиваний
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Обновление записи в базе данных

Сообщение Kosist »

У Вас поле ID - числовое, значит в запросе не нужны кавычки. Вместо where ID_item='8765' нужно where ID_item=8765.
Мы делили апельсин - много наших полегло...
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Обновление записи в базе данных

Сообщение jane_wild »

Вместо where ID_item='8765' нужно where ID_item=8765.
Пробовала и так и этак, ошибка одна и та же
BD_Error.jpg
:dntknw:
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Обновление записи в базе данных

Сообщение IvanLis »

jane_wild писал(а):Есть база данных созданная в MS Access 2016....
Нужно обновить количество...
Access странная штука, и стандартные SQL там не всегда работают.
Попробуйте тег (имя поля) обернуть в квадратные скобки или апострофы, у самого возможности проверить нет....
Типа так:

Код: Выделить всё

where [ID_item]=8765
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Обновление записи в базе данных

Сообщение jane_wild »

IvanLis писал(а):Access странная штука, и стандартные SQL там не всегда работают.
Попробуйте тег (имя поля) обернуть в квадратные скобки или апострофы, у самого возможности проверить нет....
Типа так:

Код: Выделить всё

where [ID_item]=8765
К сожалению ни квадратные, ни фигурные скобки, а так же апострофы не работают. Ошибка та же. Может как то по другому нужно запрос делать? В примере установленном вместе с LV (update database.vi) используется предыдущая версия БД (файл с расширением mbd) у меня же БД с расширением accdb Может в этом все дело?
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Обновление записи в базе данных

Сообщение Kosist »

Все имена колонок нужно брать в квадратные скобки ([Count], [ID_item]) - я попробовал так, работает:
Query.png
Мы делили апельсин - много наших полегло...
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Обновление записи в базе данных

Сообщение jane_wild »

Все имена колонок нужно брать в квадратные скобки ([Count], [ID_item])
Спасибо. Ошибка связанная с синтаксисом пропала, зато появилась вот эта
Error.PNG
Error.PNG (14.88 КБ) 2920 просмотров
Тип каким то значениям не присвоено значение. Каким? Ведь я обновляю одно значение в одном столбце.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Обновление записи в базе данных

Сообщение Artem.spb »

Я бы ещё и имя таблицы заскобил.
У меня ошибки нет.
Выложите свой обновлённый код, вдруг вы там что-то подпортили.
И в update data отловите строку запроса тут:
sql.PNG
что там пишут?
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Обновление записи в базе данных

Сообщение Artem.spb »

кстати может кто подскажет более рациональное хранение фотографии
Рациональное в каком отношении? Под разные задачи могут потребоваться разные решения.
Я в одном проекте сохранял фото в jpg, читал этот файл бинарно и эту сжатую информацию кидал в базу. Там мне актуально было место экономить.
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Обновление записи в базе данных

Сообщение jane_wild »

И в update data отловите строку запроса тут:
String.PNG
String.PNG (8.93 КБ) 2905 просмотров
Ошибка возникает вот здесь
Error.PNG
Рациональное в каком отношении? Под разные задачи могут потребоваться разные решения.
У меня в таблице для jpeg файла отведено 5 полей, а хотелось бы одно. Я просто нашла в интернете пример как читать/писать из/в таблицу access и там используются 5 полей. Но ведь в самой таблице можно хранить в одном поле как attachment. Но как читать или писать с/в это поле с помощью LV я не знаю.

PS. Еще вопрос, если на целевой машине, где планируется установка программы LV, не установлен MS Office но будет использоватся база данных Access, то мне нужно найти и установить Microsoft Access Database Engine правильно? И обязательно ли искать именно ту версию этого самого engine, в которой я делала базу данных - в данном случае 2016?
Я тут подумала, может все дело в версии LV, раз у Вас нет ошибки, а у меня есть...
Вложения
Test DB.zip
(109.18 КБ) 88 скачиваний
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Обновление записи в базе данных

Сообщение Artem.spb »

jane_wild писал(а):Я тут подумала, может все дело в версии LV, раз у Вас нет ошибки, а у меня есть...
меня пророй критикуют за излишнюю строгость к новичкам, но всё дело в прокладке между рулём и сиденьем

вот очевидная причина ошибки
err.PNG
err.PNG (2.02 КБ) 2880 просмотров
а должно быть [ID]=8765
У меня в таблице для jpeg файла отведено 5 полей, а хотелось бы одно. Я просто нашла в интернете пример как читать/писать из/в таблицу access и там используются 5 полей. Но ведь в самой таблице можно хранить в одном поле как attachment. Но как читать или писать с/в это поле с помощью LV я не знаю.
зачем 5???
я в том проекте не с аксесом, а с SQLite работало, но суть не меняется. Поле бинарных данных туда жахнуть.
На этой машине аксеса нет, проверить не могу, но тулкит всё равно принимает variant, я бы ему строку скормил для начала (сохранить jpg, закрыть его, открыть как текст и прочитать целиком. Только конвертацию EOL)
то мне нужно найти и установить Microsoft Access Database Engine правильно?
по-моему нет
У меня тут аксеса нет, а база успешно открывается строкой

Код: Выделить всё

Provider=Microsoft.Jet.OLEDB.4.0; Persist Security Info=False; Data Source='%s'
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Обновление записи в базе данных

Сообщение Artem.spb »

Дополнение: с вашей базой фокус не прошёл.
IvanLis подскажет, он знает по свежим следам :)
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Обновление записи в базе данных

Сообщение jane_wild »

должно быть [ID]=8765
Я бы очень хотела что бы Вы оказались правы, но увы - ошибка та же...
Error_2147217904.jpg
Это я пробовала все варианты...
Склоняюсь к мысли что что то не то с версиями. У меня Win 7 64bit, MS Office 2016 32bit, LV 2016 32bit.
Но тогда не совсем понятно почему открытие и чтение работают без ошибок...
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Обновление записи в базе данных

Сообщение Kosist »

Там что-то происходит неправильное с парсингом данных. Попробуйте так, прописывать запрос вручную и подставлять туда параметры:
Update record.png
Мы делили апельсин - много наших полегло...
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Обновление записи в базе данных

Сообщение jane_wild »

Kosist писал(а):Там что-то происходит неправильное с парсингом данных. Попробуйте так, прописывать запрос вручную и подставлять туда параметры:
Спасибо Вам добрый человек, действительно работает. :dance:
You Get it!.PNG
You Get it!.PNG (9.32 КБ) 2825 просмотров
зачем 5???
я в том проекте не с аксесом, а с SQLite работало, но суть не меняется. Поле бинарных данных туда жахнуть.
На этой машине аксеса нет, проверить не могу, но тулкит всё равно принимает variant, я бы ему строку скормил для начала (сохранить jpg, закрыть его, открыть как текст и прочитать целиком. Только конвертацию EOL)
1- сами данные
2-таблица цвета
3-ширина
4-высота
5-глубина
Понимаю что это наверное извращение, но это то что я нашла и оно работает. Теперь вот думаю как делать resize фотографий и примерно подгонять под размер, без использования NI Vision
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»