Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос на удаление, синтаксис 
:(
    Опции темы
Catisha
Дата 12.10.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2006

Репутация: 1
Всего: 1



Код

DoCmd.RunSQL "DELETE * FROM Users WHERE [ION]=" + "'" + ION Not In (SELECT User FROM Equipment);" + "'"


Компилятор выдаёт ошибку, не знаю как исправить.
Нужно следующее: чтобы удалялась запись, которой нет в другой таблице.
PM MAIL   Вверх
boevik
Дата 12.10.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Запиши проще
Код

DoCmd.RunSQL "DELETE * FROM Users WHERE [ION] Not In (SELECT User FROM Equipment);"



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Catisha
Дата 12.10.2006, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2006

Репутация: 1
Всего: 1



Не получается, удаляет все записи, которых нет во второй таблице
PM MAIL   Вверх
boevik
Дата 12.10.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Цитата(Catisha @  12.10.2006,  11:40 Найти цитируемый пост)
Нужно следующее: чтобы удалялась запись, которой нет в другой таблице. 

Цитата(Catisha @  12.10.2006,  11:52 Найти цитируемый пост)
Не получается, удаляет все записи, которых нет во второй таблице 

Это не то что надо было получить?
Какая иммено запись должна удаляться?




--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Catisha
Дата 12.10.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2006

Репутация: 1
Всего: 1



Есть форма с пользователями, на ней кнопка Удалить. Так вот если на этом пользователе записано оборудование, то нельзя выполнять команду на удаление.

Добавлено @ 11:59 
Может так понятней будет:
Код

Sub DisposeUser(pk As String)
On Error GoTo err_dispose
DoCmd.SetWarnings False

DoCmd.RunSQL "DELETE * FROM Users WHERE [ION]=" + "'" + pk Not In (SELECT User FROM Equipment);" + "'"

End If

Exit Sub
err_dispose:
MsgBox Err.Description
Exit Sub
End Sub

PM MAIL   Вверх
boevik
Дата 12.10.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Возможно имелось ввиду следующее:
Код

DoCmd.RunSQL "DELETE * FROM Users WHERE [ION] Not In (SELECT User FROM Equipment) and ION = " & userID 

где userID содержит номер текущего пользовтеля.



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Catisha
Дата 12.10.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2006

Репутация: 1
Всего: 1



Работает, но как-то криво: Каждый раз выскакивает сообщение: Введите значение параметра.
PM MAIL   Вверх
boevik
Дата 12.10.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



UserID замени на свою переменную, возможно это pk у тебя.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Catisha
Дата 12.10.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2006

Репутация: 1
Всего: 1



Я заменила, не помогает.
А может сделать сначала проверку есть ли пользователь в другой таблицы, а потом если нет, то удалять его? Не знаешь как это можно реализовать, а то у меня большие проблемы с синтаксисом языка.
PM MAIL   Вверх
boevik
Дата 12.10.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Catisha, у тебя выскакивет сообщение Введите значение параметра. и с этим в первую очередь надо разобраться.
Потому что даже если просто запрашивать есть юзер во второй таблице надо передавать параметр.
Разберись, где иммено сидит значение удаляемого юзера.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Catisha
Дата 12.10.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2006

Репутация: 1
Всего: 1



Если написать так:
Код

DoCmd.RunSQL "DELETE * FROM Users WHERE [ION] Not In (SELECT User FROM Equipment) and [ION] = '" + Nz(pk, "") + "'"

то работает, как надо только почему-то жутко томозит где-то секунд 20?

Добавлено @ 12:39 
Так ладно это у меня комп что-то тормозит))))
А не знаешь как убрать сообщение о том, сколько записей будет удалено?
PM MAIL   Вверх
boevik
Дата 12.10.2006, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Посмотри какой sql запускается.    
Код

MsgBox "DELETE * FROM Users WHERE [ION] Not In (SELECT User FROM Equipment) and [ION] = '" + Nz(pk, "") + "'"



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Catisha
Дата 12.10.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2006

Репутация: 1
Всего: 1



Так проблему с подтверждением решила!
Последний вопрос: как если удаление не произошло выдавть сообщение типа : "Нельзя удалить юзера!"
PM MAIL   Вверх
boevik
Дата 12.10.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Если выполнить таким образом:
Код

Dim dbs As DAO.Database, sql as String, iCount as Integer
  Set dbs = CurrentDb
  sql = "DELETE * FROM stores WHERE state='WY'"
  '(not that there's anything wrong with Wyoming!)
  dbs.Execute sql, dbFailOnError
  iCount = dbs.RecordsAffected 

то в iCount содержится кол-во удаленных записей.



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Catisha
Дата 12.10.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.9.2006

Репутация: 1
Всего: 1



А попроще никак  нельзя? smile  smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0817 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.