Имя: Пароль:
IT
 
Программа на FoxPro
0 osa1C
 
07.11.13
11:42
Доброго всем времени суток! Проблема следующая: Имеется самописная заплатанная программка, написанная на Visual FoxPro. Написана соответственно не мной, я слишком слабо разбираюсь в лисах. Расчётчики случайно удалили из базы не того человека. Есть архив, и мне надо собрать по всем таблицам данные по этому человеку и скопировать в соответствующие таблицы рабочей базы. Может у кого-нибудь есть программка делающая что-то похожее? ... Чтобы я смог её допилить под свои базы?
1 osa1C
 
07.11.13
11:44
*** зарплатная программа :-)) .... очепятка
2 skunk
 
07.11.13
11:46
навряд ли ... так как на фоксе писали все кому не лень ... как сейчас одинэсники ... поэтому всяких зарплат и бухгалтерий писанных на фоксе пруд пруди и того больше ...
3 skunk
 
07.11.13
11:46
ну и соответственно у каждой из них своя структура и все такое прочее
4 Шалун
 
07.11.13
11:46
используя DBFView распометь на удаление записи по этому человеку;)
5 Ork
 
07.11.13
11:48
(4) С такой задачей фокс и сам неплохо справится. Хоть интерактивно, хоть программно.
6 osa1C
 
07.11.13
11:52
(2) задача состоит в том, чтобы перекопировать записи из одноименных таблиц в одноименные
(4) попробую конечно, но по-моему тот кто писал программку после удаления сразу паковал записи
7 aka AMIGO
 
07.11.13
11:53
(6) так посмотри, авось осталась просто пометка к удалению
8 aka AMIGO
 
07.11.13
11:53
+7 см. (4)
9 osa1C
 
07.11.13
11:55
(8) посмотрю!!! .... просто сейчас пока делается копия на мой комп с сервака... пока 50%
10 ma2
 
07.11.13
11:55
(6) сразу паковать скорее всего не будут. Для этого монопольный режим использования нужен. Так что смотри удаленные записи
11 PLUT
 
07.11.13
11:55
да поставиь VFP студию себе на комп, вот там можно из консоли командами
типа use c:\zryaplata.dbf (Открыть базу данных)
12 aka AMIGO
 
07.11.13
11:55
"Собрать сведения по 1 человеку" - ох и непростая задача.. надо знать описание полей в дбф-файлах, а это описание только в сопроводиловке к проектуЮ, которого уже наверняка нет
13 PLUT
 
07.11.13
11:57
http://vfp.narod.ru/Vfp/help/default.htm

(12) структуру полей в VFP нефиг делать посмотреть
14 osa1C
 
07.11.13
12:01
(11) Хорошая идея.... вот так наверно и начну пробовать
15 aka AMIGO
 
07.11.13
12:02
(13) я имел в виду не структуру, а назначение..
например, имеется вот такое поле QW123 С 12
вот и пойми, что оно означает, и для чего в расчетах предназначено

года 3 назад я переносил из FoxPro"шной самописной зарплаты в УПП, так там были 3 тома по 2 пальца толщиной - описание структур
16 PLUT
 
07.11.13
12:04
(15) я последний раз на VFP лет 8 назад писал)

http://rutracker.org/forum/viewtopic.php?t=829758
17 Пеппи
 
07.11.13
12:08
Мда
нелегкая это работа из болота тащить бегемота :)

Что именно удалили то? Всю зарплату за все время с человеком или что?
18 PLUT
 
07.11.13
12:09
(4) не очень хорошая идея, т.к. у Лисы свой формат dbf, да еще BLOB-поля есть (например для хранения картинок). 1С не шмогла нормально с VFP-базой dbf нормально работать, пришлось выгрузку в VFP писать, отдельно загрузку в 1С
19 Lexik
 
07.11.13
12:13
APPEND FROM в Фоксе при двух открытых базах по условию вытащат нужные данные, ИМХО!
20 PLUT
 
