Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
31.08.2011, 03:53
|
|||
---|---|---|---|
|
|||
Перенос данных |
|||
#18+
Доброго времени суток, уважаемые форумчане Помогите решить проблему: Есть две БД - 1.dbf и 2.dbf (см. приложение) необходимо реализовать распределение данных из 1 в 2 в зависимости от id и usl, т.е. табл 1: строка 1: id = 1, находим id в табл.2, таблица 1 если usl = 'О' в табл 2 записываем sum в sum_o, переписываем dat табл 1: строка 2: id = 1, находим id в табл.2, таблица 1 если usl = 'A' в табл 2 записываем sum в sum_a табл 1: строка 3: id = 2, находим id в табл.2, таблица 1 если usl = 'О' в табл 2 записываем sum в sum_o табл 1: строка 4: id = 5, находим id в табл.2, таблица 1 если usl = 'О' в табл 2 записываем sum в sum_o ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2011, 06:38
|
|||
---|---|---|---|
Перенос данных |
|||
#18+
Как пытался задачу порешать? Что конкретно не получилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2011, 07:26
|
|||
---|---|---|---|
|
|||
Перенос данных |
|||
#18+
Dima T, примерно так: SELECT 2 GO TOP DO WHILE !EOF() LOCATE FOR 1.id = 2.id IF !EOF() IF 1.usl = "A" THEN SELECT 3 replace 2.sum_a WITH 1.sum, 2.DAT WITH 1.DAT replace 2.sum WITH 2.sum_a+2.sum_o ENDIF SELECT 2 SKIP ENDIF ENDDO ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2011, 08:22
|
|||
---|---|---|---|
Перенос данных |
|||
#18+
1. Не надо называть таблицы цифрами, имя должно с буквы начинаться, иначе проблемы с переключением между рабочими областями командой SELECT, т.к. она цифру воспринимает как номер области, а не название таблицы. Если уж цифрами названо и это никак не поменять то так открывать: Код: plaintext
2. Код пытался осмыслить? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2011, 08:27
|
|||
---|---|---|---|
Перенос данных |
|||
#18+
Не заметил, зациклится если не найдет, еще надо в конце SKIP за ENDIF вынести Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
В фоксе есть цикл SCAN который аналогичен DO WHILE !EOF() со SKIP, т.е. так Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2011, 08:41
|
|||
---|---|---|---|
|
|||
Перенос данных |
|||
#18+
Dima T, спасибо, сейчас попробую я только учусь, поэтому такие странности возникают ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.08.2011, 11:17
|
|||
---|---|---|---|
|
|||
Перенос данных |
|||
#18+
npp2202, вот что получилось (вместе с реальнымим ключами и именами БД) SELECT reestr GO TOP DO WHILE !EOF() SELECT oplat replace oplat.sum_v WITH IIF(reestr.usl = 'ВОДА', reestr.sum, oplat.sum_v); oplat.sum_k WITH IIF(reestr.usl = 'ВОДО', reestr.sum, oplat.sum_k); oplat.sum WITH oplat.sum_v + oplat.sum_k SELECT reestr skip Спасибо за помощь ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=41&mobile=1&tid=1584187]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 282ms |
total: | 411ms |
0 / 0 |