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

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

Я так понимаю, что replace all тлько для ровного количества записей в двух таблицах?
...
Рейтинг: 0 / 0
Обновление столбца
    #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
Обновление столбца
    #36402335
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте подумать вот над каким вопросом. Когда указатель записи находится на какой-либо записи первой таблицы, то где находится указатель записи второй таблицы? Т.е. что именно Вы пытаетесь записать как новое значение.

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

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

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

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

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

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

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

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

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

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

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

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

Честно никаких мыслей(((((((
...
Рейтинг: 0 / 0
Обновление столбца
    #36402572
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Attlet, я б на вашем месте вообще бы завязал и не делал это. Так будет проще. Всем.
...
Рейтинг: 0 / 0
Обновление столбца
    #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
Обновление столбца
    #36402650
Attlet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,
Большое спасибо!

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


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