Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нид Хелп / 14 сообщений из 14, страница 1 из 1
04.10.2010, 18:31
    #36881033
Нид Хелп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Хочу заменить маршрут в таблице Reestr из таблицы oldroute, ерунда получается: берет верхний маршрут из таблицы и заменяет им всех.

Dim Reestr As Recordset
Set db = CurrentDb
Dim rt As String
Dim oldroutes As Recordset

Set Reestr = db.OpenRecordset("SELECT DISTINCTROW Reestr.* FROM Reestr LEFT JOIN oldroutes ON Reestr.Customer = oldroutes.ID WHERE Reestr.Route Not Like 'C*' AND Reestr.Location='nizhniy'")
Set oldroutes = db.OpenRecordset("SELECT DISTINCTROW oldroutes.*FROM oldroutes ;")

Reestr.MoveFirst
Do Until Reestr.EOF

Reestr.Edit
Reestr![Route] = oldroutes![Route after]
Reestr.Update

Reestr.MoveNext
Loop
Reestr.Close
...
Рейтинг: 0 / 0
04.10.2010, 18:51
    #36881073
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Нид Хелп,

Делает то, что вы сказали:
Код: plaintext
Reestr![Route] = oldroutes![Route after]
Всем строкам в Reestr присваивает неизменный oldroutes![Route after]
...
Рейтинг: 0 / 0
04.10.2010, 18:52
    #36881076
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Shocker.Pro,

А вообще, изучите синтаксис SQL-команды UPDATE.
Это делается единственным SQL-запросом и работает раз в двести быстрее, чем ваш код.
...
Рейтинг: 0 / 0
04.10.2010, 19:00
    #36881089
Нид Хелп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Shocker.ProShocker.Pro,

А вообще, изучите синтаксис SQL-команды UPDATE.
Это делается единственным SQL-запросом и работает раз в двести быстрее, чем ваш код.

пробовал(((( не получается, подскажи плиз сам синтаксис
...
Рейтинг: 0 / 0
04.10.2010, 19:13
    #36881113
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Нид Хелппробовал(((( не получается, подскажи плиз сам синтаксис
Ну из твоего дурного кода неясно, что ты хочешь сделать

возможно это:
Код: plaintext
1.
2.
UPDATE Reestr SET Reestr.Route=oldroutes.[Route after]
FROM Reestr LEFT JOIN oldroutes ON Reestr.Customer = oldroutes.ID
WHERE Reestr.Route Not Like 'C*' AND Reestr.Location='nizhniy'
...
Рейтинг: 0 / 0
04.10.2010, 19:30
    #36881136
Нид Хелп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Shocker.Pro,

пишет syntax error.

хочу заменить route в таблице Reestr из таблицы oldroute по ид клиента (ID, customer)
...
Рейтинг: 0 / 0
04.10.2010, 19:32
    #36881138
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Нид Хелппишет syntax error.
кто пишет?
...
Рейтинг: 0 / 0
04.10.2010, 19:46
    #36881163
Нид Хелп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Shocker.Pro,

UPDATE Reestr LEFT JOIN oldroutes ON Reestr.Customer = oldroutes.ID SET Reestr.Route = [oldroutes].[Routeafter]
WHERE (((Reestr.Route) Not Like "C*") AND ((Reestr.Location)="nizhniy"));

так получилось, НО по клиентам, которых нет в файле oldroute данные вообще пропадают
...
Рейтинг: 0 / 0
04.10.2010, 19:50
    #36881168
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Нид ХелпShocker.Pro,

UPDATE Reestr LEFT JOIN oldroutes ON Reestr.Customer = oldroutes.ID SET Reestr.Route = [oldroutes].[Routeafter]
WHERE (((Reestr.Route) Not Like "C*") AND ((Reestr.Location)="nizhniy"));

так получилось

А-а-а. Аксессовский диалект

Нид Хелп НО по клиентам, которых нет в файле oldroute данные вообще пропадают

Ну так ты ж сам поставил LEFT JOIN
поставь INNER и будет тебе щастье
...
Рейтинг: 0 / 0
04.10.2010, 20:07
    #36881192
Нид Хелп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Shocker.Pro,

а вот тут нужна подсказка:
в таблице reestr одни и теже customers могут повторяться (детализация по товару, дате и количеству), а в таблице oldroute ID клиента в одном экземпляре. что ставить Inner или Left?
...
Рейтинг: 0 / 0
04.10.2010, 20:22
    #36881208
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
это:
Нид Хелпв таблице reestr одни и теже customers могут повторяться (детализация по товару, дате и количеству), а в таблице oldroute ID клиента в одном экземпляре.
и это:
Нид Хелпчто ставить Inner или Left?
из разных опер (вопрос некорректен). Записи с ключом (oldroute) повторяться будут в обоих случаях
...
Рейтинг: 0 / 0
04.10.2010, 20:31
    #36881217
Нид Хелп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Shocker.Pro,

тогда что должно быть основой выбора того или иного способа связи?
...
Рейтинг: 0 / 0
04.10.2010, 20:35
    #36881219
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Нид Хелптогда что должно быть основой выбора того или иного способа связи?

Нужны ли тебе записи из Reestr, которым не соответствует ни одна запись из oldroute.

Ты сказал, что не нужны, я и сказал - замени LEFT на INNER
А вообще, может почитаешь основы синтаксиса SQL? а то мы так долго можем
...
Рейтинг: 0 / 0
04.10.2010, 21:13
    #36881241
Нид Хелп
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нид Хелп
Shocker.Pro,

Спасибо, очень помог
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нид Хелп / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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