07.11.13
12:13
+(18) через xBase в 1С7.7. а до ADO я тогда не дорос еще :)
21 osa1C
 
07.11.13
12:15
(17) Удалили человека.... соответственно его не видно в программе, и данных по расчету по нему нет в отчётах
22 skunk
 
07.11.13
12:15
(6)я тебя прекрасно понял ... но тебе ведь нужны связанные данные из всех таблиц ... а это значит программа должна знать как и по какому полю происходит связывание разных таблиц
23 osa1C
 
07.11.13
12:18
Хотел скачать себе Microsoft® Visual FoxPro 9.0, но если сейчас начну качать с работы через торррент, забью весь инет... Буду качать из дома, так что если у кого будут ещё идеи пишите!
24 PLUT
 
07.11.13
12:20
25 aka AMIGO
 
07.11.13
12:21
(22) в принципе в FoxPro есть отладка, можно просто посмотреть по трассе, где и что удаляется.. но для этого надо знать язык FP.. тоже неудобный выход

(23) успехов тебе в перекачивании! :)
и привет городу-саду на иртыше с омью :)
26 Зойч
 
07.11.13
12:22
если больше ничего не удаляли, то можно перенести все записи из бэкапа которых нет в тек базе во все таблицы
27 rphosts
 
07.11.13
12:22
(21) 90%+, что интерфейс позволил юзерам только пометить на удаление 1/ряд записей. В этом случае нужно снять с неё пометку удаления и всё
28 aka AMIGO
 
07.11.13
12:25
(27) ссылки там есть.. при пометке на удаление тоже помечаются автоматом, и кто его знает, может при распометке поля-владельца и не восстанавливаются
29 PLUT
 
07.11.13
12:25
(27) возможно в этой самопиське используют команду PACK
30 PLUT
 
07.11.13
12:26
31 aka AMIGO
 
07.11.13
12:28
(29) пара возможных мест: при удалении в диалоге, или при удалении отдельной процедурой..
отдельная проца позволяет опомнившемуся не нажимать кнопку, а снять пометки к удалению в базе
32 osa1C
 
07.11.13
12:28
(25) Бывал у нас?
33 aka AMIGO
 
07.11.13
12:29
(32) жил с 7 до 27 лет :)
34 osa1C
 
07.11.13
12:29
(33) Вот оно как! .... А я живу с 0 и до сих пор
35 rphosts
 
07.11.13
12:31
(29) ага, скажи ещё каждый день! Вот кто выполнил пак - пусть и всё забивает ручечками
36 rphosts
 
07.11.13
12:31
(28) для правильной распометки есть программист, распометить по условию много проще чем дозаливать
37 1dvd
 
07.11.13
12:32
38 aka AMIGO
 
07.11.13
12:33
(35) неизвестно ведь, где и в какое время этот пак-то производится :)
1. интерактивно, сразу послерешения удалить
2. отдельной процедуркой с нопкой "удалить физиццки"
39 rphosts
 
07.11.13
12:34
(25).2 не-не-не, город-сад это сказал Маяковский про Кузнецкстрой (нынче Новокузнецк).
40 osa1C
 
07.11.13
12:35
(35) проблема в том, что программиста, который это писал, я знаю лично.... поверьте мне тот ещё олень... и писал так, что стыдно смотреть на код было... (сейчас весь запаролил). С ним все давно переругались и не хотят использовать его программу. Сейчас сам занимаюсь настройкой наших расчетов в ЗУП, но пока приходится использовать его программу, пока я не закончу
41 osa1C
 
07.11.13
12:36
(39) Омску название город - сад было присвоено официально ещё при СССР ... конкурс тогда между городами производился
42 rphosts
 
07.11.13
12:38
(38) reFox ведь никто не отменял(даже если исходников нет, что не есть нормально)? И вообще не вижу проблемы открыть справочник ФЛ из фокса или любого вьювера dbf) и посмотреть осталась там эта запись или её нет. На обсуждение уже ушло много больше времени чем нужно что-бы посмотреть на табличку
43 rphosts
 
