Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как правильно написать код / 25 сообщений из 27, страница 1 из 2
08.09.2014, 21:08
    #38741093
Admiral67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Доброго вечера, форумчане

Есть форма. На ней свободные контролы. Кнопка должна обрабатывать данные из контролов и запускать запрос на обновление.

Но на строчке начинающейся с FROM код не работает. Строка выделена красным. FAQ смотрел. Но не нашел объяснения.
В чем может быть причина?


s = "INSERT INTO tblGoodsAllocation ( Код, ОЗМ, Количество, ЕдИзм, АдресЯчейки, АдресСклада, Завод ) SELECT tblGoodsAllocation.Код, tblGoodsAllocation.ОЗМ, tblGoodsAllocation.Количество, tblGoodsAllocation.ЕдИзм, tblGoodsAllocation.АдресЯчейки, tblGoodsAllocation.АдресСклада, tblGoodsAllocation.Завод"
FROM tblGoodsAllocation WHERE (((tblGoodsAllocation.Код)=a) AND ((tblGoodsAllocation.ОЗМ)=b) AND ((tblGoodsAllocation.Количество)=c) AND ((tblGoodsAllocation.ЕдИзм)=d) AND ((tblGoodsAllocation.АдресЯчейки)=g) AND ((tblGoodsAllocation.АдресСклада)=f) AND ((tblGoodsAllocation.Завод)=e))";
...
Рейтинг: 0 / 0
08.09.2014, 21:24
    #38741102
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Потому что (внезапно!))) перед FROM текстовая строка заканчивается (кавычка закрывается)

А оператора FROM в VB как бэ нет
...
Рейтинг: 0 / 0
08.09.2014, 21:26
    #38741104
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
s = "INSERT INTO tblGoodsAllocation ( Код, ОЗМ, Количество, ЕдИзм, АдресЯчейки, АдресСклада, Завод ) " + _
    "SELECT tblGoodsAllocation.Код, tblGoodsAllocation.ОЗМ, tblGoodsAllocation.Количество, " + _
    "tblGoodsAllocation.ЕдИзм, tblGoodsAllocation.АдресЯчейки, tblGoodsAllocation.АдресСклада, " + _
    "tblGoodsAllocation.Завод " + _
    "FROM tblGoodsAllocation WHERE (((tblGoodsAllocation.Код)=a) AND ((tblGoodsAllocation.ОЗМ)=b) AND " + _
    "((tblGoodsAllocation.Количество)=c) AND ((tblGoodsAllocation.ЕдИзм)=d) AND " + _
    "((tblGoodsAllocation.АдресЯчейки)=g) AND ((tblGoodsAllocation.АдресСклада)=f) AND " + _
    "((tblGoodsAllocation.Завод)=e))"
...
Рейтинг: 0 / 0
08.09.2014, 23:14
    #38741147
Admiral67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Shocker.Pro,

Сделал как вы написали. Программа ругается. Пишет Run-time error "3075", ошибка синтаксиса (пропущен оператор) в выражении запроса.

Забыл написать, запрос я вызываю командой
CurrentDb.Execute s
...
Рейтинг: 0 / 0
08.09.2014, 23:36
    #38741162
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Admiral67,
я не особый спец по запросам, но....
Зачем там много скобок? Без них не работает?
И что такое все эти загадочные a,b,c,d,e,f? Это не переменные, случаем? Если переменные - то надо знать, что в них - текст или число. Если это и есть критерии для отбора, то букавки, вроде как надо в апострафы заключать:
Код: vbnet
1.
2.
3.
s = "INSERT INTO tblGoodsAllocation ( Код, ОЗМ, Количество, ЕдИзм, АдресЯчейки, АдресСклада, Завод ) " & _
    "SELECT tblGoodsAllocation.Код, tblGoodsAllocation.ОЗМ, tblGoodsAllocation.Количество, tblGoodsAllocation.ЕдИзм, tblGoodsAllocation.АдресЯчейки, tblGoodsAllocation.АдресСклада, tblGoodsAllocation.Завод" & _
    "FROM tblGoodsAllocation WHERE ((tblGoodsAllocation.Код='a') AND (tblGoodsAllocation.ОЗМ='b') AND (tblGoodsAllocation.Количество='c') AND (tblGoodsAllocation.ЕдИзм='d') AND (tblGoodsAllocation.АдресЯчейки='g') AND (tblGoodsAllocation.АдресСклада='f') AND (tblGoodsAllocation.Завод='e'))"
