Вверх ↑
Этот топик читают: Гость
Ответов: 254
Рейтинг: 6
#1: 2018-09-30 17:30:55 ЛС | профиль | цитата
Добрый вечер, уважаемые форумчане!!!

Как можно исправить ошибку в суммировании значений ячеек таблицы?

Add(MainForm,3063237,623,196)
{
Width=493
Height=296
link(onActivate,2020891:doClear,[(668,202)(668,268)(566,268)(566,209)])
}
Add(MTStrTbl,15043066,623,154)
{
Width=390
Height=170
Name="MTStrTbl"
Columns=#3:Имя|7:Фамилия|8:Отчество|
ColorItems=0
CheckBoxes=0
MultiSelect=0
}
Add(MST_RowAction,15395190,623,105)
{
MSTControl="MTStrTbl"
}
Add(Edit,7221313,196,147)
{
Left=325
Top=175
Width=20
Text="0"
}
Add(Edit,5886234,287,147)
{
Left=190
Top=190
Text="5"
DataType=2
link(onChange,12306967:doOperation,[])
}
Add(Memory,2020891,574,196)
{
Default=Integer(0)
Point(Data)
}
Add(Button,13792847,112,441)
{
Left=35
Top=185
link(onClick,2234844:doEvent1,[])
}
Add(MT_AddData,659335,280,441)
{
Count=6
link(onAdd,3364928:doEvent1,[])
link(Data1,7221313:Text,[(286,415)(202,415)])
link(Data2,1193331:Var2,[])
link(Data3,13833424:Var2,[(300,310)(559,310)])
}
Add(MST_RowAction,16331042,420,441)
{
Action=1
MSTControl="MTStrTbl"
}
Add(MT_Memory,14286792,469,497)
{
link(onData,15585677:doEvent2,[(513,503)(513,209)])
}
Add(Hub,3364928,350,441)
{
OutCount=3
link(onEvent1,16331042:doRowAction,[])
link(onEvent2,2234706:doSeparateMT,[(392,454)(392,489)])
}
Add(MT_MultiData,2234706,420,483)
{
Count=3
link(onData1,14096847:doValue,[])
link(onData3,14286792:doValue,[])
}
Add(Hub,2234844,168,441)
{
link(onEvent1,659335:doAdd,[])
link(onEvent2,10811073:doOperation,[(219,454)(219,538)])
}
Add(Math,12306967,378,147)
{
ResultType=0
link(onResult,15585677:doEvent1,[(468,153)(468,202)])
link(Op1,1193331:Var3,[(384,135)(340,135)(340,208)])
link(Op2,13833424:Var1,[(391,135)(473,135)(473,187)])
}
Add(GetDataEx,1193331,287,203)
{
link(Data,5886234:Text,[])
}
Add(GetDataEx,13833424,553,182)
{
link(Data,2020891:Value,[(559,180)(580,180)])
}
Add(Hub,15585677,525,196)
{
InCount=2
link(onEvent1,2020891:doValue,[])
}
Add(MT_Memory,14096847,588,483)
{
}
Add(Math,10811073,588,532)
{
Op2=1
ResultType=0
link(onResult,7221313:doText,[(632,538)(632,346)(184,346)(184,153)])
link(Op1,14096847:Value,[])
}

В идеале должно быть как во вложенном файле excel http://forum.hiasm.com/getfile/38484

Суть в следующем: есть два столбца. В первый просто вводятся значения, а во втором происходит суммирование предыдущей ячейки данного столбца и соседней ячейки соседнего столбца.

столбец 1  столбец 2

3 | 3 (во второй столбец копируется значение из соседней ячейки первого столбца)

4 | 7 (в ячейке второго столбца значение рассчитывается по формуле: ячейка выше данного столбца + ячейка слева первого столбца: 3+4=7)

9 | 16 (в ячейке второго столбца значение рассчитывается по формуле: ячейка выше данного столбца + ячейка слева первого столбца: 7+9=16)

3 | 19 (в ячейке второго столбца значение рассчитывается по формуле: ячейка выше данного столбца + ячейка слева первого столбца: 16+3=19)
|
Редактировалось 5 раз(а), последний 2018-09-30 18:10:42
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 2200
Рейтинг: 673
#2: 2018-09-30 18:10:34 ЛС | профиль | цитата
Как вариант:

