Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на обновление/добавление / 25 сообщений из 31, страница 1 из 2
19.08.2004, 12:04:27
    #32656403
Татьяна Валерьевна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Проблема вот в чем: существуют 2 запроса. Их нужно объединить так, чтобы в объединенный запрос входили ВСЕ записи из первого и из второго (часть записей во 2 запросе уникальны и по ключу не совпадут с первым).
Что можно сделать?
...
Рейтинг: 0 / 0
19.08.2004, 12:05:21
    #32656410
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
UNION SELECT
...
Рейтинг: 0 / 0
19.08.2004, 12:34:36
    #32656502
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Татьяна Валерьевначасть записей во 2 запросе уникальны и по ключу не совпадут с первым
Стало быть другая часть совпадет, а потому Union All
...
Рейтинг: 0 / 0
19.08.2004, 13:24:12
    #32656671
маяк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Татьяна Валерьевначасть записей во 2 запросе уникальны и по ключу не совпадут с первымВот это совершенно неважно. Только, упаси Г-сподь, не трогайте запросы на обновление и добавление - что-то мне подсказывает, что в этом случае вашим данным очень скоро придёт каюк...
...
Рейтинг: 0 / 0
19.08.2004, 13:31:17
    #32656699
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Непонятно как записи должны быть объединены - вертикально или горизонтально.
Быть может не Union/Union All требуется, а Join/Left Join/Right Join/Full Outer Join
...
Рейтинг: 0 / 0
19.08.2004, 13:38:51
    #32656730
