|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Всем привет. Хотел обратиться к вам в необходимости решения следующей задачки. 1. Считать данные из файла EXCEL 1.xls (произвольным способом); 2. Произвести группировку значений по первым трем столбцам и суммирование по следующим четырем столбцам, например, значение первых трех столбцов с уникальным ключом 1-1-1 будет иметь суммарные значения следующих четырех столбцов 2-4-6-8; 3. Вывести результат преобразований для просмотра тем или иным способом. 4. Команду Select SQL не использовать. Буду очень благодарен за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 07:38 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
1. Самое "лобовое" решение: открываем файл в экселе, "сохранить как", выбираем внизу тип файла dbase IV, сохраняем. У вас готов DBF с вашими данными. Если хочется всё делать программно - в поиск по createobject("Excel.Application") . 2. Код: plaintext 1. 2.
3. см. выше + команда Browse + читать про отчёты (reports) 4. Убить об стену укурка, придумавшего это условие. Если невозможно, то читать про scan/endscan. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 07:56 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Большое спасибо за советы, с Excel-ем разобрался, сейчас думаю над алгоритмом суммирования значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 08:08 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Все-таки как будет выглядеть алгоритм без команды Select... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 08:11 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Пожалуйста, будьте добры, помогите, у меня не получается не через Scan, не через For, While!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 09:05 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Помогите, пожалуйста!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 09:29 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
CJ Alex R, оверпостинг это зло. Идея г-кода такая: у вас есть курсор (field1,...,fieldK,fieldM,...fieldN), где 1-K - группировочные поля, а M-N - суммируемые поля. Псевдокод: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 10:23 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Спасибо Вам огромное! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 10:45 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Так и не получается... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 11:08 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
CJ Alex RТак и не получается... А как пробовали? Пример кода приведите. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 12:52 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Приведу код: Class CItem Public key1 As Long Public key2 As Long Public key3 As Long Public val1 As Long Public val2 As Long Public val3 As Long Public val4 As Long LOCAL loCol, loItem loCol = NEWOBJECT("Collection") USE YOURDATA table SET TALK OFF DO WHILE .T. IF EOF( ) EXIT ENDIF IF EMPTY(loCol.GetKey(key1+"-"+key2+"-"+key3)) loItem = NEWOBJECT("CItem") loItem.key1 = key1 loItem.key2 = key2 && loItem.key3 = key3 && loItem.val1 = value1 && value1 loItem.val2 = value2 && value1 loItem.val3 = value3 && value1 loItem.val4 = value4 && value1 loCol1.Add(loItem, key1+"-"+key2+"-"+key3) SKIP LOOP ENDIF loCol.GetKey(key1+"-"+key2+"-"+key3).val1= loCol.GetKey(key1+"-"+key2+"-"+key3).val1 +value1 loCol.GetKey(key1+"-"+key2+"-"+key3).val2= loCol.GetKey(key1+"-"+key2+"-"+key3).val2 +value2 loCol.GetKey(key1+"-"+key2+"-"+key3).val3= loCol.GetKey(key1+"-"+key2+"-"+key3).val3 +value3 loCol.GetKey(key1+"-"+key2+"-"+key3).val4= loCol.GetKey(key1+"-"+key2+"-"+key3).val4 +value4 SKIP LOOP ENDDO ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 14:15 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
CJ Alex R, код выдаёт ошибку (какую?) или просто ничего не считает? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 14:37 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Ошибку сначала выдает -> в прикрепленном файле ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 14:44 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
CJ Alex R, А, собственно, зачем вам паблики? Ну и насчёт класса - на крайний случай (фокса сейчас нет под рукой, проверить ошибку не могу) сделайте библиотеку, сделайте там класс на основе кастома, и сделайте в нём метод, выполняющий всё написанное вами выше (кроме первой строки :) ). Потом креатеобжект, обжект.метод() и смотрите результат/ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 15:25 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Во-первых, не "class", а "DEFINE CLASS". Во-вторых, а на кой здесь класс и такое кол-во глобальных переменных, которые в данном модуле и так прекрасно видны ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 15:53 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Может, проще отчет создать, который сам автоматически все сгруппирует и посчитает? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 15:54 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
rewareа на кой здесь классдля ООП :) FffffffffffffffffffffМожет, проще отчет создать, который сам автоматически все сгруппирует и посчитает?Кстати, самая умная мысль в топике, но, боюсь, препод ТСа не оценит и добавит 5-е условие "не использовать отчёты" ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 18:28 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
FoxPro - это СУБД. Т.е. "заточена" под работу с таблицами (базами данных). Вот и надо показать умение работать с этими самыми таблицами. То, что "творите" Вы - это работа с памятью. Причем на принципах какого-то другого языка программирования. Этап 1: Загрузка данных из Excel. Ну, собственно к задаче отношения не имеет. Это некий подготовительный этап, чтобы просто сформировать таблицу (курсор) в среде FoxPro. Далее от Вас требуется выполнить некие вычисления по этой таблице. Для FoxPro совершенно "естесственно" поместить результат этих вычислений тоже в таблицу. Пусть и временную. Хранить результат обработки в переменных памяти, а тем более объектах - это "не естесственно" для FoxPro. Возможно, но будут проблемы. Поскольку Select-SQL для Вас под запретом, то следует создать результирующую таблицу "вручную". В данном случае, очевидно, что структура результирующей таблицы будет совпадать со структурой исходной таблицы с данными. Читайте справку по командам CREATE CURSOR и AFields(). А вот дальше от Вас и требуется показать умение работать с таблицами. Собственно, ничего сложного: найти запись (LOCATE, SEEK), заменить значение в существующей записи (REPLACE), создать новую запись (INSERT). Почти то же самое, что Вы пытались сделать при помощи коллекций. Просто команды другие. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2011, 20:30 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Если не использовать -SQL полностью (включая INSERT и т.п.), то так примерно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2011, 00:18 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Да, тестовая табличка... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2011, 00:29 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Огромное спасибо, AndreTM , я Вам очень благодарен, еще один небольшой вопросик, как таблицу с результатами добавить в элемент Grid к уже существующей там таблице, полученная импортом из Excel. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2011, 08:46 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
CJ Alex R, грид - это средство просмотра данных. Сами данные "лежат" не в гриде, а в таблице, которую он отображает (у вас это исходная таблица). Соответственно вам надо взять данные из сгруппированной таблицы и дописать их в исходную. Если структуры совпадают, то так: Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2011, 09:06 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
Спасибо, tanglir, а в свойствах и методах Grida надо что-о прописывать (Init и т.д.)? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2011, 09:10 |
|
Необходима помощь в решении простой задачки!
|
|||
---|---|---|---|
#18+
CJ Alex R, ну, если у вас таблица уже отображается в гриде, то самое простое - дописать туда данные, после чего утащить с грида фокус и вернуть обратно (с рефреш() у грида вроде какие-то нюансы, точно не помню, но сетфокус() обновляет вид гарантированно) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2011, 09:14 |
|
|
start [/forum/topic.php?fid=41&msg=37392052&tid=1584217]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 146ms |
0 / 0 |