Add(MainForm,3063237,427,140)
{
Width=493
Height=296
}
Add(MTStrTbl,15043066,448,252)
{
Width=390
Height=170
Name="MTStrTbl"
Columns=#3:Имя|7:Фамилия|8:Отчество|
ColorItems=0
CheckBoxes=0
MultiSelect=0
}
Add(MST_RowAction,15395190,658,322)
{
MSTControl="MTStrTbl"
}
Add(Edit,5886234,602,252)
{
Left=190
Top=190
Text="5"
DataType=2
}
Add(Button,13792847,413,322)
{
Left=35
Top=185
link(onClick,5433850:doOperation,[])
}
Add(MT_AddData,659335,602,322)
{
Count=6
InputMT=3
link(onAdd,15395190:doRowAction,[])
link(Data1,10276387:Var2,[])
}
Add(MST_Matrix,12085299,518,322)
{
X=1
MSTControl="MTStrTbl"
link(onEMatrix,1532094:doOperation,[])
link(Y,5433850:Result,[(531,310)(511,310)(511,370)(468,370)])
}
Add(Math,5433850,462,322)
{
OpType=1
Op2=1
link(onResult,12085299:doEMatrix,[])
link(Op1,15043066:Count,[])
AddHint(3,-23,30,13,Op2)
}
Add(Math,1532094,560,322)
{
link(onResult,659335:doAdd,[])
link(Op1,10276387:Var1,[(566,299)])
}
Add(GetDataEx,10276387,602,294)
{
link(Data,5886234:Text,[])
}

карма: 11

0
Ответов: 254
Рейтинг: 6
#3: 2018-09-30 18:13:23 ЛС | профиль | цитата
sla8a, то что надо ))) спасибо огромное

--- Добавлено в 2018-09-30 18:48:16

А что если мне понадобится сделать в одной таблице еще одно такое суммирование ячеек? Как это можно реализовать?

Редактировалось 1 раз(а), последний 2018-09-30 18:48:16
карма: 0

0
Ответов: 2200
Рейтинг: 673
#4: 2018-09-30 20:55:06 ЛС | профиль | цитата
Medvedoc, не понятен мне ваш вопрос. Если вам не понятно что и как работает в приведенной мной схеме, то спросите что именно. Если все понятно, то в чем проблема?
карма: 11

0
Ответов: 254
Рейтинг: 6
#5: 2018-09-30 21:43:14 ЛС | профиль | цитата
sla8a, ваш пример понятен ) просто если например не 2, а 4 столбца будет, в котором суммирование ячеек происходит во 2 и 4 столбцах.

То есть так:

столбец 1  столбец 2 | столбец 3 | столбец 4

3 | 3 | 5 | 5

4 | 7 | 9 | 14

9 | 16 | 1 | 15

3 | 19 | 7 | 22
|
Строка 1 - в столбец 2 копируется значение ячейки из столбца 1, а в столбец 4 - значение ячейки из столбца 3

Строка 2 - в ячейке столбца 2 значение рассчитывается по формуле: вышестоящая ячейка столбца 2 + ячейка столбца 1: 3+4=7, а в ячейке столбца 4 значение рассчитывается по формуле: вышестоящая ячейка столбца 4 + ячейка столбца 3: 5+9=14

Строка 3 - в ячейке столбца 2 значение рассчитывается по формуле: вышестоящая ячейка столбца 2 + ячейка столбца 1: 7+9=16, а в ячейке столбца 4 значение рассчитывается по формуле: вышестоящая ячейка столбца 4 + ячейка столбца 3: 14+1=15

Строка 4 - в ячейке столбца 2 значение рассчитывается по формуле: вышестоящая ячейка столбца 2 + ячейка столбца 1: 16+3=19, а в ячейке столбца 4 значение рассчитывается по формуле: вышестоящая ячейка столбца 4 + ячейка столбца 3: 15+7=22

Редактировалось 1 раз(а), последний 2018-09-30 21:43:40
карма: 0

0
Ответов: 2200
Рейтинг: 673
#6: 2018-09-30 23:10:56 ЛС | профиль | цитата
Medvedoc писал(а):
То есть так:
Проблемы не вижу.
Medvedoc писал(а):
Как это можно реализовать?
Того примера что выложен выше достаточно, чтоб реализовать задуманное вами.
карма: 11

