Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / работа с таблицами / 4 сообщений из 4, страница 1 из 1
30.05.2014, 10:44
    #38656739
DANK_AN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами
Есть таблица table1. В ней поля Art,data,prim.
Есть таблица table2. В ней поля Artcd,sum.
Нужно в таблицу table1 скопировать поле sum из таблицы table2 при условии table1.Art=table2.Artcd


Спасибо!
...
Рейтинг: 0 / 0
30.05.2014, 15:21
    #38657160
pipos522
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами
Вот так можно попробовать
Код: sql
1.
SELECT Art, data_, prim_, sum_ FROM  Table_1, Table_2 WHERE Table_1.Art = Table_2.Artcd INTO CURSOR Table_1


+ для наглядности
Код: 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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
  WITH CREATEOBJECT("Form_1")
  	.show(1)
  ENDWITH
 DEFINE CLASS form_1 AS Form
    AutoCenter = .T.
  	Height     =  305
  	Width      =  500
  	Caption    = "Form_1"
  	Name       = "Form_1"
    BackColor  = RGB(245,243,222)

PROCEDURE load
  CREATE CURSOR table_1 (Art N(2), data_ D(8), prim_ C(15)) 
    INSERT INTO table_1 VALUES ( 1, DATE()   , 'Смирнов №1')
    INSERT INTO table_1 VALUES ( 1, DATE()-10, 'Смирнов №2')
    INSERT INTO table_1 VALUES ( 2, DATE()-20, 'Смирнов №3')
    INSERT INTO table_1 VALUES ( 2, DATE()-30, 'Смирнов №4')
    INSERT INTO table_1 VALUES ( 3, DATE()-40, 'Смирнов №5')
    GO TOP
  CREATE CURSOR table_2 (Artcd N(2), sum_ N(5)) 
    INSERT INTO table_2 VALUES ( 1, 1    )
    INSERT INTO table_2 VALUES ( 1, 12   )
    INSERT INTO table_2 VALUES ( 2, 123  )
    INSERT INTO table_2 VALUES ( 2, 1234 )
    INSERT INTO table_2 VALUES ( 3, 12345)
    GO TOP
    
ENDPROC



 PROCEDURE Init
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*  LABEL
 This.AddObject('Label_1','Label')
 WITH This.Label_1
     .BackStyle= 0
     .Visible  = .T.
     .TOP      = 10
     .LEFT     = 10
     .Height   = 20
     .Width    = 500
     .Alignment = 2
     .Caption  = 'Простое копирование!'
 ENDWITH
 This.AddObject('Label_2','Label')
 WITH This.Label_2
     .BackStyle= 0
     .Visible  = .T.
     .TOP      = 40
     .LEFT     = 0
     .Height   = 20
     .Width    = 250
     .Alignment = 2
     .Caption  = 'Table_1'
 ENDWITH
  This.AddObject('Label_3','Label')
 WITH This.Label_3
     .BackStyle= 0
     .Visible  = .T.
     .TOP      = 40
     .LEFT     = 250
     .Height   = 20
     .Width    = 250
     .Alignment = 2
     .Caption  = 'Table_2'
 ENDWITH
 
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* GRID
This.AddObject('Grid_1','Grid')
WITH This.Grid_1
 .Height = 200
 .Width  = 230
 .AllowCellSelection = .F. 
 .Top          =  70
 .Left         =  10
 .Visible      = .T. 
 .DeleteMark   = .F.
 .RecordMark   = .F.
 .ReadOnly     = .T.
 .ScrollBars   =  2
 .ColumnCount  =  3
 .HeaderHeight =  0
 .RecordSource = 'Table_1'
 .column1.ControlSource = 'Art'
 .column2.ControlSource = 'data_'
 .column3.ControlSource = 'prim_'
 .column1.width = 50
 .column2.width = 70
 .column3.width = 70
 .column1.Resizable = .F.
 .column2.Resizable = .F.
 .column3.Resizable = .F.
 .column1.Alignment = 4
 .column2.Alignment = 4
 .column3.Alignment = 4
ENDWITH
This.AddObject('Grid_2','Grid')
WITH This.Grid_2
 .Height = 200
 .Width  = 230
 .AllowCellSelection = .F. 
 .Top          =  70
 .Left         =  260
 .Visible      = .T. 
 .DeleteMark   = .F.
 .RecordMark   = .F.
 .ReadOnly     = .T.
 .ScrollBars   =  2
 .ColumnCount  =  2
 .HeaderHeight =  0
 .RecordSource = 'Table_2'
 .column1.ControlSource = 'Artcd'
 .column2.ControlSource = 'sum_'
 .column1.width = 50
 .column2.width = 70
 .column1.Resizable = .F.
 .column2.Resizable = .F.
 .column1.Alignment = 4
 .column2.Alignment = 4
ENDWITH
* Artcd N(2), sum_ N(5)) 

*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* CommandButton 1
 ThisForm.AddObject('com_1','CommandButton_1')
 WITH ThisForm.com_1
     .Caption = 'Скопировать'
     .default = .T.
     .Visible  = .T. 
     .TOP      = 275
     .LEFT     = 200
     .Height   = 25
     .Width    = 100
 ENDWITH


 ENDPROC
 ENDDEFINE
*================================================================*

DEFINE CLASS CommandButton_1 as CommandButton
PROCEDURE click

SELECT Art, data_, prim_, sum_ FROM  Table_1, Table_2 WHERE Table_1.Art = Table_2.Artcd INTO CURSOR Table_1
WITH ThisForm.Grid_1
 .Height = 200
 .Width  = 230
 .AllowCellSelection = .F. 
 .Top          =  70
 .Left         =  10
 .Visible      = .T. 
 .DeleteMark   = .F.
 .RecordMark   = .F.
 .ReadOnly     = .T.
 .ScrollBars   =  2
 .ColumnCount  =  4
 .HeaderHeight =  0
 .RecordSource = 'Table_1'
 .column1.ControlSource = 'Art'
 .column2.ControlSource = 'data_'
 .column3.ControlSource = 'prim_'
 .column4.ControlSource = 'sum_'
 .column1.width = 15
 .column2.width = 70
 .column3.width = 80
 .column4.width = 45
 .column1.Resizable = .F.
 .column2.Resizable = .F.
 .column3.Resizable = .F.
 .column4.Resizable = .F.
 .column1.Alignment = 4
 .column2.Alignment = 4
 .column3.Alignment = 4
 .column4.Alignment = 4
ENDWITH      

      
ThisForm.Refresh 
ENDPROC

...
Рейтинг: 0 / 0
30.05.2014, 16:00
    #38657225
pipos522
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами
pipos522, редактировать жалко нельзя, вот та наглядней (в примере заменить)
Код: sql
1.
2.
3.
4.
5.
6.
   CREATE CURSOR table_2 (Artcd N(2), sum_ N(5)) 
    INSERT INTO table_2 VALUES ( 1, 1    )
    INSERT INTO table_2 VALUES ( 2, 12   )
    INSERT INTO table_2 VALUES ( 3, 123  )
    INSERT INTO table_2 VALUES ( 4, 1234 )
    INSERT INTO table_2 VALUES ( 5, 12345)
...
Рейтинг: 0 / 0
31.05.2014, 13:16
    #38657672
SSn888
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами
pipos522,

Я правильно понял - именно скопировать, добавив значения к имеющимся записям?
Но куда копировать, ведь в получателе нет такого поля?

Если бы было (предполагаю также и наличие индекса на поле Artcd)

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT table2 
   SET ORDER TO Artcod

SELECT table1
   SET RELATION TO art INTo table2
      REPLACE ALL table1.Sum WITH table2.Sum
   SET RELATION TO
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / работа с таблицами / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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