маяк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Лох ПозорныйНепонятно как записи должны быть объединены - вертикально или горизонтально.
Быть может не Union/Union All требуется, а Join/Left Join/Right Join/Full Outer JoinНу, этого мы, полагаю, уже никогда не узнаем. Татьяна Валерьевна зарегистрировалась, задала вопрос и забыла про sql.ru как про страшный сон, оставив нам тему для флуда %)
...
Рейтинг: 0 / 0
19.08.2004, 21:30:43
    #32657851
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Видать убила все-таки... :(
...
Рейтинг: 0 / 0
20.08.2004, 08:02:59
    #32658015
Татьяна Валерьевна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Нет уважаемые, это запросы меня добили. Вчера убила полдня на то, чтобы написать этот "шедевр"
Public Sub бал()
Dim баланс_металла As Recordset, остаток_вх As Recordset, s As String
Set баланс_металла = CurrentDb.OpenRecordset("баланс_металла", dbOpenDynaset)
Set остаток_вх = CurrentDb.OpenRecordset("остаток_вх")
остаток_вх.MoveFirst
Do While Not остаток_вх.EOF
s = "[номном]=" & str(остаток_вх![номном])
баланс_металла.FindFirst (s)
If баланс_металла.NoMatch = False Then
баланс_металла.Edit
баланс_металла![наименование] = остаток_вх![наименование]
баланс_металла.Update
Else
баланс_металла.MoveLast
баланс_металла![номном] = остаток_вх![номном]
баланс_металла![наименование] = остаток_вх![наименование]
баланс_металла.Update
End If
остаток_вх.MoveNext
Loop
баланс_металла.Close
остаток_вх.Close
End Sub
НО ОН, ЗАРАЗА, НЕ РАБОТАЕТ!!!! Конкретно ругается на ф-ию FindFirst
ПОМОГИТЕ ЧЕМ МОЖЕТЕ!!!
...
Рейтинг: 0 / 0
20.08.2004, 09:08:21
    #32658073
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Опа.
FindFirst в цикле :(
Нет внутри цикла надо делать FindNext

И, ваще, эти функции тормознутые
Я в таких случаях сразу делаю нужную выборку (т.е. добавляю к запросу WHERE) - Советую!!!
...
Рейтинг: 0 / 0
20.08.2004, 09:16:51
    #32658087
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Хотя нет - наврал
Плохо цикл прочитал :(
Но все равно как-то мне это не нравиться

Предположу
1. По else (ИМХО) надо делать не MoveLast, а AddNew
2. Может это можно одним запросом сделать?
Код: plaintext
1.
2.
3.
4.
5.
6.
Select
остаток_вх.номном as num1,
остаток_вх.наименование as name1,
баланс_металла.номном as num2,
баланс_металла.номном as name2
From остаток_вх Left join баланс_металла
On остаток_вх.номном = баланс_металла.номном
Не то?
...
Рейтинг: 0 / 0
20.08.2004, 09:54:06
    #32658147
amel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Как писали выше, нужно сделать вот так:
Select остаток_вх.номном, остаток_вх.наименование from остаток_вх
Union select баланс_металла.номном, баланс_металла.наименование from баланс_металла
...
Рейтинг: 0 / 0
20.08.2004, 11:16:40
    #32658413
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
AmelКак писали выше, нужно сделать вот так:
Select остаток_вх.номном, остаток_вх.наименование from остаток_вх
Union select баланс_металла.номном, баланс_металла.наименование from баланс_металла
ИМХО - не в тему
И как это прикрутить к тому что девушке надо?
...
Рейтинг: 0 / 0
20.08.2004, 11:21:34
    #32658429
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Вместо
Код: plaintext
баланс_металла.FindFirst (s)
Следует писать
Код: plaintext
баланс_металла.FindFirst s
...
Рейтинг: 0 / 0
20.08.2004, 11:23:31
    #32658440
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
В условии Else попытка сделать Update рекордсета без AddNew или Edit
...
Рейтинг: 0 / 0
20.08.2004, 11:25:02
    #32658444
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
И наконец не ясно почему это делается через рекордсеты, а не через запрос.
...
Рейтинг: 0 / 0
20.08.2004, 12:33:41
    #32658698
Татьяна Валерьевна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Уважаемый Vsevolod, - FindFirst (s) работает так же как и FindFirst s - т.е. не работает!
А зачем мне нужен цикл - по старой привычке, чтоб наверняка.
Предыдущие советы тоже не помогли. Может что-то с самого начала не так.
Еще версии есть, или уже не ждать?
...
Рейтинг: 0 / 0
20.08.2004, 12:59:39
    #32658804
SRG
SRG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
авторКонкретно ругается на ф-ию FindFirst

А как КОНКРЕТНО он ругается?
...
Рейтинг: 0 / 0
20.08.2004, 13:04:29
    #32658820
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Мадам, вы начали с какого-то непонятного вопроса по SQL-запросу, так и не объяснили что же вам в итоге надо, незаметно перескочили на совершенно не связанный с запросом VBA-код с какой-то ошибкой, так и не объяснили что же за ошибка, и теперь спрашиваете - ждать ли еще версий??? Ну ждите...
...
Рейтинг: 0 / 0
20.08.2004, 13:08:13
    #32658837
amel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
paparome:))
>существуют 2 запроса. Их нужно объединить так, чтобы в объединенный >запрос входили ВСЕ записи из первого и из второго (часть записей во 2 >запросе уникальны и по ключу не совпадут с первым).

Уважаемый paparome! То ли я читать разучился, то ли вопрос сформулирован по тупому!?
...
Рейтинг: 0 / 0
20.08.2004, 13:10:52
    #32658844
Татьяна Валерьевна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Уточняю (хотя кому это интересно?): Есть 4 таблицы. Данные из них переписываются в общую по принципу - если есть запись с таким №(номном), заполняется определенное поле, если нет записи - она добавляется и опять таки заполняются поля. Поля во всех таблицах разные, в общей таблице есть они все.
Цикл вроде бы простой, но сделать это в ACCESSe я уже отчаялась!
...
Рейтинг: 0 / 0
20.08.2004, 13:16:28
    #32658859
Татьяна Валерьевна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
SRG авторКонкретно ругается на ф-ию FindFirst

А как КОНКРЕТНО он ругается?

Method or data member not found
...
Рейтинг: 0 / 0
20.08.2004, 13:16:48
    #32658861
amel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
По моему тут уже писали выше все можно сделать одним запросом left join + insert table методом execute: выбираешь все записи, которых нет left join и вставляешь в нужную табл.
...
Рейтинг: 0 / 0
20.08.2004, 13:18:40
    #32658864
Daf
Daf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
А как у вас обстоят дела с сылками на библиотеки? Нет ли потерянных?
...
Рейтинг: 0 / 0
20.08.2004, 13:20:14
    #32658867
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
это можно сделать двумя запросами или одним циклом, в котором только edit-update.

сделайте один рекордсет, представляющий собой Левое соединение
"остаток_вх" с "баланс_металла" по "[номном]" , редактируйте поля, соответствующие "баланс_металла"
не помню - в параметрах запроса может потребоваться dbInconsistent

(с выражением лица)
...
Рейтинг: 0 / 0
20.08.2004, 13:25:15
    #32658882
sposad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на обновление/добавление
Код: plaintext
s = "[номном]='" & str(остаток_вх![номном]) & "'"

попробуйте вот так, если, конечно, хотите продолжить борьбу с циклом. И вообще я бы не применял русские буквы в названиях полей.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на обновление/добавление / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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