0
Ответов: 254
Рейтинг: 6
#7: 2018-09-30 23:13:20 ЛС | профиль | цитата
если честно у меня не получилось, суммирование сбивается
карма: 0

0
Ответов: 254
Рейтинг: 6
#8: 2018-10-01 11:56:38 ЛС | профиль | цитата
sla8a, пробовал несколько вариантов, но как надо не получается. Что я не так делаю?

Вариант 1

Add(MainForm,3063237,322,140)
{
Width=736
Height=438
}
Add(MTStrTbl,15043066,322,252)
{
Width=390
Height=170
Name="MTStrTbl"
Columns=#3:Имя7:Фамилия|8:Отчество|
ColorItems=0
CheckBoxes=0
MultiSelect=0
}
Add(MST_RowAction,15395190,763,322)
{
MSTControl="MTStrTbl"
}
Add(Edit,5886234,707,210)
{
Left=190
Top=190
Text="5"
DataType=2
}
Add(Button,13792847,308,322)
{
Left=35
Top=185
link(onClick,5433850:doOperation,[])
}
Add(MT_AddData,659335,707,322)
{
Count=6
InputMT=3
link(onAdd,15395190:doRowAction,[])
link(Data1,10276387:Var2,[])
link(Data3,9339836:Var2,[(727,306)(783,306)])
}
Add(MST_Matrix,12085299,413,322)
{
X=1
MSTControl="MTStrTbl"
link(onEMatrix,1888465:doOperation,[])
link(Y,5433850:Result,[(426,310)(406,310)(406,370)(363,370)])
}
Add(Math,5433850,357,322)
{
OpType=1
Op2=1
link(onResult,12085299:doEMatrix,[])
link(Op1,15043066:Count,[(363,303)(342,303)])
AddHint(171,-145,30,13,Op2)
}
Add(Math,1532094,665,322)
{
link(onResult,659335:doAdd,[])
link(Op1,10276387:Var1,[(671,299)])
}
Add(GetDataEx,10276387,707,294)
{
link(Data,5886234:Text,[])
}
Add(Edit,5289044,777,210)
{
Left=260
Top=190
}
Add(Math,1888465,553,322)
{
link(onResult,1532094:doOperation,[])
link(Op1,9339836:Var1,[(559,299)])
}
Add(GetDataEx,9339836,777,294)
{
link(Data,5289044:Text,[])
}
Вариант 2

Add(MainForm,3063237,322,140)
{
Width=736
Height=438
}
Add(MTStrTbl,15043066,322,252)
{
Width=390
Height=170
Name="MTStrTbl"
Columns=#3:Имя|7:Фамилия|8:Отчество|
ColorItems=0
CheckBoxes=0
MultiSelect=0
}
Add(MST_RowAction,15395190,763,322)
{
MSTControl="MTStrTbl"
}
Add(Edit,5886234,707,210)
{
Left=190
Top=190
Text="5"
DataType=2
}
Add(Button,13792847,308,322)
{
Left=35
Top=185
link(onClick,5433850:doOperation,[])
}
Add(MT_AddData,659335,707,322)
{
Count=6
InputMT=3
link(onAdd,15395190:doRowAction,[])
link(Data1,10276387:Var2,[])
link(Data3,5863636:Var2,[(727,306)(783,306)])
}
Add(MST_Matrix,12085299,413,322)
{
X=1
MSTControl="MTStrTbl"
link(onEMatrix,9005416:doEvent1,[])
link(Y,5433850:Result,[(426,310)(406,310)(406,370)(363,370)])
}
Add(Math,5433850,357,322)
{
OpType=1
Op2=1
link(onResult,12085299:doEMatrix,[])
link(Op1,15043066:Count,[(363,303)(342,303)])
AddHint(171,-145,30,13,Op2)
}
Add(Math,1532094,560,322)
{
link(onResult,145703:doEvent1,[])
link(Op1,10276387:Var1,[(566,299)])
}
Add(GetDataEx,10276387,707,294)
{
link(Data,5886234:Text,[])
}
Add(Edit,5289044,777,210)
{
Left=260
Top=190
}
Add(Math,1888465,609,378)
{
link(onResult,145703:doEvent2,[(649,384)(649,335)])
link(Op1,5863636:Var1,[(615,271)])
}
Add(Hub,9005416,476,322)
{
link(onEvent1,1532094:doOperation,[])
link(onEvent2,1888465:doOperation,[(550,335)(550,384)])
}
Add(Hub,145703,658,322)
{
InCount=2
link(onEvent1,659335:doAdd,[])
}
Add(GetDataEx,5863636,777,266)
{
link(Data,5289044:Text,[])
}


