Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 обновление  [new]
Liosha_nove4ok
Member

Откуда:
Сообщений: 100
Помогите сделать обновление данных с помощью кнопки , очень надо. Есть несколько БД в ДОСе:
- sprav.dbf – БД зарплата(sprav.prof = ‘*’ означает что человек член профсоюза),
- 24 таблицы с названием BD_.dbf (БД ОК3, Отдел Кадров),, BD1.dbf…. BD2.dbf …BD24.dbf – сотруднике (24 = число служб, в предприятии),
- BD0.dbf – сезонники, декретчики (БД ОК3, Отдел Кадров),
- BD99.dbf – сотрудники с кем был преостоновлен трудовой договор (БД ОК3, Отдел Кадров),
- ARH[год] – уволенные (БД ОК3, Отдел Кадров).

И, есть БД уже в вижуале, data1.bd_pr, вот в эту таблицу bd_pr.dbf нужно сделать обновления, из вышеуказанных, т.е. какие либо, изменения и новые записи.

Есть код в ДОСе, но я ни как не могу с ним разобраться, мне надо в вижуал. помогите с этим всем разобраться, я в этом еще не силён, но, на работе была поставлена задача и сроки поджимают, заранее спасибо



procedure OBNOVL
wait wind " Ждите ... " nowait
dimension masv[14,1]
close databases
use &p_dbf3.SPRAV order tag TAG2 in 4
select 2
use &p_dbf.BD-PR order tag TAG1
blank all
select 1
use &p_dbf.STPROF
scan && STPROF
psv = alltrim(Svz)
pbd = Bdp
for ii = 1 to len(psv) step 3
pod = val(substr(psv,ii,2))
wait wind "в "+alltrim(massp[pbd,1])+" передаются данные из "+str(pod,2) nowait
select 3
fal = p_dbf1 + "BD"+alltrim(str(pod,2))
use &fal order tag TAG1 && рабочая база
set relation to Tab_nom into D
scan for D.Prof = "*".or.inlist(Tab_nom,2629,1339,2631,28,2634,4901,1092,3278)
scatter to masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
kkd = 0
for kk = 1 to 4
ppol = "Mem"+str(kk,1)
kkd = kkd + iif(&ppol=space(30),0,1)
endfor
select 2
if seek(0) = .F.
append blank
endif
gather from masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
replace Bdp with pbd, Bd with pod, Kold with kkd
select 3
endscan

use &p_dbf1.BD0 order tag TAG1 && сезонники, декретчики
set relation to Tab_nom into D
scan for !("С" $ Vidn).and.Bd = pod.and.D.Prof = "*"
scatter to masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
kkd = 0
for kk = 1 to 4
ppol = "Mem"+str(kk,1)
kkd = kkd + iif(&ppol=space(30),0,1)
endfor
select 2
if seek(0) = .F.
append blank
endif
gather from masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
replace Bdp with pbd, Bd with pod, Kold with kkd
select 3
endscan

use &p_dbf1.BD99 order tag TAG1 && Приост.ТД
set relation to Tab_nom into D
scan for Bd = pod.and.D.Prof = "*"
scatter to masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
kkd = 0
for kk = 1 to 4
ppol = "Mem"+str(kk,1)
kkd = kkd + iif(&ppol=space(30),0,1)
endfor
select 2
if seek(0) = .F.
append blank
endif
gather from masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
replace Bdp with pbd, Bd with pod, Kold with kkd
select 3
endscan

ffal = p_arh + "ARH"+str(year(ddate),4) + ".dbf"
use &ffal
use &ffal order tag TAG1 && уволенные
set relation to Tab_nom into D
scan for Bd = pod.and.!inlist(Vidn,"С","Т","В")
scatter to masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
pdu = Datu
kkd = 0
for kk = 1 to 4
ppol = "Mem"+str(kk,1)
kkd = kkd + iif(&ppol=space(30),0,1)
endfor
select 2
if seek(0) = .F.
append blank
endif
gather from masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
replace Bdp with pbd, Bd with pod, Kold with kkd, Prim with "*, уволен с "+dtoc(pdu)
select 3
endscan
endfor
select 1
endscan
close databases
use INSTAL
goto 9
replace Way with dtoc(ddate)
p_dat = alltrim(Way)
defi bar 3 of PM1 prom " 2. Членов профсоюза ("+p_dat+")"
use &p_dbf.BD-PR
wait clear
return


26 мар 09, 15:49    [6979835]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
Liosha_nove4ok
Member

Откуда:
Сообщений: 100

