powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Распечатка накладных
20 сообщений из 20, страница 1 из 1
Распечатка накладных
    #39109892
astad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Надо распечатать накладных. В этом проблема нет. Проблема в том что, надо сделать так что пустые накладные не печаталось. Например, 4-й, 5-й, 9-й, 11-й, 12-й и т.д. пустые накладные не должно печататься. Как можно делать такое? Помогите пожалуйста.
...
Рейтинг: 0 / 0
Распечатка накладных
    #39109896
astad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Распечатка накладных
    #39110553
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А конкретнее? Как-то лениво разбираться в корябушках, написанных в абсолютно неинформативном стиле. Единственное, за что зацепился глаз - replace all внутри цикла, оно там точно необходимо?
...
Рейтинг: 0 / 0
Распечатка накладных
    #39111269
astad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,
Постараюсь объяснить.
Есть 2 таблица: 1) QZT_İNF.DBF - здесь находится полученные товары за каждый день для каждого клиента (Klient1, Klient2,...)
2) ABN_INF.DBF - информация о клиента (цена для конкретного клиента (A_QIY и т. д.))

В распечатках накладных проблема нет, проблема в том что, если клиент за сегодня товары не получил (например клиент4, клиент5, клиент9,,,,,) надо чтобы эти накладные не печатался
...
Рейтинг: 0 / 0
Распечатка накладных
    #39111589
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astadпроблема в том что, если клиент за сегодня товары не получилПроблема в том, что никто не собирается догадываться, как у вас организовано хранение информации о движении товаров, если вы сами об этом внятно не расскажете. Названия полей мало что говорят русскоязычному человеку, да и англоязычному тоже.
...
Рейтинг: 0 / 0
Распечатка накладных
    #39111609
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы должны дать определение "пустые накладные", и это условие поставить в программу...
т.е. "Накладная является пустой, если...и т.д."
...
Рейтинг: 0 / 0
Распечатка накладных
    #39112403
astad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
q1w1e1,
Накладная является пустой, если это поле вообще пуста. Если поле пуста, программа должна проверить следующие поле.
Я хотел что-то делать, но пока не получается у меня

т,е,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
&& В одном листе должен 2 накладной печататся
SUM &P1 TO S10 && 1-я накладная
SUM &P2 TO S20 && 2-я накладная  
IF S10<=0  && Если поле пуста
   MC=MC+1  && программа должна проверить следующие поле
   P1=FIELD(MC)
   MCOUNT=MC2
ENDIF

IF S20<=0  && Если поле пуста
     MC2=MC2+1   && программа должна проверить следующие поле
      P2=FIELD(MC2)
ENDIF   
...
Рейтинг: 0 / 0
Распечатка накладных
    #39112795
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пустое поле это не заполненное поле(туда не вводились данные), тогда empty(), т.к. суммирование может дать и 0 и меньше 0, то я бы сделал locate for not ermty(P1), т.е. если есть хотя бы одна запись с непустым значением данного поля, то проверяем следующее (можно и count вместо locate, но будет дольше не микросекунды..:-))
В Вашем случае
IF S10<=0 && Если поле пуста
MC=MC+1 && программа должна проверить следующие поле
ENDIF
IF S20<=0 && Если поле пуста
MC2=MC2+1 && программа должна проверить следующие поле
P2=FIELD(MC2)
ENDIF
то просто исправьте заоментированное условие в Вашей программе
* IF s_fl1 <> 0 .OR.s_fl2 <> 0
REPORT FORM raza prev
* ENDIF
на
IF S10<=0 .and. S20<=0 && если два поля пустых, то
не печатаем
else
REPORT FORM raza prev
ENDIF
...
Рейтинг: 0 / 0
Распечатка накладных
    #39113508
astad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
q1w1e1,

не, не помогает. Я еще что-то делал, но, ничего не получается
...
Рейтинг: 0 / 0
Распечатка накладных
    #39113521
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astad, если не можешь не то что сделать, а даже объяснить что хочешь сделать - найми того кто сделает. В итоге это будет дешевле.
...
Рейтинг: 0 / 0
Распечатка накладных
    #39113532
astad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

почему не могу объяснить? Просто, мне трудно на русском объяснить.

Есть 2 таблица: 1) QZT_İNF.DBF - здесь находится полученные товары за каждый день для каждого клиента (Klient1, Klient2,...)
2) ABN_INF.DBF - информация о клиента (цена для конкретного клиента (A_QIY и т. д.))