Чтобы понятно было о работе формулы прикладываю excel файл http://forum.hiasm.com/getfile/38485

Редактировалось 6 раз(а), последний 2018-10-01 12:19:07
карма: 0

0
Ответов: 2200
Рейтинг: 673
#9: 2018-10-01 14:43:58 ЛС | профиль | цитата
Medvedoc, вы неправильно используете элемент MT_AddData, нажмите F1 прочтите и посмотрите примеры в: HiAsm\Оболочка\ТехнологияMultiThread.
И постарайтесь научится пользоваться элементом Debug, вам будет проще находить у себя ошибки.
Достаточно поставить Debug и сразу видно что не так:
Вариант1


Add(MainForm,3063237,392,77)
{
Width=736
Height=438
}
Add(MTStrTbl,15043066,392,189)
{
Width=390
Height=170
Name="MTStrTbl"
Columns=#3:Имя|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|
ColorItems=0
CheckBoxes=0
MultiSelect=0
}
Add(MST_RowAction,15395190,875,259)
{
MSTControl="MTStrTbl"
}
Add(Edit,5886234,777,147)
{
Left=190
Top=190
Text="5"
DataType=2
}
Add(Button,13792847,378,259)
{
Left=35
Top=185
link(onClick,5433850:doOperation,[])
}
Add(MT_AddData,659335,777,259)
{
Count=6
InputMT=3
link(onAdd,6577014:doEvent,[])
link(Data1,10276387:Var2,[])
link(Data3,9339836:Var2,[(797,243)(853,243)])
}
Add(MST_Matrix,12085299,483,259)
{
X=1
MSTControl="MTStrTbl"
link(onEMatrix,1888465:doOperation,[])
link(Y,5433850:Result,[(496,247)(476,247)(476,307)(433,307)])
}
Add(Math,5433850,427,259)
{
OpType=1
Op2=1
link(onResult,12085299:doEMatrix,[])
link(Op1,15043066:Count,[(433,240)(412,240)])
AddHint(171,-145,30,13,Op2)
}
Add(Math,1532094,735,259)
{
link(onResult,659335:doAdd,[])
link(Op1,10276387:Var1,[(741,236)])
}
Add(GetDataEx,10276387,777,231)
{
link(Data,5886234:Text,[])
}
Add(Edit,5289044,847,147)
{
Left=260
Top=190
}
Add(Math,1888465,623,259)
{
link(onResult,1532094:doOperation,[])
link(Op1,9339836:Var1,[(629,236)])
}
Add(GetDataEx,9339836,847,231)
{
link(Data,5289044:Text,[])
}
Add(Debug,6577014,847,259)
{
WEName="МТ-поток"
VDName=""
link(onEvent,15395190:doRowAction,[])
}

Вариант2


Add(MainForm,3063237,406,91)
{
Width=736
Height=438
}
Add(MTStrTbl,15043066,406,203)
{
Width=390
Height=170
Name="MTStrTbl"
Columns=#3:Имя|7:Фамилия|8:Отчество|
ColorItems=0
CheckBoxes=0
MultiSelect=0
}
Add(MST_RowAction,15395190,917,273)
{
MSTControl="MTStrTbl"
}
Add(Edit,5886234,791,161)
{
Left=190
Top=190
Text="5"
DataType=2
}
Add(Button,13792847,392,273)
{
Left=35
Top=185
link(onClick,5433850:doOperation,[])
}
Add(MT_AddData,659335,791,273)
{
Count=6
InputMT=3
link(onAdd,6577014:doEvent,[])
link(Data1,10276387:Var2,[])
link(Data3,5863636:Var2,[(811,257)(867,257)])
}
Add(MST_Matrix,12085299,497,273)
{
X=1
MSTControl="MTStrTbl"
link(onEMatrix,9005416:doEvent1,[])
link(Y,5433850:Result,[(510,261)(490,261)(490,321)(447,321)])
}
Add(Math,5433850,441,273)
{
OpType=1
Op2=1
link(onResult,12085299:doEMatrix,[])
link(Op1,15043066:Count,[(447,254)(426,254)])
AddHint(171,-145,30,13,Op2)
}
Add(Math,1532094,644,273)
{
link(onResult,145703:doEvent1,[])
link(Op1,10276387:Var1,[(650,250)])
}
Add(GetDataEx,10276387,791,245)
{
link(Data,5886234:Text,[])
}
Add(Edit,5289044,861,161)
{
Left=260
Top=190
}
Add(Math,1888465,693,329)
{
link(onResult,145703:doEvent2,[(733,335)(733,286)])
link(Op1,5863636:Var1,[(699,222)])
}
Add(Hub,9005416,560,273)
{
link(onEvent1,1532094:doOperation,[])
link(onEvent2,1888465:doOperation,[(634,286)(634,335)])
}
Add(Hub,145703,742,273)
{
InCount=2
link(onEvent1,659335:doAdd,[])
}
Add(GetDataEx,5863636,861,217)
{
link(Data,5289044:Text,[])
}
Add(Debug,6577014,875,273)
{
WEName="МТ-поток"
VDName=""
link(onEvent,15395190:doRowAction,[])
}

