|
|
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
Спецы помогите решить проблеммку : есть 2 связанные таблицы, vladelec_hp И formy нужно создать временную таблицу по условию formy.data_vyd>=dat1 and formy.data_vyd<=dat2 dat1 и dat2 присвоены интервал- месяц, затем вывести в грид Пытаюсь сделать так: cREATE Cursor llcur (datvyd D ,fio C (30) ) scan for formy.data_vyd>=dat1 and formy.data_vyd<=dat2 INSERT INTO llcur (datvyd,fio) VALUES (formy.data_vyd, vladelec_hp.fam) endscan sele llcur ThisForm.grid1.recordsource = llcur.datvyd Thisform.grid1.Refresh() даты выводятся более менее, а вот с фио проблемма по всем графам только 1 фамилия, по форуму похожего ничего не нашел, и вообще как грамотно решить ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2008, 19:53 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
select formy.data_vyd, vladelec_hp.fam as fio from formy,vladelec_hp; into cursor llcur; where formy.data_vyd>=dat1 and formy.data_vyd<=dat2 sele llcur ThisForm.grid1.recordsource = llcur.datvyd Thisform.grid1.Refresh() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2008, 20:34 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
Забыл: Необходимо в where поставить условие об"единения двух таблиц (поля связи таблиц) типа formy.поле1=vladelec_hp.поле2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2008, 20:47 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
antonov60Забыл: Необходимо в where поставить условие об"единения двух таблиц (поля связи таблиц) типа formy.поле1=vladelec_hp.поле2 спасибо , похоже вот этого и не хватало. можно ли таким образом объединить данные из 4 таблиц, vladelec_hp И formy , vladelec_ur И formy2, связь установлена в первом случае vladelec_hp.ind_gl - formy.ind_gl , во втором vladelec_ur.ind_org - formy2.ind_org ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2008, 21:49 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
В общем случае все таблицы в выборке должны иметь между собой условие об'единения по соотв. полям, например 1<->2 and 1<->3 and 1<->4 или 1<->2 and 2<->3 and 3<->4 смотря как у Вас связаны таблицы 1 - 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2008, 22:12 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
суть в том, что пары таблиц из разных баз данных соответственно 1-4 не связаны, т.е. у первой пары vladelec_hp.ind_gl - formy.ind_gl (связь по полю ind_gl) , у второй vladelec_ur.ind_org - formy2.ind_org (связь по полю ind_org), между 1 и 2 парами свяей нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2008, 22:29 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
Вообще в первом случае с 2 таблицами проще создать Local wiev , что и сделал ,а вот с 4 !!!??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2008, 22:32 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
Тогда получится об'единение каждой записи из об"единения 1-2 и каждой записью из 3-4 т.е. невозможно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2008, 22:33 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
Вообщем мне нужно создать отчет по выданным документам на основе этих таблиц, т.е. дата -клиент, дата организация , может присоветуешь как такие вопросы решаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2008, 22:41 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
Об"единить две такие связки можно через Union, единственно, чтобы поля в выходной таблице были однотипными и с одинаковым названием ( через AS) например 1 поле - дата 2 поле - данные(симв.тип), куда можно загнать информ. об организации и о клиенте + отсортировать по дате через Sort by ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2008, 23:02 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
Эх ма , всю голову изломал, у меня vfp6, поэтому Union не проходит в результате родилось следующее из вышеназванных таблиц создаю 2 курсора lvhast и lvorgan которые нужно свести в 1 и вывести в report, в принципе получилось через промежуточную таблицу tabla: requery('lvorgan') requery('lvhast') local nrformy,nnr,nrformy2,nnr2 nrformy2=0 nnr=0 nnr2=0 nrformy=0 nrformy=reccount('lvhast') nrformy2=reccount('lvorgan') if nnr<>nrformy for nnr=1 to nrformy step 1 sele lvhast go record nnr sele tabla append blan replace tabla.dattt with lvhast.data_vyd replace tabla.names with ALLTRIM(lvhast.fam) endfor endif if nnr2<>nrformy2 for nnr2=1 to nrformy2 step 1 sele lvorgan go record nnr2 sele tabla append blan replace tabla.dattt with lvorgan.data_vyd replace tabla.names with lvorgan.name_org endfor endif requery('lvtabla') ThisForm.Grid4.Refresh() Может все это и против всех правил но работает, не судите строго. получилось то что и хотел, далее после получения отчета, для закрытия формы на кнопке 'выход' следующий код : SELECT tabla DELETE ALL pack sele lvtabla requery('lvtabla') ThisForm.Release() -pack обязателен , так как для следующего использования tabla должна быть физически очищена, в DE у tabla свойство Exclusive = t, в init формы set excl on, все равно ругается жутко "File must be opened exlusively", какого же не хватает???, буду благодарен за науку! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2008, 22:47 |
|
||
|
Курсор?
|
|||
|---|---|---|---|
|
#18+
> Эх ма , всю голову изломал, у меня vfp6, поэтому Union не проходит В каком месте не проходит???? Может все таки лучше день потерять, а потом за 5 минут долететь??? А ведь летать придется часто. И далеко. Это один из самых несложных вариантов, которые еще предстоит решать. select formy.data_vyd as dattt, vladelec_hp.fam as names; from formy inner join vladelec_hp on vladelec_hp.ind_gl = formy.ind_gl; where formy.data_vyd> between dat1 and dat2; union all; select formy.data_vyd as dattt, vladelec_ur.name_org as names; from formy2 inner join vladelec_ur on vladelec_ur.ind_org = formy2.ind_org; where formy2.data_vyd> between dat1 and dat2; into cursor tabla; > Может все это и против всех правил но работает, не судите строго. Да уж. Сильно разбираться не стал, ибо нечитабельно. Иными словами тот программист, который после тебя сядет на поддержку - прокленет все на свете. Да и сам ты не разберешься в этой чушне уже через месяц. > получилось то что и хотел, далее после получения отчета, для закрытия > формы на кнопке 'выход' > следующий код : > > SELECT tabla > DELETE ALL > pack Ну если надо ВСЕ УДАЛИТЬ - есть команда zap. Но с другой стороны, если в НАЧАЛЕ работы таблица должна быть пустой - сам бог велел использовать курсор!!! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2008, 05:57 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35291459&tid=1587827]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 413ms |

| 0 / 0 |