...
Рейтинг: 0 / 0
08.09.2014, 23:38
    #38741164
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Прошу простить за столь нечитабельный вид запроса. Не привык, что строки внутри кода не переносятся...А переделывать сейчас смысла уже не вижу
...
Рейтинг: 0 / 0
08.09.2014, 23:41
    #38741165
Admiral67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
The_Prist,

Да, это переменные. Вы могли бы подсказать как будет выглядеть код если буквы означают переменные.
В них текст
...
Рейтинг: 0 / 0
08.09.2014, 23:49
    #38741167
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Admiral67,

Код: vbnet
1.
"...(tblGoodsAllocation.Код='" & a & "')...


и так для всех.
...
Рейтинг: 0 / 0
09.09.2014, 00:11
    #38741172
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
The_PristЗачем там много скобок? Без них не работает?это мастер SQL-запросов напихал


The_Prist
Код: vbnet
1.
"...(tblGoodsAllocation.Код='" & a & "')...



и так для всех.не надо так для всех

для числовых констант апострофы не нужны и даже очень вредны
Код: vbnet
1.
"...(tblGoodsAllocation.Код=" & Str(a) & ")...

для текстовых констант нужно удваивать апострофы
Код: vbnet
1.
"...(tblGoodsAllocation.АдресСклада='" & Replace(f, "'", "''") & "')...
...
Рейтинг: 0 / 0
09.09.2014, 00:13
    #38741173
Admiral67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
The_Prist,

К сожалению ошибка осталась.
Приложил скрин ошибки
...
Рейтинг: 0 / 0
09.09.2014, 00:15
    #38741175
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
ну так прямо на сообщении же видно, что перед FROM пропущен пробел.
вы уж сами тоже включайте голову, ВСЁ за вас на форуме не сделают
...
Рейтинг: 0 / 0
09.09.2014, 12:23
    #38741575
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Shocker.Proне надо так для всех
Shocker.Pro, это понятно. Я акцент на этом в своем сообщении поставил и получил ответ:
Admiral67В них текст
...
Рейтинг: 0 / 0
09.09.2014, 12:27
    #38741586
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Admiral67The_Prist,

К сожалению ошибка осталась.
Приложил скрин ошибки

зачем столько скобок?
...
Рейтинг: 0 / 0
09.09.2014, 12:27
    #38741590
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
вообще же ни одна не нужна
...
Рейтинг: 0 / 0
09.09.2014, 12:53
    #38741634
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
The_PristЯ акцент на этом в своем сообщении поставил и получил ответ:Admiral67В них текств переменных может быть и текст. Но надо быть очень странным человеком, чтобы поле "Количество" в БД сделать текстовым.
...
Рейтинг: 0 / 0
09.09.2014, 18:05
    #38742078
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Shocker.Pro,

ну...это уже не ко мне :-)
А судя по скрину - там вообще почти везде числа. В общем, автору видимо надо хоть какую-то литературку по SQL почитать...
...
Рейтинг: 0 / 0
10.09.2014, 11:09
    #38742579
Admiral67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
приветствую всех.

Поле "кол-во" не числовое, так как количественный учет ведется в корпоративной информационной системе. Но в этой системе нет модуля по адресному хранению материалов и денег на доработку конечно никто не даст. Вот и приходится делать базу данных в MS Access, основное назначение которой будет обработка информации какой материал в какой ячейке лежит. А первичные документы как формировались через КИС, так и будут формироваться. То есть точность остатков в базе особой роли не играет.

Вы правы, в выражениях SQL я полный ноль. Поэтому прошу помощи у форума. То, что форум не сделает всё за меня - это понятно :)

Вот какой сейчас код. Но ошибка "неправильный синтаксис" осталась. В чем может быть причина? Если кто скинет ссылку на литературу - конечно почитаю.

