Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Базы Добавлено: 29.06.02 09:54  

Автор вопроса:  Kit

Почему после двух запросов:

1.Удаление всех  записей.                                                      

2.Добавить n - кол- во записей  из другой таблици.

Выбрать добавленные записи не получается.Возвращаються пустые строки.

(операции проводятся с таблицами Access)

Ответить

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

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



Вопросов: 27
Ответов: 150
 Web-сайт: www.slaysoft.stormway.ru
 Профиль | | #1
Добавлено: 29.06.02 10:36

все должно работать... скинь примерчик кода, может баг какой-то...

Ответить

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



Вопросов: 11
Ответов: 31
 Профиль | | #2 Добавлено: 30.06.02 07:57

Подробности к моему вопросу: При модификации таблици"Temp"возникает ошибка "Операция не допускается если  объект закрыт" , но запрос выполняет намеченые действия.Правда после этого DataGrid (связаная с Adodc1) не получает существующие записи. 

Private Sub Option2_GotFocus()
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)

'On Error Resume Next

sql = "INSERT INTO Temp (1,2,3,4,5,6,7,8,9)" & _ 
          "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

sql = "SELECT * FROM Temp"
Adodc1.RecordSource = sql
Adodc1.Refresh 'Покажем DataGrid

Text1.Text = Adodc1.Recordset.RecordCount

sql = "DELETE * FROM Temp"
rs.Open sql, cn, adOpenDynamic, adLockOptimistic 'очистим Temp
'On Error GoTo 0

Set rs = Nothing
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 Иван



Администратор

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 30.06.02 18:57
Попробуй вместо rs.Open использовать Adodc1.Execute в случае, если возвращаемый рекордсет не нужен. А в твоем случае закрывай ненужные рекордсеты! Они и мешают.

Ответить

Номер ответа: 4
Автор ответа:
 Kit



Вопросов: 11
Ответов: 31
 Профиль | | #4 Добавлено: 01.07.02 06:54

Большое спасибо за совет, но желаемого результата я достиг в ниже приведенном куске кода.(с Execute пока еще не знаком.Опыта программирования у меня 4 месяца.  ;) rs я не закрывал умышлено.        

В ходе экспериментов выяснилось, что Adodc1.Refresh приносит строки по результатам не последнего запроса, а предпоследнего.Почему так происходит и нормально это?(помоему безобразие)   

Такое впечатления, что Adodc1 считывает резервные данные которые создаются из реальных перед каждым запросом   ;(но ведь в запросе ясно сказано с откуда их брать)

Dim d As Integer, m As Integer, yy As Integer, r As Integer
Set rs = New ADODB.Recordset
d = Day(DateTime.Date)
m = Month(DateTime.Date)
yy = Year(DateTime.Date)

On Error Resume Next

sql = "INSERT INTO Temp (1,2,3,4,5,6,7,8,9)" & _
          "SELECT 1,2,3,4,5,6,7,8,9 " & _
          "FROM Товары  WHERE  Format (5,""mm"")+6 >= '" & m & "' AND Format (5,""yyyy"")= '" & yy & "'"

rs.Open sql, cn, adOpenKeyset, adLockOptimistic
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

sql = "DELETE * FROM Temp"
rs.Open sql, cn, adOpenDynamic, adLockOptimistic
rs.MoveFirst
rs.Close
On Error GoTo 0

 

 

sql = "SELECT * FROM Temp ORDER BY Temp.5 DESC"
Adodc1.RecordSource = sql
Adodc1.Refresh

Text1.Caption = Adodc1.Recordset.RecordCount

 

Set rs = Nothing

Ответить

Страница: 1 |

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



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