Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как определить кол-во добавляемых строк? / 13 сообщений из 13, страница 1 из 1
04.02.2004, 17:52
    #32398457
Димасик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
Строки добавляются методом Docmd.RunSql (Insert Into ......From ..... Where .... )

Вопрос:

Как определить количество добавляемых строк?
...
Рейтинг: 0 / 0
04.02.2004, 17:58
    #32398463
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
Взять селектную часть этого инсерта...
...
Рейтинг: 0 / 0
04.02.2004, 18:02
    #32398467
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
Код: plaintext
select count (*) from [From ..... Where .... part]
...
Рейтинг: 0 / 0
04.02.2004, 18:03
    #32398468
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
Сначала запустить SELECT Count(*) по тем же условиям отбора,
а уж потом insert

ПРоблема: а если будет ошибка уникальности при вставке?
...
Рейтинг: 0 / 0
04.02.2004, 18:05
    #32398473
Димасик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
Т.е.:

рс = CurrentDb.OpenRecorset("Селектная часть...")
кол_строк = рс.RecordCount

А нельзя как нибудь по другому? В селектной части есть много параметров, берущих данные из форм, надо цикл делать для присвоения параметрам значений (из ФАКА взял), а запрос и так медленно выполняется

Как нибудь красиво?...
...
Рейтинг: 0 / 0
04.02.2004, 18:09
    #32398476
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
А почему не
currentdb.RecordsAffected
...
Рейтинг: 0 / 0
04.02.2004, 18:10
    #32398482
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
естественно нужно заменить DoCmd на Currentdb
...
Рейтинг: 0 / 0
04.02.2004, 18:14
    #32398489
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
Посмотри на RecordsAffected property. Только тебе прийдётся не docmd использовать, а
currentdb.execute , что почти одно и то же.

-------------------------------------------------------------------
This example uses the RecordsAffected property with action queries executed from a Database object and from a QueryDef object. The RecordsAffectedOutput function is required for this procedure to run.

Sub RecordsAffectedX()

Dim dbsNorthwind As Database
Dim qdfTemp As QueryDef
Dim strSQLChange As String
Dim strSQLRestore As String

Set dbsNorthwind = OpenDatabase("Northwind.mdb")

With dbsNorthwind
' Print report of contents of the Employees
' table.
Debug.Print _
"Number of records in Employees table: " & _
.TableDefs!Employees.RecordCount
RecordsAffectedOutput dbsNorthwind

' Define and execute an action query.

strSQLChange = "UPDATE Employees " & _
"SET Country = 'United States' " & _
"WHERE Country = 'USA'"
.Execute strSQLChange

' Print report of contents of the Employees
' table.
Debug.Print _
"RecordsAffected after executing query " & _
"from Database: " & .RecordsAffected
RecordsAffectedOutput dbsNorthwind

' Define and run another action query.
strSQLRestore = "UPDATE Employees " & _
"SET Country = 'USA' " & _

"WHERE Country = 'United States'"
Set qdfTemp = .CreateQueryDef("", strSQLRestore)
qdfTemp.Execute

' Print report of contents of the Employees
' table.
Debug.Print _
"RecordsAffected after executing query " & _
"from QueryDef: " & qdfTemp.RecordsAffected
RecordsAffectedOutput dbsNorthwind

.Close

End With

End Sub

Function RecordsAffectedOutput(dbsNorthwind As Database)

Dim rstEmployees As Recordset

' Open a Recordset object from the Employees table.
Set rstEmployees = _
dbsNorthwind.OpenRecordset("Employees")

With rstEmployees
' Enumerate Recordset.
.MoveFirst
Do While Not .EOF
Debug.Print " " & !LastName & ", " & !Country
.MoveNext
Loop
.Close
End With

End Function
...
Рейтинг: 0 / 0
04.02.2004, 18:14
    #32398490
Димасик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
Попробую вариант VIG и Alexus12

Попутно вопрос:

В процедуре будет таким образом 2 селекта (один в моем SQL, другой в select count (*) from [From ..... Where .... part])

Означает ли это, что будет высчитываться и формироваться выборка 2 раза с вытекающим из этого удвоенным временем работы?
...
Рейтинг: 0 / 0
04.02.2004, 18:20
    #32398499
AlexJuice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
Именно так.
Поэтому есть вариант: скидывать эту выборку в отдельную таблицу (очищая ее перед этим) и уже по ней брать кол-во строк
...
Рейтинг: 0 / 0
04.02.2004, 18:29
    #32398514
Димасик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
2AlexJuice

Понятно

Тогда надо попробовать вариант мадама

Правда там Execute, что вызывает необходимость присваивать значения параметрам запроса, но по-моему он самый быстрый

Ну и как последний вариант твой

2мадама

А если не трудно, не могли бы опубликовать вместо примера RecordsAffected его описание, а то у меня хелп никак нихочет нормально работать, по этому свойству ничего не показывает
...
Рейтинг: 0 / 0
04.02.2004, 18:50
    #32398539
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
Public Function ExecuteCommand(strSQL As String) As Long
'возвращает к-во обработанных записей

Dim cmd As ADODB.Command
Dim lngAffected As Long

Set cmd = New ADODB.Command

With cmd
.ActiveConnection = CurrentProject.Connection
.CommandType = adCmdText
.CommandText = strSQL

.Execute lngAffected, , adExecuteNoRecords
End With
ExecuteCommand = lngAffected
Set cmd = Nothing

End Function
...
Рейтинг: 0 / 0
04.02.2004, 18:54
    #32398543
Димасик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить кол-во добавляемых строк?
Всем спасибо, особенно guest и мадаме

Все получилось с RecordsAffected (хоть и со своими недостатками)

Больше не хочу переделывать

P.S. SQL.RU is the best
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как определить кол-во добавляемых строк? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]