Страница: 1 |
Почему после двух запросов: 1.Удаление всех записей. 2.Добавить n - кол- во записей из другой таблици. Выбрать добавленные записи не получается.Возвращаються пустые строки. (операции проводятся с таблицами Access)
все должно работать... скинь примерчик кода, может баг какой-то... Подробности к моему вопросу: При модификации таблици"Temp"возникает ошибка "Операция не допускается если объект закрыт" , но запрос выполняет намеченые действия.Правда после этого DataGrid (связаная с Adodc1) не получает существующие записи. Private Sub Option2_GotFocus() 'On Error Resume Next sql = "INSERT INTO Temp (1,2,3,4,5,6,7,8,9)" & _ sql = "SELECT * FROM Temp" Text1.Text = Adodc1.Recordset.RecordCount sql = "DELETE * FROM Temp" Set rs = Nothing Большое спасибо за совет, но желаемого результата я достиг в ниже приведенном куске кода.(с Execute пока еще не знаком.Опыта программирования у меня 4 месяца.   rs я не закрывал умышлено. В ходе экспериментов выяснилось, что Adodc1.Refresh приносит строки по результатам не последнего запроса, а предпоследнего.Почему так происходит и нормально это?(помоему безобразие) Такое впечатления, что Adodc1 считывает резервные данные которые создаются из реальных перед каждым запросом  но ведь в запросе ясно сказано с откуда их брать) Dim d As Integer, m As Integer, yy As Integer, r As Integer On Error Resume Next sql = "INSERT INTO Temp (1,2,3,4,5,6,7,8,9)" & _ rs.Open sql, cn, adOpenKeyset, adLockOptimistic sql = "DELETE * FROM Temp" sql = "SELECT * FROM Temp ORDER BY Temp.5 DESC" Text1.Caption = Adodc1.Recordset.RecordCount Set rs = Nothing Страница: 1 |
Вопрос: Базы
Добавлено: 29.06.02 09:54
Автор вопроса: Kit
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Slay
Вопросов: 27
Ответов: 150
Web-сайт:
Профиль | | #1
Добавлено: 29.06.02 10:36
Номер ответа: 2
Автор ответа:
Kit
Вопросов: 11
Ответов: 31
Профиль | | #2
Добавлено: 30.06.02 07:57
Dim d As Integer, m As Integer, y As Integer
Set rs = New ADODB.Recordset
d = Day(DateTime.Date)
m = Month(DateTime.Date)
y = Year(DateTime.Date)
"SELECT 1,2,3,4,5,6,7,8,9 " & _
"FROM Table WHERE Format (5,""mm"")+6 >= '" & m & "' AND Format (5,""yyyy"")= '" & y & "'"
rs.Open sql, cn, adOpenKeyset, adLockOptimistic 'выбираем в Temp
sql = "DELETE * FROM Temp WHERE Format (5,""dd"")<= '" & d & "' AND Format (5,""mm"")+6='" & m & "' " 'Подкаректируем в Temp
Adodc1.RecordSource = sql
Adodc1.Refresh
Adodc1.RecordSource = sql
Adodc1.Refresh 'Покажем DataGrid
rs.Open sql, cn, adOpenDynamic, adLockOptimistic 'очистим Temp
'On Error GoTo 0
End Sub
Номер ответа: 3
Автор ответа:
Иван
Администратор
ICQ: 147688925
Вопросов: 24
Ответов: 708
Web-сайт:
Профиль | | #3
Добавлено: 30.06.02 18:57
Попробуй вместо rs.Open использовать Adodc1.Execute в случае, если возвращаемый рекордсет не нужен. А в твоем случае закрывай ненужные рекордсеты! Они и мешают.
Номер ответа: 4
Автор ответа:
Kit
Вопросов: 11
Ответов: 31
Профиль | | #4
Добавлено: 01.07.02 06:54
Set rs = New ADODB.Recordset
d = Day(DateTime.Date)
m = Month(DateTime.Date)
yy = Year(DateTime.Date)
"SELECT 1,2,3,4,5,6,7,8,9 " & _
"FROM Товары WHERE Format (5,""mm"")+6 >= '" & m & "' AND Format (5,""yyyy"")= '" & yy & "'"
rs.MoveFirst
rs.Close
sql = "DELETE * FROM Temp WHERE Format (,""dd"")<= '" & d & "' AND Format (5,""mm"")+6='" & m & "' "
rs.Open sql, cn, adOpenForwardOnly, adLockOptimistic
rs.MoveFirst
rs.Close
rs.Open sql, cn, adOpenDynamic, adLockOptimistic
rs.MoveFirst
rs.Close
On Error GoTo 0
Adodc1.RecordSource = sql
Adodc1.Refresh