Надо распечатать в одном листе 2 накладных. Если клиент за сегодня товары не получил (например клиент4, клиент5, клиент9,,,,,эти поле пуста) надо чтобы эти накладные не печатался.
...
Рейтинг: 0 / 0
Распечатка накладных
    #39113691
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в таком случае, надо к программе приложить эти файлы DBF в двух вариантах, когда надо печатать накладные, и когда накладные не должны печататься, сам report не нужен, в условии достаточно заменить на wait window, предварительно удалив из таблиц секретную инфу(персон. данные и т.д.)... и надо удалить все лишние записи, чтоб уменьшить объём таблиц...
...
Рейтинг: 0 / 0
Распечатка накладных
    #39113699
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astadЕсли клиент за сегодня товары не получилОт вас пытаются добиться объяснения, как процитированное выглядит в терминах таблиц и полей.
Типа "клиент за сегодня товары не получил" = "сумма полей А,Б,В из записей таблицы Г, подходящих под условие Д=Е, равна нулю".
...
Рейтинг: 0 / 0
Распечатка накладных
    #39114437
astad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас, по другому буду задавать свой вопрос.
Ест одна таблица. Надо по 2 группировать (распечатать) все не пустые поле.
Например, в моем примере :
1-я группа будет Klient1 и klient2, потому что обе поле не пуста.
2-я группа Klient3 и klient5, потому что в klient4 все записи пустые.
3-я группа Klient6 и klient10, потому что в klient7, klient8, klient9 все записи пустые.
4-я группа Klient13 и klient17, потому что в klient11, klient12, klient14 , klient15, klient16 все записи пустые.
5-я группа Klient18 и klient20, потому что в klient19 все записи пустые.

Я понимаю что моя ошибка где-то в проверка условие (IF...ENDIF), а конкретнее если поле пуста в перейти на следующие поле.
Помогите пожалуйста.
...
Рейтинг: 0 / 0
Распечатка накладных
    #39114439
astad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Распечатка накладных
    #39114557
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во, этот код уже можно читать. Вместо for-цикла делаете while типа такого
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
mcount = 3
Do While mcount <= Fcount()-2
*ищем первое поле с ненулевой суммой
  s10 = 0
  Do While s10=0
    p1=Field(mcount)
    Sum &p1 To s10
    mcount = mcount + 1
  Enddo
*ищем второе поле с ненулевой суммой
  s20 = 0
  Do While s20=0
    p2=Field(mcount)
    Sum &p2 To s20
    mcount = mcount + 1
  Enddo

*ну а дальше все эти реплейсы и сам отчёт

Enddo

Но я не разбирался, почему у вас условие на fcount-2 - может, надо на просто fcount поменять. И скорее всего в каждом подцикле придётся добавить проверку на превышение mcount над fcount.
...
Рейтинг: 0 / 0
Распечатка накладных
    #39114558
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще если система ваша, то почитайте про нормализацию.
...
Рейтинг: 0 / 0
Распечатка накладных
    #39114561
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем таблица ненормализована, но критикой заниматься не буду делают так или не не делают, если извращаться, то по полной программе..:-)
Делаем afilds(xxx) для вашей таблицы
далее идём по этому массиву, и проверяем сумму клиента, если 0, то удаляем эту строчку...
после того, как массив готов с клиентами, где сумма >0, создаём временную таблицу
create table from xxx
и добавляем туда записи из первой таблицы
append from газетная инфа
и после печатаем накладные....по созданной таблице...

Второй вариант, создаём строку SQL
str_sql="select "
Цикл по вашей таблице
if sum>0
то str_sql=str_sql+" SUM(Qzt_inf.klient"+alltrim(str(номер клиента))+") as klient"+alltrim(str(номер клиента))+", "
endfor
str_sql=substr(str_sql,1,len(str_sql)-2)
Всё, команда SQL готова запускаем на выполнение, опять же получаем таблицу с необходимыми клиентами и печатаем...

Вариант 3
Ладно удачи... всё примерно, главное идея, типа формируем нужную таблицу с нужными полями, т.к. таблица ненормализована и запускаем уже вашу программу ...:-)
...
Рейтинг: 0 / 0
Распечатка накладных
    #39114562
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, не видел, что ответ уже написан, моё сообщение можно не читать...
...
Рейтинг: 0 / 0
Распечатка накладных
    #39114689
astad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, tangir, по моему этот код - то что мне надо, но пока точно не проверил.
tanglir Но я не разбирался, почему у вас условие на fcount-2 - может, надо на просто fcount поменять. И скорее всего в каждом подцикле придётся добавить проверку на превышение mcount над fcount.
А последные 2 поле -не "клиенты". Эти поле я использую для отчета.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Распечатка накладных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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