Консультация № 177364
20.03.2010, 13:01
0.00 руб.
0 6 1
Здравствуйте уважаемые эксперты!
Имеется программа: «Ввод остатков по складу готовой продукции» ССЫЛКА

Записи в полях «Черт 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
20.03.2010, 13:24
общий
это ответ
Здравствуйте, Судейкин Андрей Владимирович.
Вот изменённый проект по согласованию с автором вопроса.
5
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Мастер-Эксперт
680
2811
20.03.2010, 21:04
общий
Перенос мини-форума вопроса 177189, который не был продлен вовремя для окончания работы над ответом.
• 13.03.2010, 21:05 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
© Цитата:
В экранной форме «Приход»: 1) при входе в форму, сделать поиск записей по всей таблице ARA.dbf сразу, а не после выбора кладовщика.
Искать по каким критериям?
• 13.03.2010, 21:29 :: Судейкин Андрей Владимирович, Посетитель

просто все записи отобразить...
• 13.03.2010, 21:47 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
Все 13 полей таблицы?
• 13.03.2010, 21:48 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
нет, только которые в форме
• 13.03.2010, 22:41 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
© Цитата:
убрать поле «Цех-изготовитель т.к. выбор его будет осуществляться в шапке формы
какие значения ставить в комбобокс?
• 13.03.2010, 22:42 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
© Цитата:
3) убрать поле «Цех-изготовитель т.к. выбор его будет осуществляться в шапке формы и при выборе в шапке «Цеха» и соответствующей этому цеху накладным (поле NAKL таблицы ARA.dbf) (в комбобоксе шапки выбор накладной «от» значения – 1, 1000, 2000, 3000, 4000, а в комбобоксе «до» значения – 1000, 2000, 3000, 4000, 5000), осуществить поиск записей из таблицы ARA.dbf по выбранному цеху и соответствующим накладным.
• 13.03.2010, 22:46 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
если вы про комомбобокс где будет выбираться цех, то такие которые есть в ARA.dbf, а именно: 01, 03, 10, 11, 16
• 13.03.2010, 22:48 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
© Цитата:
если вы про комомбобокс Цех-изготовитель, то какие которые есть в ARA.dbf, а именно: 01, 03, 10, 11, 16
Именно про него. Хуже нет переделывать код столько раз, да в таких масштабных изменениях.
• 13.03.2010, 22:53 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
© Цитата:
Именно про него. Хуже нет переделывать код столько раз, да в таких масштабных изменениях.

