Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / запрос на удаление / 25 сообщений из 71, страница 1 из 3
03.10.2003, 23:10
    #32283867
marina_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
Ох. Есть запрос на удаление:

DELETE otchet.*, otchet.OPERATE
FROM otchet
WHERE (((otchet.OPERATE)="4"));

если у нас есть такие записи:

price operate quanty
1------0-------9
2------1-------5
8------4-------7
7------0-------1

то запрос удалит строку 8------4-------7
а как его заставить при этом еще и 2------1-------5 удалить?
т.е. чтобы он по 2 строки удалял...
...
Рейтинг: 0 / 0
03.10.2003, 23:17
    #32283874
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
а как его заставить при этом еще и 2------1-------5 удалить?
т.е. чтобы он по 2 строки удалял...

Не очень понятный вопрос.

Мб переписать его

DELETE otchet.*
FROM otchet
WHERE otchet.OPERATE="4" or otchet.OPERATE="1";

Если ты это имеешь в виду. А если надо удалять предыдущую строку - это уже проблемно. Тогда для начала выкладывай структуру otchet
...
Рейтинг: 0 / 0
03.10.2003, 23:25
    #32283878
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
Достаточно
Код: plaintext
Delete From otchet where ....
...
Рейтинг: 0 / 0
03.10.2003, 23:29
    #32283879
marina_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2 VIG
Простите, не поняла...

2 Geo
в смысле - структуру таблицы?
какие там есть поля и какого они типа?
...
Рейтинг: 0 / 0
03.10.2003, 23:33
    #32283883
Артист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2marina_spb
тебе надо удалять строку по условию и предыдущию????
если это действительно так то можно рекордсетом...
...
Рейтинг: 0 / 0
03.10.2003, 23:37
    #32283885
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2Марина
Скажи заодно, чего хочешь. :)
Если надо, чтоб удалялись записи с операте=4 или 1, то тебе уже ответили. Если что-то еще, то, во-первых, уточни условие, а во-вторых, пожалуй, было бы невредно увидеть названия и типы полей таблички. и указание, которые из них ключевые.
...
Рейтинг: 0 / 0
03.10.2003, 23:43
    #32283887
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
Простите, не поняла...
Не всегда краткость -сестра таланта.(Это я о себе )
Я имел в виду , что синтаксис оператора DELETE допускает не указывать имя таблицы после ключевого слова DELETE , т.е
в твоем случае достаточно написать
Код: plaintext
1.
2.
DELETE 
FROM otchet 
WHERE (((otchet.OPERATE)= "4 ")); 
...
Рейтинг: 0 / 0
03.10.2003, 23:45
    #32283888
marina_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2 Артист - именно так!

2 Geo - не там ключевых полей, это вообще присоединенная таблица формата dbf IV :( ничего в свойствах там менять нельзя
полей там порядка 18, конкретно это поле OPERATE, к тому же, текстовое...
в общем, все очень запущенно :(
...
Рейтинг: 0 / 0
03.10.2003, 23:50
    #32283891
Артист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
.....
rs.findfirst otchet.OPERATE="4"
rs.delete
rs.movelast
rs.delete
....
ну а если довести энто до ума...
...
Рейтинг: 0 / 0
03.10.2003, 23:52
    #32283893
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2Марина
Надо было еще написать
"2(c)VIG именно так!"
ибо он куда больше меня (а, возможно, и Артиста (прости, Артист:)) знает о запросах.

Так надо удалять предыдущую? Тогда надо сначала как-то идентифицировать записи (почему я и спросил про ключевое поле). Ты можешь пронумеровать записи в запросе или даже слить его результаты во временную таблицу, и узнать, какая из них предыдущая от подходящей к твоему условию, но как ее затем найти в твоей табличке?
...
Рейтинг: 0 / 0
03.10.2003, 23:55
    #32283894
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
А тем временем Артист придумал способ лучше :)
Только лучше

rs.FindFirst "Pole='4'"
rs.movePrev
rs.delete
rs.FindFirst "Pole='4'"
rs.delete
...
Рейтинг: 0 / 0
03.10.2003, 23:55
    #32283895
Артист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
ибо он куда больше меня (а, возможно, и Артиста (прости, Артист:)) знает о запросах
да чё ты меня с VIG-ом сравниваешь... я вообще ещё дилетант в SQL
...
Рейтинг: 0 / 0
03.10.2003, 23:58
    #32283896
marina_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
Так. А вот теперь объясните мне совсем на пальцах. Главу про recordset я уже давно в книжке нашла. И даже поняла, что моя задачка может решаться с ее помощью. Я только не поняла тогда, куда этот код писать и потому главу закрыла. Так как в книжках не любят объяснять примитивные вещи, которые всем кроме меня, видимо, известны с рождения :)
Что мне с этим кодом делать?
...
Рейтинг: 0 / 0
03.10.2003, 23:58
    #32283897
Артист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
тьфу rs.MovePrevious а не ласт... сорри
...
Рейтинг: 0 / 0
03.10.2003, 23:59
    #32283898
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
(Весь красный от смущения) : "Да ну ладно, Вам"
...
Рейтинг: 0 / 0
04.10.2003, 00:01
    #32283899
Артист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2marina_spb
а когда ты хочешь удалять??
по кнопочке кликать и удалять??
тогда в конструкторе кликни правой кнопкой по кнопочке и выбери "обработка события" , а потом то что у тебя откроется (редактор VBA) там и пиши всё, что ты нашла в книжечке...
...
Рейтинг: 0 / 0
04.10.2003, 00:07
    #32283903
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2Артист
Я last не заметил, я имел в виду, что уверен ли ты, что после .delete указатель текущей записи указывает на следующую? Не знаю, как Акцесс, а другие СУБДы часто предупреждают, что это совсем не подразумевается.

2Марина
Положим на кнопку Кнопка1 обработку события Нажатие:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Кнопка1_Click()
  Dim rs as DAO.RecordSet
  set rs = currentdb.openrecordset( "ТаблицаОтчетов" )
  rs.findfirst  "ПолеПоиска='" & VariableWithValueForSearch & "'" 
  rs.rs.MovePrevious
  rs.Delete
  rs.findfirst  "ПолеПоиска='" & VariableWithValueForSearch & "'" 
  rs.Delete
  rs.close
  set rs = nothing
End Sub
...
Рейтинг: 0 / 0
04.10.2003, 00:11
    #32283904
marina_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2 Артист

Я хотела на кнопку повесить выполнение запроса вот этого вот самого на удаление :)

Я совсем чуточку знакома с программированием и почему-то мне не верится, что

Private Sub Кнопка0_Click()

rs.FindFirst "Pole='4'"
rs.movePrev
rs.delete
rs.FindFirst "Pole='4'"
rs.delete

End Sub

будет так просто работать...
...
Рейтинг: 0 / 0
04.10.2003, 00:13
    #32283907
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2Geo & Артист
А вы уверены ,что после
Код: plaintext
1.
rs.MovePrevious
rs.Delete
удалится то что надо?
...
Рейтинг: 0 / 0
04.10.2003, 00:19
    #32283909
marina_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2 Geo

А цикла там никакого не надо?
А то он удалит только первое вхождение четверки и на этом успокоится...
...
Рейтинг: 0 / 0
04.10.2003, 00:19
    #32283910
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2VIG
Если Order By тот, что надо, то, наверное, это не хуже, чем в запросе...
...
Рейтинг: 0 / 0
04.10.2003, 00:22
    #32283911
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
Марин, прости, а тебе что надо-то? Чтобы все вхождения четверки и предыдущую запись перед первой? Или все вхождения четверки и предыдущую запись перед каждой? Или последнюю "четверку"? Или где?
...
Рейтинг: 0 / 0
04.10.2003, 00:26
    #32283913
marina_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
мне нужно, чтобы удалились все вхождения 4 и каждая предыдущая строчка перед 4
т.е. чтобы

Price Operate Quanty

1------2------5
1------1------5
1------4------1
1------7------1
1------1------5
1------4------1
1------8------1

стало выглядеть как

1------2------5
1------7------1
1------8------1
...
Рейтинг: 0 / 0
04.10.2003, 00:34
    #32283918
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
2Марина
Ок. Тогда для mdb, в которой подключена DAO (меню Tools/References...):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Кнопка1_Click()
  Dim rs as DAO.RecordSet
  set rs = currentdb.openrecordset( "ТаблицаОтчетов" )
  rs.findLast  "ПолеПоиска='" & VariableWithValueForSearch & "'" 
  do until rs.NoMatch
    rs.MovePrevious
    If rs!ПолеПоиска = VariableWithValueForSearch then
      rs.MoveNext
    else
      rs.Delete
      rs.findLast  "ПолеПоиска='" & VariableWithValueForSearch & "'" 
    endif
    rs.Delete
    rs.findLast  "ПолеПоиска='" & VariableWithValueForSearch & "'" 
  loop
  rs.close
  set rs = nothing
End Sub
...
Рейтинг: 0 / 0
04.10.2003, 00:39
    #32283920
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос на удаление
Марина, а в твоей таблице коду операции 4 всегда предшествует код операции 1?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / запрос на удаление / 25 сообщений из 71, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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