Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
veronica1
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 37
1

FindFirst и удаление данных в связанных таблицах

01.10.2011, 21:03. Просмотров 979. Ответов 6
Метки нет (Все метки)

Есть несколько таблиц, в которых данные пересекаются на фамилии. Удаляю в одной таблице запись, следовательно,хочу удалить все связанные данные в других таблицах. Ищу через FindFirst. Удаляется правильно. Но когда данные уже отсутствуют, удаляет что ни попадя. Подозреваю, что первую запись все время. Как же указать, что такой фамилии НЕТ и все остальное надо оставить?

Обычно пишу

if not rsbanche.eof and not rsbanche.bof

'ограничение, типа...если до конца дошел и не нашел

спасиба
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2011, 21:03
Ответы с готовыми решениями:

Каскадное удаление записей в связанных таблицах (MS Access)
Нужно удалить запись в связанной таблице, а так как имеются в подчинненой...

Findfirst ругается run time error 3426
програмный код poisk=form1.text1.text fc='kod='' & poisk ' ''...

Data1.Recordset.FindFirst 'Автор = 'имя'' не работает
Подскажите почему у меня не получается поиск? Если я пишу такой код, то...

Ошибка в коде rs.FindFirst '3:1 = '' & strfind & '''
Пользуюсь VB6 Пишу rs.FindFirst '3:1 = '' & strfind & ''' где: rs-рекордсет...

Удаление данных из БД
Всем привет! Создал приложение на языке Visual Basic в среде VS. Все кнопки...

6
Alexey Spirin
1 / 1 / 1
Регистрация: 18.10.2007
Сообщений: 1,750
02.10.2011, 11:39 2
А cn.Execute 'DELETE FROM tbl WHERE SurName='tratata'' не катит?
Вообще для таких случаев используется или автоматическое каскадное удаление данных или триггеры.
0
veronica1
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 37
02.10.2011, 12:22  [ТС] 3
до триггеров и каскадного удаления еще не дошла (куда уж мне до гениев...).
а за подсказку спасибо. Обычно в чистом виде советы использовать трудно, уж очень навороченные бывают , а я еще новичок. Но на мысль, как правило, наводят. Буду мучиться дальше..
0
veronica1
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 37
02.10.2011, 12:23  [ТС] 4
а что такое cn.execute?...
0
Alexey Spirin
1 / 1 / 1
Регистрация: 18.10.2007
Сообщений: 1,750
02.10.2011, 13:16 5
cn - объект типа ADODB.Connection - ваше подключение к БД.
Инструкция DELETE FROM tbl WHERE SurName='tratata' удаляет из таблицы tbl все записи, в которых поле SurName='tratata'.
Изучайте SQL.
Каскадное удаление в Access настраивается несколькими кликами. Испоьзуйте справку.
0
veronica1
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 37
03.10.2011, 12:33  [ТС] 6
На етот раз решила не заморачиваться с каскадным удалением, просто поставила запрет на удаление информации в принципальной таблице, прежде, чем удалены все записи во второстепенныx.

SQL конечно, изучу. Просто начала заниматься етим только месяца 2 назад, поетому наxочусь в прострации еще. А за ответы всегда сбасибо - все всегда распечатывается и тщательно изучается!
0
Сумрак
03.10.2011, 18:31 7
Вот пример:
CON это мой коннект к БД через АДО
ПодключитьCON - это процедура подключения
в ней проверяется конект и если он разорван то снова соединяется с БД.
процедура ЛОГ просто ведет лог действий пользователя.
в Свойтстве формы Код - идентификатор строки в БД
[Код] имя поля в БД (идентификатор строки)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Удалить()
If Код = 0 Then Exit Sub
On Error GoTo bay
    If MsgBox('Вы действительно хотите удалить Тип товара ' & LST.Text & '?', vbDefaultButton2 + vbQuestion + vbYesNo) = vbYes Then
        ПодключитьCON
        CON.Execute 'delete * from тблТипТовара where [Код]=' & Код
        Лог 'Удаление типа в справочнике товар - ' & LST.Text, 1
        MsgBox 'Тип товара удален', vbInformation
        Код = 0
    End If
Exit Sub
bay:
MsgBox Err.Description, vbExclamation
End Sub
если несколько таблиц то так примерно
Visual Basic
1
2
3
4
CON.Execute 'delete * from Таблица1 where [Код]=' & Код
CON.Execute 'delete * from Таблица2 where [Код]=' & Код
...
CON.Execute 'delete * from Таблица3 where [Код]=' & Код
только открыть Транзикцию если БД ее поддерживает.
Чтобы сделать откат если будет ошибка в одной из строк с удалением.
03.10.2011, 18:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2011, 18:31

Удаление из базы данных?
На форме имеется MSFlexGrid и Data1 Private Sub MSFlexGrid1_Click() If...

Удаление обновления данных в связанных таблицах
Всем доброго дня. Помогите пожалуйста от безысходности не знаю что делать....

Удаление цепочки строк в связанных таблицах
Здравствуйте, Уважаемые форумчане! Подскажите, пожалуйста: как удалять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru