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

Простейшие вопросы в области инженерной разработки

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

Postby jane_wild on 21 Jul 2019, 20:38

Ребята подскажите в чем проблема. Скажу сразу с БД никогда не работала и вот пришлось. Есть база данных созданная в MS Access 2016 и состоит из 8-ми полей, Название, ID, количество и последние пять - это фото (кстати может кто подскажет более рациональное хранение фотографии). С чтением и добавлением новой записи проблем не возникает. А вот обновить существующую не получается - выдает ошибку связанную с синтаксисом. Не понимаю ведь я делаю все по примерам из LV Examples. В приложении тестовый проект (LV 2016) При нажатии на кнопку "Update" Нужно обновить количество... Спасибо.
Attachments
Test DB.zip
(107.46 KiB) Downloaded 49 times
User avatar
jane_wild
advanced
advanced
 
Posts: 165
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 8

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

Postby Kosist on 21 Jul 2019, 22:07

У Вас поле ID - числовое, значит в запросе не нужны кавычки. Вместо where ID_item='8765' нужно where ID_item=8765.
Мы делили апельсин - много наших полегло...
User avatar
Kosist
expert
expert
 
Posts: 1009
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 282
CLAD I/O VIP students

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

Postby jane_wild on 21 Jul 2019, 22:27

Вместо where ID_item='8765' нужно where ID_item=8765.

Пробовала и так и этак, ошибка одна и та же
BD_Error.jpg

:dntknw:
User avatar
jane_wild
advanced
advanced
 
Posts: 165
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 8

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

Postby IvanLis on 22 Jul 2019, 01:19

jane_wild wrote:Есть база данных созданная в MS Access 2016....
Нужно обновить количество...


Access странная штука, и стандартные SQL там не всегда работают.
Попробуйте тег (имя поля) обернуть в квадратные скобки или апострофы, у самого возможности проверить нет....
Типа так:
Code: Select all
where [ID_item]=8765
User avatar
IvanLis
professor
professor
 
Posts: 4840
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 784
hardware VIP bloggers teachers

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

Postby jane_wild on 22 Jul 2019, 04:03

IvanLis wrote:Access странная штука, и стандартные SQL там не всегда работают.
Попробуйте тег (имя поля) обернуть в квадратные скобки или апострофы, у самого возможности проверить нет....
Типа так:
Code: Select all
where [ID_item]=8765


К сожалению ни квадратные, ни фигурные скобки, а так же апострофы не работают. Ошибка та же. Может как то по другому нужно запрос делать? В примере установленном вместе с LV (update database.vi) используется предыдущая версия БД (файл с расширением mbd) у меня же БД с расширением accdb Может в этом все дело?
User avatar
jane_wild
advanced
advanced
 
Posts: 165
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 8

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

Postby Kosist on 22 Jul 2019, 07:54

Все имена колонок нужно брать в квадратные скобки ([Count], [ID_item]) - я попробовал так, работает:
Query.png
Мы делили апельсин - много наших полегло...
User avatar
Kosist
expert
expert
 
Posts: 1009
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 282
CLAD I/O VIP students

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

Postby jane_wild on 22 Jul 2019, 17:15

Все имена колонок нужно брать в квадратные скобки ([Count], [ID_item])

Спасибо. Ошибка связанная с синтаксисом пропала, зато появилась вот эта
Error.PNG
Error.PNG (14.88 KiB) Viewed 1001 times

Тип каким то значениям не присвоено значение. Каким? Ведь я обновляю одно значение в одном столбце.
User avatar
jane_wild
advanced
advanced
 
Posts: 165
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 8

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

Postby Artem.spb on 22 Jul 2019, 17:30

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

что там пишут?
Artem.spb
expert
expert
 
Posts: 1677
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 266
CLD hardware I/O VIP freelance

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

Postby Artem.spb on 22 Jul 2019, 17:36

кстати может кто подскажет более рациональное хранение фотографии

Рациональное в каком отношении? Под разные задачи могут потребоваться разные решения.
Я в одном проекте сохранял фото в jpg, читал этот файл бинарно и эту сжатую информацию кидал в базу. Там мне актуально было место экономить.
Artem.spb
expert
expert
 
Posts: 1677
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 266
CLD hardware I/O VIP freelance

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

Postby jane_wild on 22 Jul 2019, 18:24

И в update data отловите строку запроса тут:

String.PNG
String.PNG (8.93 KiB) Viewed 986 times

Ошибка возникает вот здесь
Error.PNG

Рациональное в каком отношении? Под разные задачи могут потребоваться разные решения.