карма: 11

0
Ответов: 254
Рейтинг: 6
#10: 2018-10-01 15:45:17 ЛС | профиль | цитата
sla8a, вот дебагером я совсем не умею пользоваться если честно. Не понимаю как добавить в столбец4 суммирование ячеек с столбцом 3. Я понимаю, что разгадка скрывается где-то в математической операции, но не понимаю как и что.

Add(MainForm,3063237,308,189)
{
Width=736
Height=438
}
Add(MTStrTbl,15043066,308,301)
{
Width=390
Height=170
Name="MTStrTbl"
Columns=#1:1|1:2|1:3|1:4|1:5|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|
ColorItems=0
CheckBoxes=0
MultiSelect=0
}
Add(MST_RowAction,15395190,791,371)
{
MSTControl="MTStrTbl"
}
Add(Edit,5886234,693,259)
{
Left=190
Top=190
Text="5"
DataType=2
}
Add(Button,13792847,294,371)
{
Left=35
Top=185
link(onClick,5433850:doOperation,[])
}
Add(MT_AddData,659335,693,371)
{
Count=6
InputMT=3
link(onAdd,6577014:doEvent,[])
link(Data1,10276387:Var2,[])
link(Data3,5289044:Text,[(713,355)(769,355)])
}
Add(MST_Matrix,12085299,399,371)
{
X=1
MSTControl="MTStrTbl"
link(onEMatrix,1532094:doOperation,[])
link(Y,5433850:Result,[(412,359)(392,359)(392,419)(349,419)])
}
Add(Math,5433850,343,371)
{
OpType=1
Op2=1
link(onResult,12085299:doEMatrix,[])
link(Op1,15043066:Count,[(349,352)(328,352)])
AddHint(171,-145,30,13,Op2)
}
Add(Math,1532094,546,371)
{
link(onResult,659335:doAdd,[])
link(Op1,10276387:Var1,[(552,348)])
}
Add(GetDataEx,10276387,693,343)
{
link(Data,5886234:Text,[])
}
Add(Edit,5289044,763,259)
{
Left=260
Top=190
Text="7"
DataType=2
}
Add(Debug,6577014,763,371)
{
WEName="МТ-поток"
VDName=""
link(onEvent,15395190:doRowAction,[])
}


Редактировалось 2 раз(а), последний 2018-10-01 15:50:55
карма: 0

0
Ответов: 203
Рейтинг: 2
#11: 2018-10-01 16:49:45 ЛС | профиль | цитата
Вот всегда было интересно, почему нельзя одной командой или кликом мыши включить элементы Debug или отключить
карма: 0

0
Ответов: 2200
Рейтинг: 673
#12: 2018-10-03 00:21:50 ЛС | профиль | цитата
Можно.
карма: 11

0
Ответов: 254
Рейтинг: 6
#13: 2018-10-03 08:59:56 ЛС | профиль | цитата
sla8a, все равно не получается сделать суммирование ячеек в столбце 4. Не понимаю в чем причина. Тот блок, что стоит перед потоком для суммирования я так понимаю отвечает за суммирование во 2 столбце. Но как его привязать к 4 столбцу не пойму. Может подскажите? А то я уже голову сломал.
карма: 0

0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)