procedure OBNOVL
wait wind " Ждите ... " nowait
dimension masv[14,1]
close databases
use &p_dbf3.SPRAV order tag TAG2 in 4
select 2
use &p_dbf.BD-PR order tag TAG1
blank all
select 1
use &p_dbf.STPROF
scan && STPROF
psv = alltrim(Svz)
pbd = Bdp
for ii = 1 to len(psv) step 3
pod = val(substr(psv,ii,2))
wait wind "в "+alltrim(massp[pbd,1])+" передаются данные из "+str(pod,2) nowait
select 3
fal = p_dbf1 + "BD"+alltrim(str(pod,2))
use &fal order tag TAG1 && рабочая база
set relation to Tab_nom into D
scan for D.Prof = "*".or.inlist(Tab_nom,2629,1339,2631,28,2634,4901,1092,3278)
scatter to masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
kkd = 0
for kk = 1 to 4
ppol = "Mem"+str(kk,1)
kkd = kkd + iif(&ppol=space(30),0,1)
endfor
select 2
if seek(0) = .F.
append blank
endif
gather from masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
replace Bdp with pbd, Bd with pod, Kold with kkd
select 3
endscan

use &p_dbf1.BD0 order tag TAG1 && сезонники, декретчики
set relation to Tab_nom into D
scan for !("С" $ Vidn).and.Bd = pod.and.D.Prof = "*"
scatter to masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
kkd = 0
for kk = 1 to 4
ppol = "Mem"+str(kk,1)
kkd = kkd + iif(&ppol=space(30),0,1)
endfor
select 2
if seek(0) = .F.
append blank
endif
gather from masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
replace Bdp with pbd, Bd with pod, Kold with kkd
select 3
endscan

use &p_dbf1.BD99 order tag TAG1 && Приост.ТД
set relation to Tab_nom into D
scan for Bd = pod.and.D.Prof = "*"
scatter to masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
kkd = 0
for kk = 1 to 4
ppol = "Mem"+str(kk,1)
kkd = kkd + iif(&ppol=space(30),0,1)
endfor
select 2
if seek(0) = .F.
append blank
endif
gather from masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
replace Bdp with pbd, Bd with pod, Kold with kkd
select 3
endscan

ffal = p_arh + "ARH"+str(year(ddate),4) + ".dbf"
use &ffal
use &ffal order tag TAG1 && уволенные
set relation to Tab_nom into D
scan for Bd = pod.and.!inlist(Vidn,"С","Т","В")
scatter to masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
pdu = Datu
kkd = 0
for kk = 1 to 4
ppol = "Mem"+str(kk,1)
kkd = kkd + iif(&ppol=space(30),0,1)
endfor
select 2
if seek(0) = .F.
append blank
endif
gather from masv field Tab_nom,Podg,Name,Fio,Doljn,Rojd,Dat,Codl,Codf,Adres,Tel,Pas1,Pas2,Pas3
replace Bdp with pbd, Bd with pod, Kold with kkd, Prim with "*, уволен с "+dtoc(pdu)
select 3
endscan
endfor
select 1
endscan
close databases
use INSTAL
goto 9
replace Way with dtoc(ddate)
p_dat = alltrim(Way)
defi bar 3 of PM1 prom " 2. Членов профсоюза ("+p_dat+")"
use &p_dbf.BD-PR
wait clear
return

26 мар 09, 15:50    [6979845]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
Liosha_nove4ok
Member

Откуда:
Сообщений: 100
Парни, что нет ни каких идей?
26 мар 09, 19:11    [6981233]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
проходящий.
Guest
Liosha_nove4ok
Парни, что нет ни каких идей?
А откуда они возьмутся, когдв все заляпано макроподстановкой и понять что-то в этом месиве крайне затруднительно.
26 мар 09, 19:42    [6981310]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
Liosha_nove4ok
Member

Откуда:
Сообщений: 100
а если не смотреть в месево? помогите пжалста...

Liosha_nove4ok
Помогите сделать обновление данных с помощью кнопки , очень надо. Есть несколько БД в ДОСе:
- sprav.dbf – БД зарплата(sprav.prof = ‘*’ означает что человек член профсоюза),
- 24 таблицы с названием BD_.dbf (БД ОК3, Отдел Кадров),, BD1.dbf…. BD2.dbf …BD24.dbf – сотруднике (24 = число служб, в предприятии),
- BD0.dbf – сезонники, декретчики (БД ОК3, Отдел Кадров),
- BD99.dbf – сотрудники с кем был преостоновлен трудовой договор (БД ОК3, Отдел Кадров),
- ARH[год] – уволенные (БД ОК3, Отдел Кадров).