помогите пожалуйста, больше не кто за это не хочет браться, последняя надежда на вас
• 13.03.2010, 23:00 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
Кстати таблица ARA.dbf у Вас битая (вместо букв #). Может есть рабочий вариант с полем NAKL.
• 13.03.2010, 23:09 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
© Цитата:
сохранение введенных данных из формы «Приход» делать и в таблицу Prin.dbf (не забыв добавить поле NAKL)
Откуда берём это поле, ранее оно ни где не выводилось?
давно
Мастер-Эксперт
680
2811
20.03.2010, 21:09
общий
• 13.03.2010, 23:45 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
URL >>Вот на сегодня пока без 4 пункта, посмотрите где возможно что то пропустил.
С 4 пунктом сильно мудрёно, не обещаю что сделаю, не хватает времени.
• 14.03.2010, 14:05 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
почему то в таблице ARA.dbf все записи поля NAKL поменялись, а некоторые и вообще пустыми стали... В прошлый раз тоже забыл кое-что написать: почему то когда в главной форме с клавиатуры вводишь данные и в одно поле не вводишь никакого значения, пишется что "Вы не выбрали допустим кладовщика" нажимаешь "ОК" и вылазиет "Данные сохранены на диск"... и ещё если только одно поле какое нибудь заполнишь а остальные нет, тоже вылазиет сразу же "Данные сохранены на диск"
• 14.03.2010, 14:16 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
© Цитата:
почему то в таблице ARA.dbf все записи поля NAKL поменялись, а некоторые и вообще пустыми стали...
А я Вам писал
© Цитата:
Кстати таблица ARA.dbf у Вас битая (вместо букв #). Может есть рабочий вариант с полем NAKL.
Мне пришлось переделывать таблицу из старой.
• 14.03.2010, 14:23 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
© Цитата:
Кстати таблица ARA.dbf у Вас битая (вместо букв #). Может есть рабочий вариант с полем NAKL.

Не знаю у меня нормально всё отображается попробуйте URL >>остюда скачать
• 14.03.2010, 14:34 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
или вот этот вариант попробуйте URL >>скачать
• 14.03.2010, 14:40 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
Я просто обычно программой "DBF-редактор" пользуюсь для редактирования dbf-таблиц, через неё добавил поле NAKL, видно она как то сохраняется после изменений не так в этой программе, т.к. попробовал щас через Database Desktop открыть и вправду там # вместо букв. Если вы знаете как подругому добавить поле в таблицу dbf и записи в поле, скажите я переделаю
• 14.03.2010, 15:17 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
Database Desktop в нём и добавляйте через меню table - restructure.
давно
Мастер-Эксперт
680
2811
20.03.2010, 21:13
общий
• 14.03.2010, 15:35 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
© Цитата:
Database Desktop в нём и добавляйте через меню table - restructure.

спасибо не знал даже, думал только просматривать таблицы чере неё можно, вообщем URL >>вот нормальная таблица
• 14.03.2010, 15:48 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
Может попробуете все таки сделать вторую часть из задания 4:
© Цитата:
сохранение введенных данных из формы «Приход» делать и в таблицу Prin.dbf (не забыв добавить поле NAKL), т.к. нужно сделать следующее: при открытии формы «Приход» в поле «Наиманование ЧТО» будет проверяться – есть ли соответствующие данные в таблице Prin.dbf (то есть не принималось ли ранее соответствующее «Наименование ЧТО»). Если в таблице Prin.dbf уже было принято соответствующее «Наименование ЧТО», то отображаем в поле «Сдаваемое кол-во» только значение разности поля KOL таблицы ARA.dbf – (минус) NKOL таблицы Prin.dbf


• 14.03.2010, 15:52 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
© Цитата: Евгений/Genia007/
© Цитата:
сохранение введенных данных из формы «Приход» делать и в таблицу Prin.dbf (не забыв добавить поле NAKL)
Откуда берём это поле, ранее оно ни где не выводилось?
Ответе на это.
• 14.03.2010, 15:55 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
Это новое поле из ARA.dbf
• 14.03.2010, 15:57 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
Правильней вот так сформулировать:
Сохранение введенных данных из формы «Приход» делать и в таблицу Prin.dbf (не забыв добавить поле NAKL), т.к. нужно сделать следующее: при открытии формы «Приход» будет проверяться – есть ли соответствующие "Наименование ЧТО" в таблице Prin.dbf (то есть не принималось ли ранее соответствующее «Наименование ЧТО»). Если в таблице Prin.dbf уже было принято соответствующее «Наименование ЧТО», то отображаем в поле «Сдаваемое кол-во» только значение разности поля KOL таблицы ARA.dbf – (минус) NKOL таблицы Prin.dbf
• 15.03.2010, 18:10 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
А поле CI в таблице Prin.dbf ещё нужно или его можно удалить? Заменить на поле NAKL.
• 15.03.2010, 18:57 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
URL >>Вот посмотрите.
• 15.03.2010, 19:24 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
Как то странно работает поиск записей после выбора накладных, делаешь допустим от 1 до 1000, после нажатия на "Поиск по накладным" выводятся значения накладных и 2000 и 3000...
давно
Мастер-Эксперт
680
2811
20.03.2010, 21:15
общий
• 15.03.2010, 19:40 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
"Поиск по накладным" работает правильно, просто сегодня добавил поле 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;

• 15.03.2010, 20:11 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
Поиск заработал. Сейчас другая проблема: как только заходишь в форму "Приход" значения в поле "Сдаваемое кол-во" сначала одни, а после выбора другого кладовшика уже другие. Да и при поиске по накладным уже перестаёт действовать формула: KOL таблицы ARA.dbf – (минус) NKOL таблицы Prin.dbf
• 15.03.2010, 20:17 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
А сразу можно сделать так, что как только нажимаем на кнопку "Сохранить" значение в поле "Сдаваемое кол-во меняется, вот допустим если сдаваемое кол-во было 4, мы принимаем 2, нажимаем "сохранить" и в поле сдаваемое кол-во следовательно сразу появляется значение вместо четырех 2 (4-2=2). Опять не выходя из программы вводим сюда же ещё 2, нажимаем "Сохранить", в поле сдаваемое кол-во уже сразу появляется значение 0 ???
• 15.03.2010, 20:52 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
© Цитата: Судейкин Андрей Владимирович
А сразу можно сделать так, что как только нажимаем на кнопку "Сохранить" значение в поле "Сдаваемое кол-во меняется, вот допустим если сдаваемое кол-во было 4, мы принимаем 2, нажимаем "сохранить" и в поле сдаваемое кол-во следовательно сразу появляется значение вместо четырех 2 (4-2=2). Опять не выходя из программы вводим сюда же ещё 2, нажимаем "Сохранить", в поле сдаваемое кол-во уже сразу появляется значение 0
А вот тут и приплыли, посмотрите предыдущие вопросы, при перезаписи по одному и тому же наименованию ЧТО - принятое количество просто переписывается без учёта содержания поля NKOL, тогда нужно переделывать весь код заново по нажатию кнопки "Сохранить". И чем дальше переделывать тем больше будет таких моментов.
• 15.03.2010, 21:00 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
это да . А у вас на это времени нет? Мне уже стыдно у вас просить, но может сделаете до воскресенья?
• 15.03.2010, 21:19 :: Евгений/Genia007/, Бакалавр

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

Судейкин Андрей Владимирович:
Посмотрите ссылку в посте • сегодня, 19:57, поправил проект.
• 15.03.2010, 21:48 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
Ну с одной стороны хорошо, а с другой нажимаешь опять "поиск по накладным" и все значения поля "Сдаваемое кол-во" опять меняются...
• 15.03.2010, 21:52 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
Ну дак смотрите пост выше • сегодня, 21:52
• 15.03.2010, 21:55 :: Судейкин Андрей Владимирович, Посетитель

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

Поидее мы сохраняем как: если в Prin.dbf уже есть соответствующая запись, то не перезапимываем её, а то что ввели в поле "Принято" в форме "Приход" плюсуем к NKOL prin.dbf. Поле CI оставьте
• 15.03.2010, 22:03 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
© Цитата:
Поидее мы сохраняем как: если в Prin.dbf уже есть соответствующая запись, то не перезапимываем её, а то что ввели в поле "Принято" в форме "Приход" плюсуем к NKOL prin.dbf.
А если запись есть, но кладовщик другой или номер карты?
© Цитата:
Поле CI оставьте
© Цитата:
убрать поле «Цех-изготовитель т.к. выбор его будет осуществляться в шапке формы
Придётся это поле всё-таки оставить в сетке.
• 15.03.2010, 22:05 :: Судейкин Андрей Владимирович, Посетитель

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

все равно складываем
давно
Мастер-Эксперт
680
2811
20.03.2010, 21:19
общий
• 15.03.2010, 22:42 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
Вижу поправили недочёт в главной форме ("Ввод остатков по складу ГП") при сохранении. Спасибо!
• 16.03.2010, 00:39 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
URL >>Вот как Вы хотите, только один вопрос что записывать в поле KOL таблицы prin.dbf, из таблицы ARA или из сетки, сейчас это разные цифры.
• 16.03.2010, 00:48 :: Судейкин Андрей Владимирович, Посетитель

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

из таблицы ARA.dbf
• 16.03.2010, 01:09 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
В каталоге с программой находится файл TForm5.BitBtn4Click.txt, он как то связас с проектом или его можно удалить?
• 16.03.2010, 10:32 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
© Цитата:
В каталоге с программой находится файл TForm5.BitBtn4Click.txt, он как то связан с проектом или его можно удалить?
Это был код для кнопки «Сумма прихода», я его оставил просто так на всякий случай, сейчас он к проекту не имеет ни какого отношения.
• 16.03.2010, 18:06 :: Судейкин Андрей Владимирович, Посетитель

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

Ясно.
Ну теперь все работает так как я и хотел, огромное вам спасибо!
• 16.03.2010, 19:35 :: Судейкин Андрей Владимирович, Посетитель

Евгений/Genia007/:
Хотя вот по нажатию на кнопку "Принято" формы "Приход" неправильно выводятся данные в полях "Сдаваемое кол-во" и "Принято", можно ли так сделать чтобы по нажатию на кнопку "Принято" в поле "Сдаваемое кол-во" было значение из ARA.dbf, а в поле "Принято" сколько всего принимали соотсветствующего товара, то есть значение поля NKOL из Prin.dbf. А также неправильно считается сумма прихода: вот я принял 5 штук "Шестярня" которая в ARA.dbf в поле STOIM=16320 (получается 16320*5=81600), а программа выводит 13600....
• 16.03.2010, 23:52 :: Евгений/Genia007/, Бакалавр

Судейкин Андрей Владимирович:
URL >>Вот и это исправил.
Форма ответа