|
|
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
Дамы и Господа ! Я тут новенький и в деле программирования откровенно ещё глупый ! Нуб, короче говоря =) У меня возникла следующая проблема: есть таблица, поля: год, месяц, день1,..,день31 день1...день31 являются логическими переменными. Нужно, чтобы в новое, пустое поле в этой же таблице, записывалась сумма лишь положительных (True) элементов ячеек строк. Итак, вопрос: каким циклом это можно реализовать, и осуществимо ли это в принципе или нет, если да, то как ?? Заранее спасибо. С уважением, Михаил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2007, 15:48 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
Не очень понятно чего Вы хотите добиться. Если изложите немного подробнее (кто куда зачем почему) свою задачу - возможно Вам здесь помогут. Например, какие значения содержаться в указанных ячейках (полях ?) - логические, числовые, даты ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2007, 18:48 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
DagНе очень понятно чего Вы хотите добиться. Если изложите немного подробнее (кто куда зачем почему) свою задачу - возможно Вам здесь помогут. Например, какие значения содержаться в указанных ячейках (полях ?) - логические, числовые, даты ? в указанных полях (day1,..., day31) содержаться логические переменные. Причём заминка в том, что значение F (false) нас не интересует, нам нужно лишь количество T (True) положительных значений. Каким макаром можно пройти по строке, сосчитав лишь эти T-значения лог. переменной. Если ещё полнее, то у меня курсовая работа, контрольный пример, табельный учёт ! Существует три таблицы Работники (поля: Second name, Name, Otchestvo, Sex, Status, Tabel #, oklad za smenu, id_rab[Integer AutoInc]), График смен (поля: Year, Month, day1, Day2,..., Day31, id_graph[Int AutoInc], Days per month)[для контрольного примера взят месяц Январь текущего года], Табель (id_rab, id_tab, id_graph, Monthly payment) Таблицы я заполнил, связал, ограничения пока ещё на связи не наложил, формы тож создал, меню щас делать хочу, но пока с этой фигнёй не разберусь не буду. Так вот ещё раз =) В таблице График смен: если человек работал в этот день, то в Day# будет стоять T, если же не работал F. Всего 5 типов графиков смен, т.е. 5 строк. Работников 26, но это уже лишняя информация. ПС кстати пока не забыл, как можно перемножить две колонки (именно колонки, причём хотелось бы сразу, а не построчно) двух разных таблиц, а результат записать в поле третьей таблицы ?? построчно мне уже помогли: use myTable1 in 0 alias t1 use myTable2 in 0 alias t2 use myTable3 in 0 alias t3 local lnResult lnResult = T1.NumField * T2.NumField && перемножили 2 поля из первой строки в кажой таблице replace NumField with m.lnResult in T3 && записали результат в первую строку таблицы 3 (но тогда получится 26, так сказать, итераций) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2007, 19:36 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
Попробуй SELECT myTable SCAN lnSum=0 FOR lnI=1 TO 31 lcColumn='myTable.Day'+TRANSFORM(lnI) lnSum=lnSum+IIF(&lcColumn,1,0) ENDFOR replace Kolvo WITH lnSum IN myTable ENDSCAN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2007, 19:54 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
А для умножения колонок используйте цикл sele T3 go top sele T1 go top SCAN lnResult = T1.NumField * T2.NumField && перемножили 2 поля из первой строки в кажой таблице replace NumField with m.lnResult in T3 skip in T3 ENDSCAN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2007, 20:10 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
DagПопробуй SELECT myTable SCAN lnSum=0 FOR lnI=1 TO 31 lcColumn='myTable.Day'+TRANSFORM(lnI) lnSum=lnSum+IIF(&lcColumn,1,0) ENDFOR replace Kolvo WITH lnSum IN myTable ENDSCAN Спасибо огромное-преогромное тебе, брат Dag !! =) Ураа !!!! рабоаит !!! =) гЫ !! =) Рад до невозможности !!!!! Сейчас вторую прогу осваивать бум !! =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 12:49 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
новая проблема !! :( Всё с перемножением хорошо, но ТОЛЬКО если значение в первой строке колонки первой табл соответствует значению в первой строке колонки второй таблицы !! а у нас такого нет !! у меня пять типов графиков [id_graph 1, 4, 7, 10, 13] (таблица График смен), которые некоторым образом связаны с 26 записями первой таблицы (Работники). Т.е. получается, что связь идёт один-ко-многим. 1-ому типу графика соответствует 3-ья запись в таблю Работник 2-ому (id_graph4) - 5-ая 3-ему (id_graph7) - 17-ая 4-ому (id_graph10) - 1,4,6,7,11,13,14,21 и 25-ая записи 5-ому (id_graph13) - 2,8,9,10,12,15,16,18,19,20,22,23,24 и 26-ая записи. Что Вы можете мне посоветовать по этому поводу ?? как можно реализовать данное умножение ?? Заранее спасибо. PS 2 Dag: извините, что я обратился к Вам на ты, просто,если можно так сказать, башню от счастья снесло :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 14:23 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
А какой результат нужно получить (в какой таблице, колонке)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 16:23 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
DagА какой результат нужно получить (в какой таблице, колонке)? результат должен быть выведен в третью таблицу Tabel (поля:id_rab, id_tab, id_graph, monthly_payment). Вот в последнюю колонку - Monthly_payment - и хотелось, чтобы выводился результат. Этого ужасного произведения !! :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 16:34 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
Уже лучше. Какие колонки какой таблицы перемножаем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 16:43 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
DagУже лучше. Какие колонки какой таблицы перемножаем? перемножаются колонки 2-х оставшихся таблиц =) табл. Rabotnik.Oklad_za_rab_den табл. Graphic_smen.Day_per_month т.е., что бы получить зарплату итоговую за месяц, нам нужно перемножить количество отработанных дней/смен с той суммой, которую человек получает за отработанный день/смену. Но, как я уже сказал, сделать это вообще оказалось непросто, ведь у нас одна запись в табл График смен соответствует нескольким конкретным записям в табл. Работники (об этом я писал ранее) Програмирование, блин, вещь очень, надо сказать, непростая :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 17:06 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
SELECT Tabel GO top SCAN *---Сначала попробуй выполнить операцию для одной строки таблицы Tabel, начиная отсюда SELECT a.Oklad_za_rab_den*b.Day_per_month as Nechto FROM Rabotnik a, Graphic_smen b ; INTO CURSOR tmp WHERE a.id_rab==Tabel.id_rab AND b.id_graph==Tabel.id_graph SELECT Tabel replace Monthly_payment WITH tmp.Nechto *---Если все сработает для одной строки пробуй запустить весь код со сканированием всей таблицы. ENDSCAN USE IN tmp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 17:27 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
DagSELECT Tabel GO top SCAN *---Сначала попробуй выполнить операцию для одной строки таблицы Tabel, начиная отсюда SELECT a.Oklad_za_rab_den*b.Day_per_month as Nechto FROM Rabotnik a, Graphic_smen b ; INTO CURSOR tmp WHERE a.id_rab==Tabel.id_rab AND b.id_graph==Tabel.id_graph SELECT Tabel replace Monthly_payment WITH tmp.Nechto *---Если все сработает для одной строки пробуй запустить весь код со сканированием всей таблицы. ENDSCAN USE IN tmp VFP пожаловался на строчку: replace Monthly_payment WITH tmp.Nechto и выдал сообщение, следующего содержания: Numeric overflow. Data was lost я правда весь код ваш сразу прописал - может в этом ошибка ? (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 17:43 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
я кажется нашёл ошибку, я сделал поле Monthly_payment Numeric, но ограничил его всего пятью знаками >< идиот !! я !! =) сейчас ещё раз пропробую, извините ! =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 17:52 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
Не спеши, отладь код для одной строки Загляни в курсор tmp - что там за цифирки образовались , равны ли они искомому произведению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 17:52 |
|
||
|
Вопрос по подсчёту количества переменных в строке
|
|||
|---|---|---|---|
|
#18+
DagSELECT Tabel GO top SCAN *---Сначала попробуй выполнить операцию для одной строки таблицы Tabel, начиная отсюда SELECT a.Oklad_za_rab_den*b.Day_per_month as Nechto FROM Rabotnik a, Graphic_smen b ; INTO CURSOR tmp WHERE a.id_rab==Tabel.id_rab AND b.id_graph==Tabel.id_graph SELECT Tabel replace Monthly_payment WITH tmp.Nechto *---Если все сработает для одной строки пробуй запустить весь код со сканированием всей таблицы. ENDSCAN USE IN tmp Dag, огромное Вам спасибо, всё работает, причём корректно !!! Если хотите знать, я не встречал ещё людей, подобных Вам, которые так стремились, да просто помогали совершенно незнакомому им человеку, да ещё и "безваздмездна", как говаривала Сова в небезысвестном мультфильме !! Спасибо Вам !! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 17:56 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=193&tid=1589099]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 289ms |

| 0 / 0 |
