Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Вопрос по поводу ADOdc Добавлено: 31.01.06 12:54  

Автор вопроса:  Djmun | ICQ: 4401990 

Adodc1.RecordSource = “DELETE * FROM [table name] WHERE id=12”
Adodc1.Refresh

 – это для примера
вылетает окошко «Operation is not allowed when the object is closed» а потом такое «Run-time error ‘3704’ Application-defined or object-defined error»
И программа аварийно закрывается!
А самое смешное то, что запрос все-таки выполняется, и когда программу запустить наново то база открывается уже с изменением которое было в запросе.
Как это устранить?

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 GeorgeGA



Вопросов: 1
Ответов: 101
 Профиль | | #1 Добавлено: 31.01.06 18:34
on error resume next

Ответить

Номер ответа: 2
Автор ответа:
 Djmun



ICQ: 4401990 

Вопросов: 16
Ответов: 33
 Профиль | | #2 Добавлено: 31.01.06 21:07
Да я тоже так думал но тогда пропадает только вторая ошыбка а окошко «Operation is not allowed when the object is closed» остается!

Ответить

Номер ответа: 3
Автор ответа:
 Djmun



ICQ: 4401990 

Вопросов: 16
Ответов: 33
 Профиль | | #3 Добавлено: 17.02.06 13:18
Млжет у когото есть кусочек кода, где с посощю SQL запроса додают, удаляют или обновляюд даные через ADO то буду очень блогодарен...
Спасибо!

Ответить

Номер ответа: 4
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #4
Добавлено: 17.02.06 14:12
Private Sub Form_Load()
Dim DataBase As DataBase
Dim QueryDef As QueryDef
Dim Recordset As Recordset
' Создаем новую базу данных
Set DataBase = CreateDatabase("c:\1.mdb", dbLangGeneral)
' Создаем таблицу table1 с колонками:
' Адрес и фамилия (текстовые поля длиной 20 символов),
' Возраст (числовое поле 2 байта)
DataBase.Execute "create table table1 (Адрес text(20),Фамилия text(20), Возраст integer2, Зарплата integer2);"
' Добавляем в таблицу 5 строк
DataBase.Execute "insert into table1 values ('Ленина', 'Иванов', 21, 2000);"
DataBase.Execute "insert into table1 values ('Пушкинская', 'Петров', 22, 2100);"
DataBase.Execute "insert into table1 values ('Лермонтовская', 'Сидоров', 25, 2100);"
DataBase.Execute "insert into table1 values ('Ленина', 'Соколов', 27, 2100);"
DataBase.Execute "insert into table1 values ('Садовая', 'Иванов', 23, 2200);"
' Создадим два запроса
' Запросом можно назвать таблицу, состоящую из данных, выбранных
' из других таблиц (выборка)
' При создании запроса, указываются названия таблиц и колонок,
' которые нужно добавить в запрос,
' а также условия выбора данных (необязательно)
' Запросы могут быть обычными и временными
' обычные запросы сохраняются в базе данных
' а временные действуют только во время выполнения программы
' для того, чтобы создать временный запрос, нужно
' вместо имени указать пустые кавычки
' Создаем временный запрос и поместим туда данные (адрес и возраст)
' из таблицы table1, где указана фамилия Иванов
Set QueryDef = DataBase.CreateQueryDef("", "select Адрес, Возраст from table1 where Фамилия='Иванов';";)
' Отобразим полученные данные
' (с запросом можно работать также как
' и с таблицей через объект RecordSet)
Set Recordset = QueryDef.OpenRecordset
Debug.Print "Выборка по фамилии Иванов"
Do While Not Recordset.EOF
Debug.Print "адрес "; Recordset(0) & ", возраст " & Recordset(1)
Recordset.MoveNext
Loop
' Создадим запрос testQuery из таблицы table1
' который будет представлять выборку из всех колонок этой таблицы,
' где в колонке адрес будет Ленина
' Этот запрос останется в базе данных
' Если в таблицу table1 добавится строка с адресом Ленина
' то она автоматически будет добавлена в таблицу-запрос
' аналогично при изменении данных в таблице-запросе testQuery, эти изменения
' произойдут и в таблице table1
DataBase.CreateQueryDef "testQuery", "select * from table1 where Адрес='Ленина';"
' Теперь скопируем таблицу table1 в ту же базу данных
' в таблицу с названием table1copy
DataBase.Execute "select * into table1copy from table1;"
' Очень удобное средство SQL - обновление данных в полях таблицы
' сразу по нескольким строкам
' Изменим зарплату в таблице table1
' на 3000 тем людям, которым больше 22 лет
DataBase.Execute "update table1 set Зарплата=3000 where Возраст>22;"
' В приведенной выше таблице адреса могут повторяться
' В таблице может быть десятки тысяч строк
' при нескольких сотнях адресов
' Для уменьшения объема базы данных
' в этом случае можно применить справочник
' Создадим таблицу table2 наподобие приведенной выше,
' Только вместо названий адресов укажем их
' идентификационный номер
DataBase.Execute "create table table2 (АдресID integer2, Фамилия text(20), Возраст integer2, Зарплата integer2);"
' Добавим в таблицу строки
DataBase.Execute "insert into table2 values (1, 'Иванов', 21, 2000);"
DataBase.Execute "insert into table2 values (2, 'Петров', 22, 2100);"
DataBase.Execute "insert into table2 values (3, 'Сидоров', 25, 2100);"
DataBase.Execute "insert into table2 values (1, 'Соколов', 27, 2100);"
DataBase.Execute "insert into table2 values (4, 'Иванов', 23, 2200);"
' Создадим справочник адресов adrref, состоящий из поля с
' идентификационным номером адреса и поля с адресом
DataBase.Execute "create table adrref (АдресID integer2, Адрес text(20));"
DataBase.Execute "insert into AdrRef values (1, 'Ленина');"
DataBase.Execute "insert into AdrRef values (2, 'Пушкинская');"
DataBase.Execute "insert into AdrRef values (3, 'Лермонтовская');"
DataBase.Execute "insert into AdrRef values (4, 'Садовая');"
' Теперь создадим запрос Query2, объединяющий эти две таблицы
' Как видно ниже сначала указываются колонки, а затем список таблиц
' такой способ применим, если в таблицах нет одноименных колонок
' Полученная таблица-запрос будет по содержанию идентична
' созданной выше таблице table1
DataBase.CreateQueryDef "Query2", "select Адрес, Фамилия, Возраст, Зарплата from adrref, table2 where adrref.АдресID=table2.АдресID;"
' Созданные таблицы и запросы Вы можете посмотреть в MS Access
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 KLN



Вопросов: 2
Ответов: 3
 Профиль | | #5 Добавлено: 17.02.06 23:51

“DELETE * FROM [table name] WHERE id=12

Ну, блин, где ж такой запрос откопал в SQL?

Надо так

DELETE FROM [table name] WHERE id=12

Потому, что стираешь всю запись целиком, а не ее поля

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам