powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / запрос на удаление
25 сообщений из 71, страница 1 из 3
запрос на удаление
    #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
запрос на удаление
    #32283874
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как его заставить при этом еще и 2------1-------5 удалить?
т.е. чтобы он по 2 строки удалял...

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

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

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

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

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

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

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

rs.FindFirst "Pole='4'"
rs.movePrev
rs.delete
rs.FindFirst "Pole='4'"
rs.delete
...
Рейтинг: 0 / 0
запрос на удаление
    #32283895
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ибо он куда больше меня (а, возможно, и Артиста (прости, Артист:)) знает о запросах
да чё ты меня с VIG-ом сравниваешь... я вообще ещё дилетант в SQL
...
Рейтинг: 0 / 0
запрос на удаление
    #32283896
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так. А вот теперь объясните мне совсем на пальцах. Главу про recordset я уже давно в книжке нашла. И даже поняла, что моя задачка может решаться с ее помощью. Я только не поняла тогда, куда этот код писать и потому главу закрыла. Так как в книжках не любят объяснять примитивные вещи, которые всем кроме меня, видимо, известны с рождения :)
Что мне с этим кодом делать?
...
Рейтинг: 0 / 0
запрос на удаление
    #32283897
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу rs.MovePrevious а не ласт... сорри
...
Рейтинг: 0 / 0
запрос на удаление
    #32283898
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(Весь красный от смущения) : "Да ну ладно, Вам"
...
Рейтинг: 0 / 0
запрос на удаление
    #32283899
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2marina_spb
а когда ты хочешь удалять??
по кнопочке кликать и удалять??
тогда в конструкторе кликни правой кнопкой по кнопочке и выбери "обработка события" , а потом то что у тебя откроется (редактор VBA) там и пиши всё, что ты нашла в книжечке...
...
Рейтинг: 0 / 0
запрос на удаление
    #32283903
Фотография 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
запрос на удаление
    #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
запрос на удаление
    #32283907
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Geo & Артист
А вы уверены ,что после
Код: plaintext
1.
rs.MovePrevious
rs.Delete
удалится то что надо?
...
Рейтинг: 0 / 0
запрос на удаление
    #32283909
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Geo

А цикла там никакого не надо?
А то он удалит только первое вхождение четверки и на этом успокоится...
...
Рейтинг: 0 / 0
запрос на удаление
    #32283910
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VIG
Если Order By тот, что надо, то, наверное, это не хуже, чем в запросе...
...
Рейтинг: 0 / 0
запрос на удаление
    #32283911
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марин, прости, а тебе что надо-то? Чтобы все вхождения четверки и предыдущую запись перед первой? Или все вхождения четверки и предыдущую запись перед каждой? Или последнюю "четверку"? Или где?
...
Рейтинг: 0 / 0
запрос на удаление
    #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
запрос на удаление
    #32283918
Фотография 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
запрос на удаление
    #32283920
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марина, а в твоей таблице коду операции 4 всегда предшествует код операции 1?
...
Рейтинг: 0 / 0
25 сообщений из 71, страница 1 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / запрос на удаление
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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