И, есть БД уже в вижуале, data1.bd_pr, вот в эту таблицу bd_pr.dbf нужно сделать обновления, из вышеуказанных, т.е. какие либо, изменения и новые записи.

Есть код в ДОСе, но я ни как не могу с ним разобраться, мне надо в вижуал. помогите с этим всем разобраться, я в этом еще не силён, но, на работе была поставлена задача и сроки поджимают, заранее спасибо
26 мар 09, 19:50    [6981329]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
А вопрос-то в чем? Что вы вкладываете в понятие "с этим всем разобраться"?
26 мар 09, 20:06    [6981369]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
Liosha_nove4ok
Member

Откуда:
Сообщений: 100
Помогите сделать обновление данных с помощью кнопки , очень надо. Есть несколько БД в ДОСе:
- sprav.dbf – БД зарплата(sprav.prof = ‘*’ означает что человек член профсоюза),
- 24 таблицы с названием BD_.dbf (БД ОК3, Отдел Кадров),, BD1.dbf…. BD2.dbf …BD24.dbf – сотруднике (24 = число служб, в предприятии),
- BD0.dbf – сезонники, декретчики (БД ОК3, Отдел Кадров),
- BD99.dbf – сотрудники с кем был преостоновлен трудовой договор (БД ОК3, Отдел Кадров),
- ARH[год] – уволенные (БД ОК3, Отдел Кадров).

И, есть БД уже в вижуале, data1.bd_pr, вот в эту таблицу bd_pr.dbf нужно сделать обновления, из вышеуказанных, т.е. какие либо, изменения и новые записи.



я же уже написал не смотреть в сод, прога в досе была сделана до меня, и я с кодом не могу разоюратся что был написан до меня, много макроподстановки и не понимаю что и от куда берётся...
26 мар 09, 20:20    [6981407]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
Dag
Member

Откуда:
Сообщений: 842
Код у тебя есть. Запускай его под VFP, смотри где вылазят ошибки-последовательно с ними разбирайся. Ничего сложного. Нудно только.
26 мар 09, 21:08    [6981480]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
прошелмимо
Member [заблокирован]

Откуда: Из Курска понаехал
Сообщений: 10363
+ посмотреть на sql команду insert

insert into <куда>  (<перечень полей>)
    select <перечень полей>
           from <табличка>
           where <условие ограничения отбора>
26 мар 09, 21:58    [6981588]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Так я не понял, вы предлагаете нам поработать вместо HELP? Описывать словами что делает каждая команда в отдельности?

Если вы думаете, что существует некий универсальный код по перекачке данных из одного хранилища в другое, то вынужден вас разочаровать. Такого в природе не существует. В силу разных причин.

А это значит, что максимум, что вам могут посоветовать - это обратить внимание на некоторые команды и функции. Тот же Insert-SQL, например. Но это и все.

Чтобы сказать что-то более определенное надо очень глубоко и плотно влезать в конкретную задачу. Изучать структуру исходных данных, конечных данных, правил преобразований одного в другое.

Собственно, по сути, вы спросили как мне переложить бумаги из одной папки в другую. Ну, что на это можно ответить? Руками! А как еще?
26 мар 09, 23:40    [6981862]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
Liosha_nove4ok
Member

Откуда:
Сообщений: 100
Ох... как же трудно понять сытого, когда ты голоден.. ладно парни, буду лопатить код и переводить эти грёбаные макропостановки, спасибо...
27 мар 09, 00:08    [6981905]     Ответить | Цитировать Сообщить модератору
 Re: обновление  [new]
reware
Member

Откуда: Хабаровск
Сообщений: 585
Liosha_nove4ok
Ох... как же трудно понять сытого, когда ты голоден.. ладно парни, буду лопатить код и переводить эти грёбаные макропостановки, спасибо...


А вы вы как думали ?
Сытый становится сытым, когда он что-то полопатит руками (и головой).
В показанном здесь коде нет ничего необычного для языка VFP. Ну, громоздко, процедурно, но работать должно. Вам надо самостоятельно разобраться, что делает каждая таблица, какова их структура и теги, для чего нужен каждый массив, откуда и куда что надо перекачать. Что означают загадочные &p_dbf.STPROF и массив massp. Только я вас умоляю, не надо здесь все это подробно рассказывать, вы это должны сами через себя пропустить.
И не надо шарахаться от "БД в ДОС". Базы как базы. Не думайте, что перейдя в VFP вы попадете в рай :)

2 прошелмимо : Не надо пока про INSERT, это все технические детали. Можно вообще оставить все, как есть. Главное, чтобы человек сам понял этот алгоритм. А там уж выберет по вкусу, как его писать.
27 мар 09, 14:10    [6984464]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить