Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление столбца / 12 сообщений из 12, страница 1 из 1
10.01.2010, 12:36
    #36402234
Attlet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
Здравствуйте.
У меня следующий вопрос, есть две таблицы
В одной кадровая информация, в другой информация для расчёта з/п
Мне нужно, обнавить новое число работников для второй таблицы.

Пробовал с помощью Replace, но у меня не обновляется.Пробовал сканировать все записи, не помогает, обновляется первая по значению последней из другой таблицы
Индексов в таблицах нет.
...
Рейтинг: 0 / 0
10.01.2010, 12:38
    #36402236
Attlet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
Attlet,

Я так понимаю, что replace all тлько для ровного количества записей в двух таблицах?
...
Рейтинг: 0 / 0
10.01.2010, 14:08
    #36402298
Attlet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
Вот ещё пробую так:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT табл1
scan
 select табл2
 append blank
 replace ст1 with табл1.ст1
 select табл1
endscan
Всё получается, только на верх данных. Т.е. предыдущие записи в таблице тоже остались.
Это для обновление нужно очищать старые записи.
А как сделать, чтобы старые данные заменялись на новые, без предварительной очистки
...
Рейтинг: 0 / 0
10.01.2010, 14:51
    #36402335
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
Попробуйте подумать вот над каким вопросом. Когда указатель записи находится на какой-либо записи первой таблицы, то где находится указатель записи второй таблицы? Т.е. что именно Вы пытаетесь записать как новое значение.

И еще, Вы не пробовали читать HELP по команде APPEND? Что именно она делает? А что Вам надо сделать?
...
Рейтинг: 0 / 0
10.01.2010, 16:01
    #36402411
Attlet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
ВладимирМ,

append blank добавляет новые записи
Или как?
мне же, что бы добавить новые записи, нужно их вставить

А про курсор:
Получается нужно курсор поместить на первую запись, а потом обновлять?
...
Рейтинг: 0 / 0
10.01.2010, 16:17
    #36402422
Attlet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
Attlet,
Ой, сам наморозил)
Не курсор а указатель записи
...
Рейтинг: 0 / 0
10.01.2010, 16:28
    #36402429
Attlet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
ВладимирМ,

Всё, немного понял.
У меня получается
Код: plaintext
APPEND blank
добавляет все записи из одной таблицы, в конец второй

Эту комманду никак не применить, или можно куда-нить
Код: plaintext
go top
вставить?
Помогите новичку
...
Рейтинг: 0 / 0
10.01.2010, 17:52
    #36402483
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
Так Вы свое собственное задание внимательно прочитайте.

- Есть таблица, содержащая информацию по расчете зарплаты.
- Есть таблица кадров, которая была каким-то образом изменена.

Необходимо перенести те модификации, которые были сделаны в таблице кадров в таблицу зарплат. Какие модификации вообще могут быть у таблиц?

1. Изменение содержимого полей
2. Добавление новых записей
3. Удаление существующих записей

Значит, первое, что надо сделать, это найти соответствия. Т.е. какая запись таблицы зарплат, соответствует какой записи таблицы кадров. Далее уже можно делать некие выводы:

1. Если есть связанные пары записей, то надо выполнить модификацию.
2. Если есть запись в таблице зарплат, но нет записей в таблице кадров, надо удалить запись таблицы заплат
3. Если нет записи в таблице зарплат, но есть запись в таблице кадров, надо добавить запись в таблицу зарплат.

Другими словами, основа подобной синхронизации - это связь таблиц. Вот с этого и надо начинать. Каким образом физически реализуется подобная связь? Через специальные поля - идентификаторы записей. Внешние и первичные ключи. Т.е Вам надо определится через какие поля (возможно, таблицу-посредник) связана таблица заплат и таблица кадров.
...
Рейтинг: 0 / 0
10.01.2010, 18:02
    #36402487
Attlet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
ВладимирМ,
Смысл улавливаю, но т.к я только начинающий (или чайник), никак не могу додуматься до кода.

Понимаю, что как-то так
Код: plaintext
1.
2.
3.
4.
5.
scan
if табл1.ст1=табл2.ст1
else
replace ст1 with табл2.ст1
endif
 

Честно никаких мыслей(((((((
...
Рейтинг: 0 / 0
10.01.2010, 20:20
    #36402572
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
Attlet, я б на вашем месте вообще бы завязал и не делал это. Так будет проще. Всем.
...
Рейтинг: 0 / 0
10.01.2010, 21:41
    #36402627
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
Ну, если рассматривать "на низком уровне", то это будет примерно так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
* Переходим в рабочую область первой таблицы
select tab1
* Организуем последовательный перебор всех записей первой таблицы
scan
    * Для каждой записи первой таблицы ищем связанную с ней запись во второй таблице
    select tab2
    locate for FieldKey = tab1.FieldKey

    * Если такая запись найдена, то выполняю ее модификацию
    if found() = .T.
        replace ...
    else
        * Если такая запись не существует, то создаю ее
        append blank
        * И заполняю данными из связанной записи
        replace ...
    endif
endscan

* Далее, если необходимо, можно организовать цикл по второй таблице, 
* чтобы найти записи, которых нет в первой и удалить их.

Разумеется, есть набор команд, позволяющих избежать подобного ручного сканирования. Т.е. есть команды, способные выполнить модификации сразу по всем записям. Ну, или как минимум, существенно ускорить выполнение приведенного кода.

Но основа всего этого - это связь между таблицами. Т.е. по какому полю или набору полей будет выполняться поиск той записи, которую надо изменить.
...
Рейтинг: 0 / 0
10.01.2010, 22:05
    #36402650
Attlet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление столбца
ВладимирМ,
Большое спасибо!

Очень много книг по програмированию просматривал, две прочитал.
Теории немножко есть, а вот код какой-нить написать тяжело.
Очень мало хороших примеров. В основном примеры однотипные.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление столбца / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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