Страница 1 из 3

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

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

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

Добавлено: 21 июл 2019, 22:07
Kosist
У Вас поле ID - числовое, значит в запросе не нужны кавычки. Вместо where ID_item='8765' нужно where ID_item=8765.

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

Добавлено: 21 июл 2019, 22:27
jane_wild
Вместо where ID_item='8765' нужно where ID_item=8765.
Пробовала и так и этак, ошибка одна и та же
BD_Error.jpg
:dntknw:

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

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

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

where [ID_item]=8765

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

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

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

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

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

Добавлено: 22 июл 2019, 07:54
Kosist
Все имена колонок нужно брать в квадратные скобки ([Count], [ID_item]) - я попробовал так, работает:
Query.png

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

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

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

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

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

Добавлено: 22 июл 2019, 17:36
Artem.spb
кстати может кто подскажет более рациональное хранение фотографии
Рациональное в каком отношении? Под разные задачи могут потребоваться разные решения.
Я в одном проекте сохранял фото в jpg, читал этот файл бинарно и эту сжатую информацию кидал в базу. Там мне актуально было место экономить.

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

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

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

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

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

вот очевидная причина ошибки
err.PNG
err.PNG (2.02 КБ) 2901 просмотр
а должно быть [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'

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

Добавлено: 23 июл 2019, 00:18
Artem.spb
Дополнение: с вашей базой фокус не прошёл.
IvanLis подскажет, он знает по свежим следам :)

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

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

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

Добавлено: 23 июл 2019, 08:16
Kosist
Там что-то происходит неправильное с парсингом данных. Попробуйте так, прописывать запрос вручную и подставлять туда параметры:
Update record.png

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

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