S = "INSERT INTO tblGoodsAllocation Код, ОЗМ, Количество, НомерПаллеты, АдресЯчейки, АдресСклада, Станция + _
"SELECT tblGoodsAllocation.Код, tblGoodsAllocation.ОЗМ, tblGoodsAllocation.Количество " + _
"tblGoodsAllocation.НомерПаллеты, tblGoodsAllocation.АдресЯчейки, tblGoodsAllocation.АдресСклада, tblGoodsAllocation.Станция" + _
"FROM tblGoodsAllocation WHERE tblGoodsAllocation.Код= " & Str(a) & " AND tblGoodsAllocation.ОЗМ= " & Str(b) & " AND" + _
"tblGoodsAllocation.Количество= " & Str(c) & " AND tblGoodsAllocation.НомерПаллеты= '" & Replace(d, "'", "''") & "' AND" + _
"tblGoodsAllocation.АдресЯчейки= '" & Replace(g, "'", "''") & "' AND tblGoodsAllocation.АдресСклада= '" & Replace(f, "'", "''") & "' AND" + _
"tblGoodsAllocation.Станция= '" & Replace(f, "'", "''") & "'""
...
Рейтинг: 0 / 0
10.09.2014, 11:19
    #38742584
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Admiral67В чем может быть причина?В первой строке кавычка не закрыта
Admiral67Если кто скинет ссылку на литературу - конечно почитаюа если не кинет - не почитаешь?
любой учебник по SQL для начинающих подойдет, первые несколько глав

Но, сюдя по всему, явно нужен нужен еще учебник по VB
...
Рейтинг: 0 / 0
10.09.2014, 11:21
    #38742590
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Admiral67Поле "кол-во" не числовое, так как количественный учет ведется в корпоративной информационной системе.апельсины оранжевые так как пингвины живут на южном полюсе.

почему в аксессовской базе поле "количество" не должно быть числовым? в вашей КИС количество прописью пишут?
...
Рейтинг: 0 / 0
11.09.2014, 00:28
    #38743653
Admiral67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
друзья вы бы лучше помогли, вместо того чтобы шутить. Вроде форум для этого создан, а не чтобы свое самолюбие тешить.

Исправил код. Он заработал. Публикую - вдруг кому понадобится.

DoCmd.SetWarnings (0)

SQL = "INSERT INTO tblGoodsAllocation (Код, ОЗМ, Количество, НомерПаллеты, АдресЯчейки, АдресСклада, Станция)" & _
"values (Forms![frmGoodsAllocationAdd]![Код], Forms![frmGoodsAllocationAdd]![ОЗМ], Forms![frmGoodsAllocationAdd]![Количество], Forms![frmGoodsAllocationAdd]![НомерПаллеты], Forms![frmGoodsAllocationAdd]![АдресЯчейки],Forms![frmGoodsAllocationAdd]![АдресСклада], Forms![frmGoodsAllocationAdd]![Станция]) ;"

DoCmd.RunSQL SQL
...
Рейтинг: 0 / 0
11.09.2014, 12:03
    #38744007
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Admiral67друзья вы бы лучше помогли, вместо того чтобы шутитья не вижу в топике ни одной шутки. В то же время, если вы не видите в топике помощи, то помочь вам в принципе проблематично.
Admiral67Исправил код. Он заработал.Что интересно, исправленный код делает абсолютно другую вещь. И как же мы могли догадаться, что вам нужно именно это? Ваши синтаксические ошибки мы исправили, а вот придумать за вас ТЗ, не имея никаких исходных данных мы не в состоянии - увы. Даже что вы работаете в Access-е стало понятно только сейчас, для вопросов по аксессу есть другой подфорум, рекомендую на будущее обращаться туда.
...
Рейтинг: 0 / 0
11.09.2014, 13:15
    #38744116
капитанская дочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Admiral67друзья вы бы лучше помогли, вместо того чтобы шутить. Вроде форум для этого создан, а не чтобы свое самолюбие тешить.

Исправил код. Он заработал. Публикую - вдруг кому понадобится.

DoCmd.SetWarnings (0)

SQL = "INSERT INTO tblGoodsAllocation (Код, ОЗМ, Количество, НомерПаллеты, АдресЯчейки, АдресСклада, Станция)" & _
"values (Forms![frmGoodsAllocationAdd]![Код], Forms![frmGoodsAllocationAdd]![ОЗМ], Forms![frmGoodsAllocationAdd]![Количество], Forms![frmGoodsAllocationAdd]![НомерПаллеты], Forms![frmGoodsAllocationAdd]![АдресЯчейки],Forms![frmGoodsAllocationAdd]![АдресСклада], Forms![frmGoodsAllocationAdd]![Станция]) ;"

DoCmd.RunSQL SQL

это беда всех российских форумов. обращающийся за помощью автоматом является потехой для завсегдатых. завсегдатые или так называемые гуру сначала поиздеваются втопчут в грязь потешат свое самолюбие и между делом помогут намеками (иногда случается и прямо помогут) как решить проблему. это все гаденькая натура человека который понимает что раз ты сюда обратился то деваться тебе некуда. и это ваша плата за помощь. не обращайте на это внимания и все. будьте выше этого.
...
Рейтинг: 0 / 0
11.09.2014, 13:19
    #38744124
капитанская дочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
Shocker.ProAdmiral67друзья вы бы лучше помогли, вместо того чтобы шутить
я не вижу в топике ни одной шутки.

может у меня юмор какой не такой но разве здесь нет шутки?
Shocker.ProПотому что (внезапно!))) перед FROM текстовая строка заканчивается (кавычка закрывается)

А оператора FROM в VB как бэ нет
кстати вы же меня прилюдно носом в мой русский и каверканья тыкали господин модератор топика а сами что-то неважнецкий пример поадете. далее это более чем просто безобидная шутка. вы же поддеваете автора тыкая его в его незнание. он и без того знаеет что не знает поэтому и обратился сюда. хороша помощь - оскорбить и помочь. что скажете не тешите самолюбие?

что здесь тоже шутки нет?
Shocker.Proа если не кинет - не почитаешь?
или здесь?
Antonariyапельсины оранжевые так как пингвины живут на южном полюсе.

да к предыдущему моему сообщению. наблюдается еще одна картина. когда отвечающие меряются глубиной знаний чтобы показать у коже глубина длиньше.
...
Рейтинг: 0 / 0
11.09.2014, 14:02
    #38744206
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
капитанская дочка автоматом является потехой для завсегдатых
между делом помогут намеками (иногда случается и прямо помогут)
На странных форумах Вы общаетесь...Прямо таки раз за разом прямо топчут? И только если снизойдет благодать на посетителя - то помогут? А Вы, случаем, не преувеличиваете?
Дам совет: не надо мешать всех в одну кучу. Если взять, например, Shocker.Pro и посмотреть процент сколько он помог и сколько "пошутил-потоптал" - скорее всего "пошутил-потоптал" будет практически незаметным на фоне более полезных сообщений. Да Вы и сами это знаете.

Я сам завсегдатай не одного форума - и принял Ваши высказывания как обращенные и ко мне лично тоже. Так что прошу аргументировать все свои слова в отношении завсегдатаев форумов. Притом, как я посмотрю, Вы на всех побывали, раз так уверенно пишите. Тогда уж прям со ссылками на каждого :-)
...
Рейтинг: 0 / 0
11.09.2014, 14:11
    #38744230
капитанская дочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно написать код
The_Pristкапитанская дочка автоматом является потехой для завсегдатых
между делом помогут намеками (иногда случается и прямо помогут)
На странных форумах Вы общаетесь...Прямо таки раз за разом прямо топчут? И только если снизойдет благодать на посетителя - то помогут? А Вы, случаем, не преувеличиваете?
Дам совет: не надо мешать всех в одну кучу. Если взять, например, Shocker.Pro и посмотреть процент сколько он помог и сколько "пошутил-потоптал" - скорее всего "пошутил-потоптал" будет практически незаметным на фоне более полезных сообщений. Да Вы и сами это знаете.

Я сам завсегдатай не одного форума - и принял Ваши высказывания как обращенные и ко мне лично тоже. Так что прошу аргументировать все свои слова в отношении завсегдатаев форумов. Притом, как я посмотрю, Вы на всех побывали, раз так уверенно пишите. Тогда уж прям со ссылками на каждого :-)

как я и ожидал. не надо ваши огрехи переваливать теперь на меня или как бы то ни было со мной связывать. и оправдваться тоже не надо. и советы приберегите для тех кто в них нуждается. и себе хотя бы не врите. и разводить демагогию я не собираюсь вы и сами это знаете.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как правильно написать код / 25 сообщений из 27, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]