powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как обьединить таблицы чтобы не повторялись записи
11 сообщений из 36, страница 2 из 2
как обьединить таблицы чтобы не повторялись записи
    #39938763
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это набросок, может где-то ошибся:
Код: sql
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
select table1
HEADER_SIZE = 3 && Задаем размер шапки отчета.
lnCurrentRow = HEADER_SIZE + 1 && Счетчик строк.
scan
   lcCurrentTNOM = table1.tnom
   select * from vr_k where tnom = lcCurrentTNOM into cursor firstPart
       lnSize1 =  _tally
       if !empty(lnSize1)
           * вставляем данные в нужные строки.
           seelct firstPart
           i = 0
           scan
                 i = i + 1;
                 lnTnom = firstPart.tnom
                 lnSmK   = firstPart.sm_k
                 ....
                  m.XLSheet.Cells(lnCurrentRow + i, 1).Value = lnTnom 
                  m.XLSheet.Cells(lnCurrentRow + i, 2).Value = lnSmK
                  ....
           endscan
       endif 
   select * from vr_d where tnom = lcCurrentTNOM into cursor secondPart
       lnSize2 =  _tally
       if !empty(lnSize2)
           * вставляем данные в нужные строки.
           seelct secondPart
           i = 0
           scan
                 i = i + 1;
                 lnTnom = secondPart.tnom
                 lnSmD  = secondPart.sm_D
                 ....
                  m.XLSheet.Cells(lnCurrentRow + i, 1).Value = lnTnom 
                  m.XLSheet.Cells(lnCurrentRow + i, 2).Value = lnSmD
                  ...
           endscan
       endif 
       if lnSize1>lnSize2
          lnCurrentRow = lnCurrentRow + lnSize1
      else 
          lnCurrentRow = lnCurrentRow + lnSize2      
      endif 
endscan 
...
Рейтинг: 0 / 0
как обьединить таблицы чтобы не повторялись записи
    #39938766
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не знаете как работать с Excel из FoxPro, посмотрите например в книге Visual FoxPro 9.0. . Или погуглите в сети.
...
Рейтинг: 0 / 0
как обьединить таблицы чтобы не повторялись записи
    #39938771
hOlushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
faustgreen, спасибо большое, буду пробовать и изучать)
...
Рейтинг: 0 / 0
как обьединить таблицы чтобы не повторялись записи
    #39938772
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вам простой пример, который вы можете скопировать и запустить:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
OEXCEL = CREATEOBJECT("Excel.Application")  && Создается объект Excel.

OEXCEL.VISIBLE = .T.                                                   && Делаем Excel видимым.
OEXCEL.WORKBOOKS.ADD                                            && Добавляем новую книгу. 
OEXCEL.DISPLAYALERTS = .F.                                       && Отключаем предупреждения.  

OEXCEL.SHEETS(1).SELECT                                            && Выбираем первый лист.

OEXCEL.CELLS(1,1).Value = "Hello"                                 && В ячейку 1:1 (Строка 1- колонка 1) выводим текст "Hello"
OEXCEL.CELLS(1,2).Value = "Hello"
OEXCEL.CELLS(1,3).Value = "Hello"
OEXCEL.CELLS(1,4).Value = 1
OEXCEL.CELLS(1,5).Value = 2
OEXCEL.CELLS(1,6).Value = 3



Он довольно примитивный, но вы так быстрее поймете суть, ну а дальше копайте ...
...
Рейтинг: 0 / 0
как обьединить таблицы чтобы не повторялись записи
    #39938779
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант, чтобы получить полноценный ключ, добавить поле с номером записи row
tnomrowsm_k18461476.751846240.14

во второй:
tnomrowsm_d1846121.791846218.16184630.19
т.е. row внутри каждого значения tnom начинается с 1

Тогда
Код: sql
1.
FULL JOIN t1.tnom = t2.tnom and t1.row = t2.row


даст то что требуется
hOlushka
faustgreen
А Вы наверное хотите получить такой результат?:
tnom_a sm_k tnom_b sm_d1846 476.75 1846 21.791846 40.14 1846 18.161846 0 1846 0.19

да, именно это мне и надо. это все делается в foxpro. про эксель я написала, чтоб для примера как хотелось бы...
...
Рейтинг: 0 / 0
как обьединить таблицы чтобы не повторялись записи
    #39938792
hOlushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
Как вариант, чтобы получить полноценный ключ, добавить поле с номером записи row
tnomrowsm_k18461476.751846240.14


во второй:
tnomrowsm_d1846121.791846218.16184630.19
т.е. row внутри каждого значения tnom начинается с 1

Тогда
Код: sql
1.
FULL JOIN t1.tnom = t2.tnom and t1.row = t2.row


даст то что требуется
hOlushka
пропущено...

да, именно это мне и надо. это все делается в foxpro. про эксель я написала, чтоб для примера как хотелось бы...



вот что олучается, тогда надо id и tnom чтобы были одинаковые у двух таблиц... я так понимаю, связать их.....
...
Рейтинг: 0 / 0
как обьединить таблицы чтобы не повторялись записи
    #39938797
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hOlushka, Вы неправильно поняли, Dima T, предлагал проставить ID не для всей таблицы, а для каждого tnom:
tnom id1486 11486 21486 31503 11503 21556 11600 11600 21600 31600 4
...
Рейтинг: 0 / 0
как обьединить таблицы чтобы не повторялись записи
    #39938799
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hOlushka
вот что олучается, тогда надо id и tnom чтобы были одинаковые у двух таблиц... я так понимаю, связать их.....

Внимательнее читать надо, я же писал "row внутри каждого значения tnom начинается с 1"

т.е. так
tnomrowsm_k18461476.751846240.14 304815.403048228.804024112.30
...
Рейтинг: 0 / 0
как обьединить таблицы чтобы не повторялись записи
    #39938800
hOlushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
hOlushka
вот что олучается, тогда надо id и tnom чтобы были одинаковые у двух таблиц... я так понимаю, связать их.....

Внимательнее читать надо, я же писал "row внутри каждого значения tnom начинается с 1"

т.е. так
tnomrowsm_k18461476.751846240.14 304815.403048228.804024112.30

ой, не внимательно, точно... помню такое было... счас поробую.
...
Рейтинг: 0 / 0
как обьединить таблицы чтобы не повторялись записи
    #39938819
hOlushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем ОГРОМНОЕ СПАСИБО!!! все получилось. вот результат. То, что мне и надо было.
...
Рейтинг: 0 / 0
как обьединить таблицы чтобы не повторялись записи
    #39938820
hOlushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как обьединить таблицы чтобы не повторялись записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]