Консультация № 177189
11.03.2010, 17:31
0.00 руб.
0 54 0
Здравствуйте уважаемые эксперты!
Имеется программа: «Ввод остатков по складу готовой продукции» ССЫЛКА

Записи в полях «Черт N – Наименование», «Ед. изм.» и «Цена» берутся из таблицы KACZCH.dbf, в остальные поля данные вводятся с клавиатуры, и по нажатию на кнопку «Сохранить» формируется файл OSGP.dbf куда передаются соответствующие данные из таблицы KACZCH.dbf и соответствующие введенные данные. Все данные хранящиеся в таблице OSGP.dbf можно посмотреть, нажав кнопку «Остатки». Нажав на кнопку «Оглавление» можно посмотреть остатки готовой продукции по отдельно выбранному кладовщику, нажав кнопку «Приход» можно сформировать приход ГП на склад по имеющимся данным из таблицы ARA.dbf, а также вписав новые данные. Сформированный приход записывается в таблицу Prin.dbf. В форме «Приход», нажав на кнопку «Сумма прихода» можно посмотреть сумму прихода ГП на склад по каждому изделию.
Задание:
В экранной форме «Приход»:
1) при входе в форму, сделать поиск записей по всей таблице ARA.dbf сразу, а не после выбора кладовщика.
2) удалить кнопку «Сумма прихода» (вместе с формой), но сделать по нажатию на кнопку «Принято» чтобы дополнительно выводилось поле «Сумма прихода» с расчетом по той же формуле.
3) убрать поле «Цех-изготовитель т.к. выбор его будет осуществляться в шапке формы и при выборе в шапке «Цеха» и соответствующей этому цеху накладным (поле NAKL таблицы ARA.dbf) (в комбобоксе шапки выбор накладной «от» значения – 1, 1000, 2000, 3000, 4000, а в комбобоксе «до» значения – 1000, 2000, 3000, 4000, 5000), осуществить поиск записей из таблицы ARA.dbf по выбранному цеху и соответствующим накладным.
4) по нажатию на кнопку «Сохранить» все введенные данные чтобы сохранялись также и в таблицу OSGP.dbf, причем в поле «№ карт.» значение бы устанавливалось автоматически (максимальное значение из имеющихся № карт. + 1). Если в OSGP.dbf есть такое же «Наименование ЧТО», с таким же значением «Код заказа», «Цех-изготовитель», «Код что» и «Кладовщик» вводимые в форму «Приход», то просто дописываем в OSGP.dbf соответствующее кол-во, введенное в форме «Приход». Недостающие записи в полях таблицы OSGP.dbf: поле «Вес» (если в таблице KACZCH.dbf есть такое же «Наименование ЧТО», с таким же значением «Код заказа», «Цех-изготовитель», «Код что» то ставим этой записи соответствующее числовое значение веса, если же нету – оставляем пустым. Поле «№ склада» (по всем записям значение «72»). Поле «Ед. изм.» по всем «шт». Замечание: сохранение введенных данных из формы «Приход» делать и в таблицу Prin.dbf (не забыв добавить поле NAKL), т.к. нужно сделать следующее: при открытии формы «Приход» в поле «Сдаваемое кол-во» будет проверяться – есть ли соответствующие данные в таблице Prin.dbf (то есть не принималось ли ранее соответствующее «Наименование ЧТО»). Если в таблице Prin.dbf уже было принято соответствующее «Наименование ЧТО», то отображаем в поле «Сдаваемое кол-во» только значение разности поля KOL таблицы ARA.dbf – (минус) NKOL таблицы Prin.dbf.

Обсуждение

давно
Профессионал
153662
1070
15.03.2010, 16:57
общий
Судейкин Андрей Владимирович:
Вот посмотрите.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
15.03.2010, 17:24
общий
Евгений/Genia007/:
Как то странно работает поиск записей после выбора накладных, делаешь допустим от 1 до 1000, после нажатия на "Поиск по накладным" выводятся значения накладных и 2000 и 3000...
давно
Профессионал
153662
1070
15.03.2010, 17:40
общий
Судейкин Андрей Владимирович:
"Поиск по накладным" работает правильно, просто сегодня добавил поле NAKL, ну и забыл про него в этом поиске.
Код:
procedure TForm5.BitBtn4Click(Sender: TObject);
var
i: word;
begin
StringGrid1.ColCount:= 5;
Form1.Query1.Close; // Закрыли запрос
Form1.Query1.SQL.Clear; // Отчистили запрос
Form1.Query1.SQL.Add('Select NCHTO, KOL, NAKL from ' + (#39 + 'ARA.DBF' + #39) + 'where CI = ' + (#39 + ComboBox2.Text + #39)+ ' and NAKL > ' + ComboBox3.Text + ' and NAKL < ' + ComboBox4.Text); // Добавили новый запрос
Form1.Query1.Open; // Открыли запрос
Form1.Query1.First;
if Form1.Query1.RecordCount = 0 then
begin
StringGrid1.RowCount:= 2;
for i:= 0 to 4 do
StringGrid1.Cells[i, 1]:= '';
Form1.Query1.Close; // Закрыли запрос
exit;
end;
StringGrid1.RowCount:= Form1.Query1.RecordCount + 1;
for i:= 1 to Form1.Query1.RecordCount do
begin
StringGrid1.Cells[0, i]:= Form1.Query1.FieldValues['NAKL'];
StringGrid1.Cells[1, i]:= Form1.Query1.FieldValues['NCHTO'];
StringGrid1.Cells[2, i]:= DatetoStr(Date);
StringGrid1.Cells[3, i]:= Form1.Query1.FieldValues['KOL'];
StringGrid1.Cells[4, i]:= '';
Form1.Query1.Next;
end;
Form1.Query1.Close; // Закрыли запрос
end;
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
15.03.2010, 18:11
общий
Евгений/Genia007/:
Поиск заработал. Сейчас другая проблема: как только заходишь в форму "Приход" значения в поле "Сдаваемое кол-во" сначала одни, а после выбора другого кладовшика уже другие. Да и при поиске по накладным уже перестаёт действовать формула: KOL таблицы ARA.dbf – (минус) NKOL таблицы Prin.dbf
Неизвестный
15.03.2010, 18:17
общий
Евгений/Genia007/:
А сразу можно сделать так, что как только нажимаем на кнопку "Сохранить" значение в поле "Сдаваемое кол-во меняется, вот допустим если сдаваемое кол-во было 4, мы принимаем 2, нажимаем "сохранить" и в поле сдаваемое кол-во следовательно сразу появляется значение вместо четырех 2 (4-2=2). Опять не выходя из программы вводим сюда же ещё 2, нажимаем "Сохранить", в поле сдаваемое кол-во уже сразу появляется значение 0 ???
давно
Профессионал
153662
1070
15.03.2010, 18:52
общий
Судейкин Андрей Владимирович:
Цитата: 238144
А сразу можно сделать так, что как только нажимаем на кнопку "Сохранить" значение в поле "Сдаваемое кол-во меняется, вот допустим если сдаваемое кол-во было 4, мы принимаем 2, нажимаем "сохранить" и в поле сдаваемое кол-во следовательно сразу появляется значение вместо четырех 2 (4-2=2). Опять не выходя из программы вводим сюда же ещё 2, нажимаем "Сохранить", в поле сдаваемое кол-во уже сразу появляется значение 0
А вот тут и приплыли, посмотрите предыдущие вопросы, при перезаписи по одному и тому же наименованию ЧТО - принятое количество просто переписывается без учёта содержания поля NKOL, тогда нужно переделывать весь код заново по нажатию кнопки "Сохранить". И чем дальше переделывать тем больше будет таких моментов.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
15.03.2010, 19:00
общий
Евгений/Genia007/:
это да . А у вас на это времени нет? Мне уже стыдно у вас просить, но может сделаете до воскресенья?
давно
Профессионал
153662
1070
15.03.2010, 19:19
общий
Судейкин Андрей Владимирович:
Нужно чётко сформулировать по какому принципу сохранять записи в таблицу Prin.dbf, если есть такая запись но кладовщик не совпадает, есть такая запись и кладовщик совпадает но он уже принимал какое то количество, если есть несколько записей с одинаковым наименованием ЧТО и т. п. Хорошо продумайте и напишите. Какие поля нужны и не нужны в этой таблице, например поле CI надо оставлять или его можно удалить и т.п.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Профессионал
153662
1070
15.03.2010, 19:40
общий
Судейкин Андрей Владимирович:
Посмотрите ссылку в посте • сегодня, 19:57, поправил проект.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
15.03.2010, 19:48
общий
Евгений/Genia007/:
Ну с одной стороны хорошо, а с другой нажимаешь опять "поиск по накладным" и все значения поля "Сдаваемое кол-во" опять меняются...
давно
Профессионал
153662
1070
15.03.2010, 19:52
общий
Судейкин Андрей Владимирович:
Ну дак смотрите пост выше • сегодня, 21:52
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
15.03.2010, 19:55
общий
Евгений/Genia007/:
Нужно чётко сформулировать по какому принципу сохранять записи в таблицу Prin.dbf, если есть такая запись но кладовщик не совпадает, есть такая запись и кладовщик совпадает но он уже принимал какое то количество, если есть несколько записей с одинаковым наименованием ЧТО и т. п. Хорошо продумайте и напишите. Какие поля нужны и не нужны в этой таблице, например поле CI надо оставлять или его можно удалить и т.п.

Поидее мы сохраняем как: если в Prin.dbf уже есть соответствующая запись, то не перезапимываем её, а то что ввели в поле "Принято" в форме "Приход" плюсуем к NKOL prin.dbf. Поле CI оставьте
давно
Профессионал
153662
1070
15.03.2010, 20:03
общий
Судейкин Андрей Владимирович:
Поидее мы сохраняем как: если в Prin.dbf уже есть соответствующая запись, то не перезапимываем её, а то что ввели в поле "Принято" в форме "Приход" плюсуем к NKOL prin.dbf.
А если запись есть, но кладовщик другой или номер карты?
Поле CI оставьте
убрать поле «Цех-изготовитель т.к. выбор его будет осуществляться в шапке формы
Придётся это поле всё-таки оставить в сетке.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
15.03.2010, 20:05
общий
Евгений/Genia007/:
А если запись есть, но кладовщик другой или номер карты?

все равно складываем
Неизвестный
15.03.2010, 20:42
общий
Евгений/Genia007/:
Вижу поправили недочёт в главной форме ("Ввод остатков по складу ГП") при сохранении. Спасибо!
давно
Профессионал
153662
1070
15.03.2010, 22:39
общий
Судейкин Андрей Владимирович:
Вот как Вы хотите, только один вопрос что записывать в поле KOL таблицы prin.dbf, из таблицы ARA или из сетки, сейчас это разные цифры.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
15.03.2010, 22:48
общий
Евгений/Genia007/:
Вот как Вы хотите, только один вопрос что записывать в поле KOL таблицы prin.dbf, из таблицы ARA или из сетки, сейчас это разные цифры.

из таблицы ARA.dbf
Неизвестный
15.03.2010, 23:09
общий
Евгений/Genia007/:
В каталоге с программой находится файл TForm5.BitBtn4Click.txt, он как то связас с проектом или его можно удалить?
давно
Профессионал
153662
1070
16.03.2010, 08:32
общий
Судейкин Андрей Владимирович:
В каталоге с программой находится файл TForm5.BitBtn4Click.txt, он как то связан с проектом или его можно удалить?
Это был код для кнопки «Сумма прихода», я его оставил просто так на всякий случай, сейчас он к проекту не имеет ни какого отношения.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
16.03.2010, 16:06
общий
Евгений/Genia007/:
Это был код для кнопки «Сумма прихода», я его оставил просто так на всякий случай, сейчас он к проекту не имеет ни какого отношения.

Ясно.
Ну теперь все работает так как я и хотел, огромное вам спасибо!
Неизвестный
16.03.2010, 17:35
общий
Евгений/Genia007/:
Хотя вот по нажатию на кнопку "Принято" формы "Приход" неправильно выводятся данные в полях "Сдаваемое кол-во" и "Принято", можно ли так сделать чтобы по нажатию на кнопку "Принято" в поле "Сдаваемое кол-во" было значение из ARA.dbf, а в поле "Принято" сколько всего принимали соотсветствующего товара, то есть значение поля NKOL из Prin.dbf. А также неправильно считается сумма прихода: вот я принял 5 штук "Шестярня" которая в ARA.dbf в поле STOIM=16320 (получается 16320*5=81600), а программа выводит 13600....
давно
Профессионал
153662
1070
16.03.2010, 21:52
общий
Судейкин Андрей Владимирович:
Вот и это исправил. Дальше в этой ветке вести программу нет смысла, не успел добавить ответ, а вопрос уже закрыт.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
16.03.2010, 22:05
общий
Евгений/Genia007/:
Спасибо большое! Дак написали бы модераторам чтобы засчитали это за ответ. Всё что в вопросе надо было сделать вы сделали.
давно
Профессионал
153662
1070
16.03.2010, 22:10
общий
Модераторы:
Здравствуйте. Можно из моего последнего поста сделать ответ, а то я не успел вовремя доделать прогу, и получается что работа прошла даром.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
16.03.2010, 22:18
общий
Евгений/Genia007/:
К сожалению, нет. Вопрос уже ушел в рассылку. В мини-форуме все сохранится.
В следующий раз в подобных ситуациях, если не успеваете дать ответ, сообщите модераторам и администратору рассылки, чтобы продлили время действия вопроса.
Неизвестный
16.03.2010, 22:25
общий
Николай Владимирович / Н.В.:
Здравствуйте, может всё таки попробуете оценить это как ответ, раньше в таких ситуациях модераторы после истечения времени вопроса все же засчитывали вопрос как ответ... Просто человек столько времени убил, помагая мне с данным вопросом, когда другие даже не пытались как нибудь помочь...
Неизвестный
16.03.2010, 22:32
общий
Судейкин Андрей Владимирович:
Здравствуйте!
К сожалению, такой возможности нет. И раньше тоже не было. Вы, наверное, перепутали с чем-то другим.
Единственное, что я могу предложить - задать вопрос еще раз, чтобы Евгений мог отправить ответ. Вы его оцените, а затем сразу отправим вопрос в рассылку, закрыв его.
Возможно, кто-то другое решение предложит...
давно
Мастер-Эксперт
680
2811
17.03.2010, 14:00
общий
Судейкин Андрей Владимирович:
Понимаете, можно повысить рейтинг и выплатить денежный эквивалент ответа, что и делалось иногда, но от этого в базе данных ответ не появится все равно. Тогда как работа действительно проведена огромная и обидно было бы терять такой ответ. Ведь ответы эксперта рассматриваются на экзамене.
Поэтому я тоже советую: задайте этот вопрос повторно, Евгений/Genia007/ разместит ответ, и сделаем все культурно. Мини-форум я туда весь перенесу.
А Вы, Евгений/Genia007/, в следующий раз при возникновении такой ситуации просто предупреждайте модераторов о том, что надо продлить срок действия вопроса.
Неизвестный
20.03.2010, 13:04
общий
Сучкова Татьяна Михайловна:
Здравствуйте! Перенесите Мини-форум на этот вопрос
давно
Мастер-Эксперт
680
2811
20.03.2010, 21:28
общий
Судейкин Андрей Владимирович:
Все, сделано.
Форма ответа