07.11.13
12:40
(40) начни уж что-нить делать, серебряной пули которая за тебя всё сделает тебе никто не выдаст, так что тебе придётся поработать при любом раскладе ручками и возможно головой. И нет ни какой гарантии что базу не упакую именно в тот момент, пока ты будешь разговоры разговаривать... физическую копию каталога с базой уже сделал?
44 aka AMIGO
 
07.11.13
12:41
(39) ""Город-сад, ветки яблонь, акаций и клёнов" - кажется, это "Омский вальс". Музыка Яркова, стихи Васильева. Песня была выпущена на пластинке "Омские мелодии", где её исполнил Александр Розум. http://vlatisa.livejournal.com/59296.html ""
Цитата ув. fellow :)
45 aka AMIGO
 
07.11.13
12:44
(40) если нет всего одного человечка - так и бог с ним, введи отдельно в ЗУП, либо расчеты, либо остатки уж..
гораздо проще будет.. ИМХО, конечно
46 osa1C
 
07.11.13
12:49
(45) Я ввожу в ЗУП расчеты... у нас тут специфическая система расчетов... поэтому с остатками лучше не париться
47 kosts
 
07.11.13
12:51
В тестовой базе при помощи удаления еще одного человека выявить таблицы которые подвергаются модификации.
Потом сравнить, что именно было удалено сравнением исходной и модифицированной.

Унделетем лучше не пользоваться, там может быть куча не уже нужных данных в помеченных.
48 osa1C
 
07.11.13
12:53
(43) Копию конечно сделал, в ту же минуту, когда мне об этом сообщили. Всех выгнал из программы и сделал копию, а с копии ещё и архив :)
49 Андрей_Андреич
 
naïve
07.11.13
12:54
хороший повод перейти на ЗУП
50 aka AMIGO
 
07.11.13
12:57
(47) я не рискнул этот вариант предложить, хотя мысля такая проскочила.. :)
а старого прогера можно понять.. во-первых уже изрядно подзабыл, где там что делается, во-вторых - имхо - не светит большая оплата..

(46) а как с прошлыми периодами? ведь вам потребуются сведения за год для расчетов по среднему.. Это у меня головная боль была еще та..
51 Ёпрст
 
07.11.13
13:00
(48) если с базой не работали сразу после удаления, то всё лекго восстанавливается, достаточно снять маркер удаления в нужных dbf-ках с нужных записях.. и усё.
52 Ёпрст
 
07.11.13
13:00
(47) я бы тоже так сделал :)
53 aka AMIGO
 
07.11.13
13:02
(52) ну, видишь-ли.. ТС не работал с dbf-ами, так что будет весьма не просто разобраться в логике foxpro
54 osa1C
 
07.11.13
13:32
(53) мне сейчас немного человек один подсказал про структуру... и в принципе по его словам всё сделать не очень сложно, но мне бы теперь утилитку, которой можно было бы выделить нужные мне строки, скопировать и вставить в рабочую таблицу ... никто такой не знает????
55 rphosts
 
07.11.13
13:34
(47) >Унделетем лучше не пользоваться, там может быть куча не уже нужных данных в помеченных.

анделет + условие + чуть-чуть работы мозга, хотя-бы спинного спасут, но если как писали выше не выполнили пак
56 elCust
 
07.11.13
13:36
Оххх как же давно я не думал о FoxPro. Спасибо.
57 rphosts
 
07.11.13
13:37
(54) "выдели" их посредством:
Set Filter To

или сразу сделай ReCall For

и вообще по мне так у ФП очень даже вменяемый хэлп по языку

точно! нет у ФП команды анделете а есть рекалл
58 osa1C
 
07.11.13
13:40
(57) ну выделить то я выделю.... а как выделенное перенести в другую таблицу?
59 PLUT
 
07.11.13
13:40
(58) скачать учебник для чайников по VFP
60 kosts
 
07.11.13
13:42
(58) Если не ошибаюсь, то (19) APPEND FROM ...
61 PLUT
 
07.11.13
13:42
62 PLUT
 
