|
|
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Создаю рекордсет из другого рекордсета (подвыборку) sviazi_doc_rst.Filter = "[in_kod] = " + CStr(out_doc_kod) Set vbIborka_sviazey_rst = sviazi_doc_rst.OpenRecordset(dbOpenSnapshot) Все бы ничего. Но если до этого из рекордсета - родителя производилось удаление - выскакивает ошибка.ю Может кто знает как ее убрать, или другой способ создания новой выборки без обращения к источнику записей. (requery не предлагать-исчезает смысл вего деяния.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 12:59:24 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
А .Clone не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:16:43 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
А это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:18:17 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
А в справке по DAO глянуть влом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:19:21 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Какая ошибка, на какой строке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:23:23 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Как я понял - клоны полностью идентичны, а мне бы выборочку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:23:53 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
фильтр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:24:42 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
фильтры не очень надежны в работе (в общем то из-за этого и создаю новый рекордсет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:32:35 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Установленный фильтр сбивает текущую запись. А если делать клон, то как я понял, сначала надо скопировать все, а потом выбрать нужное. - потеря скорости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:35:58 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
рекордсет на рекордсете - это такая редкая вещь, а судя по твоим задаваемым вопросам, я подозреваю, что оно тебе нафиг не нужно. просто ты не знаещь других путей. потому и спрашиваешь про него. лучще опиши задачу и тебе подскажут КАК это можно сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:36:22 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Задача проста. есть цикл по рекордсету - от первой до последней. В рамках цикла надо открывать групповые выборки этого рекордсета и что-то с ними делать (обновлять, удалять, добавлять, переходить по записям). В принципе это не очень корректно, но приходится. sviazi_doc_rst.Filter = "[in_kod] = " + CStr(out_doc_kod) Set vbIborka_sviazey_rst = sviazi_doc_rst.OpenRecordset() ну и удалить 2 строки и добавить 1 в эту выборку. Если есть иные способы охотно приму их на вооружение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:46:24 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Select case на каждую "выборку" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:52:03 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Не понял - куда селект кэйз ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 13:54:44 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Сообщение об ошибке можно увидеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:00:25 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
"Запись удалена" Но сейчас пробую то же самое вызвать ескуственно - не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:13:04 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Задача проста. есть цикл по рекордсету - от первой до последней. ... Select case ТИП_ВЫБОРКИ Case "ЭТА ВЫБОРКА" ну и удалить 2 строки и добавить 1 в эту выборку. Case "ДРУГАЯ ВЫБОРКА" ... end select конец цикла то бишь вести обработку "по выборкам" не последовательно, а параллельно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:19:37 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Нет, здесь вся штука в том, что выбор из рекордсета в нескоько раз быстрее, чем выбор из начальной таблицы и на порядок - чем из сложного запроса. таким образом - рекордсет: цикл выборок из рекордсета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:24:52 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
А если применить Метод GetRows и удалять,корректировать,добавлять SQL-запросами ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:37:48 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Dim rst1 As Recordset, rst2 As Recordset Set rst1 = CurrentDb.OpenRecordset("SELECt * FROM vvod_doc_tmp") DoCmd.RunSQL "DELETE * FROM vvod_doc_tmp" rst1.Filter = "[Код]>35" Set rst2 = rst1.OpenRecordset() runtime error 3167 Ошибка "Запись Удалена" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:39:43 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Сделал recordset на основе таблицы, удалил из него запись, создал фильтр, создал второй recordset из первого. Нет ошибок. Может я что-то не понял? Приведи весь код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:42:14 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Мы для такого случая создавали новый рекордсет, делали структуру, как у исходного и каждую запись копировали. Правда, это было ADO и Java Script. Если надо, могу функцию дать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:45:50 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
SQL не всегда получается. Например добавляешь запись и надо знать ее код. (для дальнейших действий со связанными таблицами) Счетчик - случайный , и как?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:47:13 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Roma RСделал recordset на основе таблицы, удалил из него запись, создал фильтр, создал второй recordset из первого. Нет ошибок. Может я что-то не понял? Приведи весь код Пример чуть выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:49:59 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Bor-LА если применить Метод GetRows и удалять,корректировать,добавлять SQL-запросами ? Ну в общем-то вариант, хотя как-то корявенько. И как фильтровать? А что за номер у GetRows в параметре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 14:53:02 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
А зачем фильтровать (здалась им эта бронированная комната...) в памяти итак все ну очень быстро ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:01:59 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Bor-LА зачем фильтровать (здалась им эта бронированная комната...) в памяти итак все ну очень быстро Фильтровать... Ну привык типа. А как через getrow?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:05:11 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Трудно советовать не зная постановки задачи (такое только на Форумах и встречается ;-) ) Например, кусок из Help ' Печатает загруженные данные. For intRecord = 0 To UBound(avarRecords, 2) Debug.Print " " & _ avarRecords(0, intRecord) & " " & _ avarRecords(1, intRecord) & ", " & _ avarRecords(2, intRecord) Next intRecord ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:10:43 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Bor-LТрудно советовать не зная постановки задачи (такое только на Форумах и встречается ;-) ) Например, кусок из Help ' Печатает загруженные данные. For intRecord = 0 To UBound(avarRecords, 2) Debug.Print " " & _ avarRecords(0, intRecord) & " " & _ avarRecords(1, intRecord) & ", " & _ avarRecords(2, intRecord) Next intRecordА где здесь Getrecords и что такое avarRecords ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:13:52 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
так что с getrows? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:27:37 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
vam911так что с getrows? Ну если у Вас нет русского Help-a привожу МЕТОД GETROWS - ПРИМЕР целиком Следующая программа использует метод GetRows для загрузки указанного числа строк из объекта Recordset и заполнения массива полученными данными. Метод GetRows возвращает менее указанного числа строк в двух случаях: при обнаружения метки конца файла EOF или при попытке загрузки записи, удаленной другим пользователем. Функция возвращает False только в последнем случае. Для выполнения этой процедуры требуется функция GetRowsOK. Sub GetRowsX() Dim dbsNorthwind As Database Dim rstEmployees As Recordset Dim strMessage As String Dim intRows As Integer Dim avarRecords As Variant Dim intRecord As Integer Set dbsNorthwind = OpenDatabase("Борей.mdb") Set rstEmployees = dbsNorthwind.OpenRecordset( _ "SELECT Имя, Фамилия, Должность " & _ "FROM Сотрудники ORDER BY Фамилия", dbOpenSnapshot) With rstEmployees Do While True ' Принимает от пользователя число строк. strMessage = "Введите число загружаемых строк." intRows = Val(InputBox(strMessage)) If intRows <= 0 Then Exit Do ' При успешном выполнении GetRowsOK печатает результаты; ' при обнаружении конца файла ничего не делается. If GetRowsOK(rstEmployees, intRows, _ avarRecords) Then If intRows > UBound(avarRecords, 2) + 1 Then Debug.Print "(Недостаточно записей в объекте " & _ "Recordset для загрузки " & intRows & _ " строк.)" End If Debug.Print UBound(avarRecords, 2) + 1 & _ " записей обнаружено." ' Печатает загруженные данные. For intRecord = 0 To UBound(avarRecords, 2) Debug.Print " " & _ avarRecords(0, intRecord) & " " & _ avarRecords(1, intRecord) & ", " & _ avarRecords(2, intRecord) Next intRecord Else ' В предположении, что GetRows возвращает ошибку ' из-за изменения данных другим пользователем, ' вызывает метод Requery для обновления ' объекта Recordset и возобновления операции. If .Restartable Then If MsgBox("Ошибка в методе GetRows. Повторить?", _ vbYesNo) = vbYes Then .Requery Else Debug.Print "Ошибка в методе GetRows!" Exit Do End If Else Debug.Print "Ошибка в методе GetRows! " & _ "Неверное значение свойства Restartable!" Exit Do End If End If ' Так как после вызова GetRows указатель текущей записи ' остается на последней проверенной записи, переводит ' указатель в начало объекта Recordset перед ' выполнением нового цикла поиска. .MoveFirst Loop End With rstEmployees.Close dbsNorthwind.Close End Sub Function GetRowsOK(rstTemp As Recordset, _ intNumber As Integer, avarData As Variant) As Boolean ' Сохраняет результаты вызова GetRows в массиве. avarData = rstTemp.GetRows(intNumber) ' Возвращает False, только если возвращено менее указанного ' количества строк, но не при достижении конца объекта ' Recordset. If intNumber > UBound(avarData, 2) + 1 And _ Not rstTemp.EOF Then GetRowsOK = False Else GetRowsOK = True End If End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:39:11 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
Пол моему фильтер по короче будет :), Но все-равно - спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:44:45 |
|
||
|
Создание рекордсера из рекордсета
|
|||
|---|---|---|---|
|
#18+
vam911Установленный фильтр сбивает текущую запись. А если делать клон, то как я понял, сначала надо скопировать все, а потом выбрать нужное. - потеря скорости. Зато - Фильтр - это тоже потеря скорости, но, решать, безусловно, Вам. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:54:41 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1672223]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 329ms |

| 0 / 0 |