У меня в таблице для jpeg файла отведено 5 полей, а хотелось бы одно. Я просто нашла в интернете пример как читать/писать из/в таблицу access и там используются 5 полей. Но ведь в самой таблице можно хранить в одном поле как attachment. Но как читать или писать с/в это поле с помощью LV я не знаю.

PS. Еще вопрос, если на целевой машине, где планируется установка программы LV, не установлен MS Office но будет использоватся база данных Access, то мне нужно найти и установить Microsoft Access Database Engine правильно? И обязательно ли искать именно ту версию этого самого engine, в которой я делала базу данных - в данном случае 2016?
Я тут подумала, может все дело в версии LV, раз у Вас нет ошибки, а у меня есть...
Attachments
Test DB.zip
(109.18 KiB) Downloaded 34 times
User avatar
jane_wild
advanced
advanced
 
Posts: 165
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 8

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

Postby Artem.spb on 23 Jul 2019, 00:11

jane_wild wrote:Я тут подумала, может все дело в версии LV, раз у Вас нет ошибки, а у меня есть...

меня пророй критикуют за излишнюю строгость к новичкам, но всё дело в прокладке между рулём и сиденьем

вот очевидная причина ошибки
err.PNG
err.PNG (2.02 KiB) Viewed 961 times

а должно быть [ID]=8765

У меня в таблице для jpeg файла отведено 5 полей, а хотелось бы одно. Я просто нашла в интернете пример как читать/писать из/в таблицу access и там используются 5 полей. Но ведь в самой таблице можно хранить в одном поле как attachment. Но как читать или писать с/в это поле с помощью LV я не знаю.

зачем 5???
я в том проекте не с аксесом, а с SQLite работало, но суть не меняется. Поле бинарных данных туда жахнуть.
На этой машине аксеса нет, проверить не могу, но тулкит всё равно принимает variant, я бы ему строку скормил для начала (сохранить jpg, закрыть его, открыть как текст и прочитать целиком. Только конвертацию EOL)

то мне нужно найти и установить Microsoft Access Database Engine правильно?

по-моему нет
У меня тут аксеса нет, а база успешно открывается строкой
Code: Select all
Provider=Microsoft.Jet.OLEDB.4.0; Persist Security Info=False; Data Source='%s'
Artem.spb
expert
expert
 
Posts: 1677
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 266
CLD hardware I/O VIP freelance

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

Postby Artem.spb on 23 Jul 2019, 00:18

Дополнение: с вашей базой фокус не прошёл.
IvanLis подскажет, он знает по свежим следам :)
Artem.spb
expert
expert
 
Posts: 1677
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 266
CLD hardware I/O VIP freelance

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

Postby jane_wild on 23 Jul 2019, 01:46

должно быть [ID]=8765

Я бы очень хотела что бы Вы оказались правы, но увы - ошибка та же...
Error_2147217904.jpg

Это я пробовала все варианты...
Склоняюсь к мысли что что то не то с версиями. У меня Win 7 64bit, MS Office 2016 32bit, LV 2016 32bit.
Но тогда не совсем понятно почему открытие и чтение работают без ошибок...
User avatar
jane_wild
advanced
advanced
 
Posts: 165
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 8

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

Postby Kosist on 23 Jul 2019, 08:16

Там что-то происходит неправильное с парсингом данных. Попробуйте так, прописывать запрос вручную и подставлять туда параметры:
Update record.png
Мы делили апельсин - много наших полегло...
User avatar
Kosist
expert
expert
 
Posts: 1009
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 282
CLAD I/O VIP students

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

Postby jane_wild on 23 Jul 2019, 14:40

Kosist wrote:Там что-то происходит неправильное с парсингом данных. Попробуйте так, прописывать запрос вручную и подставлять туда параметры:

Спасибо Вам добрый человек, действительно работает. :dance:
You Get it!.PNG
You Get it!.PNG (9.32 KiB) Viewed 906 times


зачем 5???
я в том проекте не с аксесом, а с SQLite работало, но суть не меняется. Поле бинарных данных туда жахнуть.
На этой машине аксеса нет, проверить не могу, но тулкит всё равно принимает variant, я бы ему строку скормил для начала (сохранить jpg, закрыть его, открыть как текст и прочитать целиком. Только конвертацию EOL)

1- сами данные
2-таблица цвета
3-ширина
4-высота
5-глубина
Понимаю что это наверное извращение, но это то что я нашла и оно работает. Теперь вот думаю как делать resize фотографий и примерно подгонять под размер, без использования NI Vision
User avatar
jane_wild
advanced
advanced
 
Posts: 165
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 8

Next

Return to Для чайников

Who is online

Users browsing this forum: Bing [Bot] and 1 guest

cron