07.11.13
13:43
(58) "теоретик" :) VFP уже поставил?
63 osa1C
 
07.11.13
13:44
+(54) какая-то утилитка есть bro называется, но в новой версии функции выделения строк и копирования отключены... А старую версию, человек с которым я консультировался, потерял
64 aka AMIGO
 
07.11.13
13:44
(58) чего выделять/копировать-то? нужные тебе записи/строки уже есть в дбф-ах, только они помечены, как неиспользующиеся (только помеченные/удаленные), на них в утилите ДБВью слева стоит точка, снимающаяся левой кнопкой мыши..
удалил точку - строка/запись восстановлена
65 kosts
 
07.11.13
13:47
(64) А как отделить помеченные только что, от сто лет назад помеченных?...
66 aka AMIGO
 
07.11.13
13:48
(64) + нет, тут я могу быть неправ.. извини osa1C ..
(65) не знаю.. видимо, никак, в дбф-файле сведений о дате/времени работы с ними нет
67 aka AMIGO
 
07.11.13
13:49
+66 искать только по фамилии, да по ссылкам..
трудная это работа..
надо модуль обработки писать, кмк..
68 aka AMIGO
 
07.11.13
13:51
тут вот что.. всё, что можно - перетащить из рабочей старой проги, а одного человека - отдельно, из старого архива
69 osa1C
 
07.11.13
13:51
(67) искать можно по табельному... во всех нужных таблицах он есть
70 aka AMIGO
 
07.11.13
13:53
(69) ну, да.. по-идее, основой является ТН..

и всё-таки - рекомендую (68)
71 osa1C
 
08.11.13
10:12
Не поверите как решилась моя проблема... я пересмотрел все таблицы базы и нашел данные по удаленному человеку НО даже не помеченными на удаление! ... При этом записи по нему в программе оставались не видны. Просто на копии решил занести этого человека заново. И, о чудо... когда ввёл его фамилию в списке появились все его однофамильцы и в том числе и он сам... дальше просто его выбрал и сохранил. Все начисления, удержания ... и т.д. и т.п. вернулись на место.
Оказывается на "удаленных" строчках базы программист не ставил пометку удаления, а в определенное поле забивал 99999999999. При этом такая запись становилась невидна и не участвовала в расчетах.
Нет худа без добра, зато почти за два дня этого геморроя, почти полностью разобрался со структурой базы.
Всем огромное спасибо за помощь!
72 kosts
 
08.11.13
10:23
(71) Значит не всё старый программист плохо сделал...
73 Принт
 
08.11.13
10:24
(72) типа 1С делает по-другому
74 kosts
 
08.11.13
10:25
(73) Так, да не так.
75 osa1C
 
08.11.13
11:14
(72) Не совсем всё хорошо.... База из-за удаленных строчек растет на глазах, некоторые операции делаются ОЧЕНЬ долго. Например, расчет отпуска для человека может длится до двух часов ... и к концу года всё дольше и дольше. А как пакануть базу я пока не разобрался
76 kosts
 
08.11.13
11:47
(75) Поди ни одного индекса нет?...
Попробуй команду PACK для больших таблиц сделать.
77 osa1C
 
08.11.13
11:57
(76) В таблицах нет строк помеченных на удаление! В том вся и проблема
78 osa1C
 
08.11.13
12:01
(76) + (77) Индексы есть
79 kosts
 
08.11.13
12:03
(78) Ну значит криво написано, т.к. foxpro довольно резво данные обрабатывал.
80 osa1C
 
08.11.13
12:13
(79) Я о том же, что криво ;)
81 osa1C
 
08.11.13
12:43
(79) Нашел тут функцию программы архивирование баз... кто же её в такую даль запрятал(((( .... но и она почему-то не все ненужные записи вычищает, но хоть что-то
А ещё тут расчетчики больничные в ручную считают, из-за того, что не возможно поменять МРОТ.... где-то он программно зашит. Ох, скорее мне надо доделывать расчетную схему на ЗУП, а то задолбают