Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / проблема с delete / 18 сообщений из 18, страница 1 из 1
20.07.2004, 14:25:04
    #32612721
Nikolay Gerasimov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Подскажите в чем может быть проблема?
есть следующая команда в модуле Access'a , а точнее к таблице на MsSQL server, доступ к которой организован через ODBC:

db.Execute "delete * from Пассажиры Where ДатВыл Between #" & Format(data, "mm/dd/yy") & "# and #" & Format(data2, "mm/dd/yy") & "#;", dbSeeChanges

однако заметил, что чем больше становится таблица, тем дольше обрабатывается эта комманда (к примеру при 72000 записях в таблице, удаление 16000 записей из них не происходит и за 1 час!!!!!).
Через Enterprise Manager удаление происходит за секунду!!!!
Кто что может мне сказать?
...
Рейтинг: 0 / 0
20.07.2004, 14:27:36
    #32612725
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Переход на ADP спасёт, я вот тоже подумываю, либо хранимки надо делать.
...
Рейтинг: 0 / 0
20.07.2004, 14:43:18
    #32612780
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Проблемы тут нет никакой, просто твой Jet-ODBC
запрос преобразуется в 16000 запросов к серверу, а 16 тыс запросов выполняются медленнее, чем один.
...
Рейтинг: 0 / 0
20.07.2004, 14:46:32
    #32612791
Tsaryov S
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Добавлю вот что:
1. есть ли индекс по ДатВыл ?
2. Можно создать "Запрос к серверу" в Access. Он будет транслироваться на сервер так как написан и не преобразовываться.
...
Рейтинг: 0 / 0
20.07.2004, 14:47:49
    #32612796
Nikolay Gerasimov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Можно решить это каким либо другим образом?
...
Рейтинг: 0 / 0
20.07.2004, 14:49:54
    #32612802
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
>Каким-либо другим
Дык АДО-коннекшн создать, и в нем почикать свои записи.
...
Рейтинг: 0 / 0
20.07.2004, 15:28:53
    #32612925
Nikolay Gerasimov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Например?
Я не очень силен в ADO....
...
Рейтинг: 0 / 0
20.07.2004, 15:30:31
    #32612931
Nikolay Gerasimov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Tsaryov SДобавлю вот что:
1. есть ли индекс по ДатВыл ?
2. Можно создать "Запрос к серверу" в Access. Он будет транслироваться на сервер так как написан и не преобразовываться.

а как можно из модуля запустить выполнение созданного запроса?
...
Рейтинг: 0 / 0
20.07.2004, 15:39:41
    #32612964
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
в лоб DoCmd.OpenQuery
+ отключить варнинги
...
Рейтинг: 0 / 0
20.07.2004, 15:42:30
    #32612977
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
а не в лоб
QPL - твой запрос к серверу
Код: plaintext
1.
2.
3.
4.
5.
Dim myq As DAO.QueryDef
Set myq = CurrentDb.QueryDefs("QPL")
myq.Execute
myq.Close
Set myq = Nothing
...
Рейтинг: 0 / 0
20.07.2004, 15:48:17
    #32613008
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
что-бы не менять настройки ODBC запроса к серверу можешь создать один раз и мучить текст перед запуском,хотя создать новый и прописать connect не проблема
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim myq As DAO.QueryDef
Set myq = CurrentDb.QueryDefs("QPL")
Debug.Print myq.SQL
myq.SQL = "Delete * From TTTT where xxx>1;"
myq.Execute
myq.Close
Set myq = Nothing
...
Рейтинг: 0 / 0
20.07.2004, 16:16:14
    #32613114
Nikolay Gerasimov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Shuhardа не в лоб
QPL - твой запрос к серверу
Код: plaintext
1.
2.
3.
4.
5.
Dim myq As DAO.QueryDef
Set myq = CurrentDb.QueryDefs("QPL")
myq.Execute
myq.Close
Set myq = Nothing

пишет что "невозможно запустить запрос на выборку"
...
Рейтинг: 0 / 0
20.07.2004, 16:28:07
    #32613155
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
>Например?
Я не очень силен в ADO....

Из 1С пример:-)
Поди разберетесь
CNN=СоздатьОбъект("ADODB.Connection");
стр1="Provider = SQLOLEDB.1; Password ="+Пароль+"; Persist Security Info = True; User ID ="+Польз+"; Initial Catalog ="+База+"; Data Source ="+Сервер;
CNN.Open(стр1);
Cnn.Execute("Delete From t1")
...
Рейтинг: 0 / 0
20.07.2004, 17:32:12
    #32613339
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Nikolay Gerasimov Shuhardа не в лоб
QPL - твой запрос к серверу
Код: plaintext
1.
2.
3.
4.
5.
Dim myq As DAO.QueryDef
Set myq = CurrentDb.QueryDefs("QPL")
myq.Execute
myq.Close
Set myq = Nothing

пишет что "невозможно запустить запрос на выборку"

а текст СВОЕГО QPL Николай не покажешь ?
вроде договаривались что запрос к серверу не должен возвращать ничего
а должен данные модифицировать(Delete Create Alter Insert + VAlues )
а у тебя Select - куда QueryDef девать добытое немеренным трудом!
...
Рейтинг: 0 / 0
20.07.2004, 17:52:09
    #32613386
Nikolay Gerasimov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Private Sub DelRecTable(ByVal datN As Date, ByVal datK As Date)
Dim dbsCurrent As Database
Dim qryTest As DAO.QueryDef

Set dbsCurrent = CurrentDb
Set qryTest = dbsCurrent.QueryDefs("Пассажиры")
Debug.Print qryTest.SQL

qryTest.SQL = "delete from Пассажиры Where ДатВыл Between '" & Format (datN, "mm/dd/yy") & "'" and '" & Format(datK, "mm/dd/yy") & "';"

qryTest.Execute
qryTest.Close
Set qryTest = Nothing

End Sub

Незнаю, Вы это имели ввиду под QPL?
...
Рейтинг: 0 / 0
21.07.2004, 09:17:50
    #32613917
Nikolay Gerasimov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Shuhard Nikolay Gerasimov Shuhardа не в лоб
QPL - твой запрос к серверу
Код: plaintext
1.
2.
3.
4.
5.
Dim myq As DAO.QueryDef
Set myq = CurrentDb.QueryDefs("QPL")
myq.Execute
myq.Close
Set myq = Nothing

пишет что "невозможно запустить запрос на выборку"

а текст СВОЕГО QPL Николай не покажешь ?
вроде договаривались что запрос к серверу не должен возвращать ничего
а должен данные модифицировать(Delete Create Alter Insert + VAlues )
а у тебя Select - куда QueryDef девать добытое немеренным трудом!

Private Sub DelRecTable(ByVal datN As Date, ByVal datK As Date)
Dim dbsCurrent As Database
Dim qryTest As DAO.QueryDef

Set dbsCurrent = CurrentDb
Set qryTest = dbsCurrent.QueryDefs("Пассажиры")
Debug.Print qryTest.SQL

qryTest.SQL = "delete from Пассажиры Where ДатВыл Between '" & Format (datN, "mm/dd/yy") & "'" and '" & Format(datK, "mm/dd/yy") & "';"

qryTest.Execute
qryTest.Close
Set qryTest = Nothing

End Sub

Незнаю, Вы это имели ввиду под QPL?
...
Рейтинг: 0 / 0
21.07.2004, 16:45:08
    #32615300
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Dim Conn_Str As String
Dim MyODBC As Workspace
Dim MyConn As Connection
Dim Sql_String As String
Dim data As Date
Dim data2 As Date
data = "01.01.2001"
data2 = "10.01.2001"
Conn_Str = "ODBC;DATABASE=oil;UID=sa;PWD=xxx;DSN=tango"
 Set MyODBC = CreateWorkspace("", "admin", "", dbUseODBC)
 Set MyConn = MyODBC.OpenConnection("", , , Conn_Str)
 Sql_String = "DELETE   FROM Пассажиры Where ДатВыл Between " & _
 Chr( 39 ) & Format(data, "mm\/dd\/yy") & Chr( 39 ) & " and  " & Chr( 39 ) & Format(data2, "mm\/dd\/yy") & Chr( 39 )
 Debug.Print Sql_String
 MyConn.Execute (Sql_String)
 MyConn.Close
 Set MyConn = Nothing
 MyODBC.Close
 Set MyODBC = Nothing

выдача debug.print
Код: plaintext
1.
DELETE   FROM Пассажиры Where ДатВыл Between '01/01/01' and  '01/10/01'
...
Рейтинг: 0 / 0
21.07.2004, 19:57:20
    #32615743
alex_pf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с delete
По поводу легкого генерирования запросов к серверу.
Работаю в 97 аксе. Использую одновременно локальные таблицы и серверные.
Сервер и база на нем всегда одна и та же.

Придумал себе набор элементов, позволяющих эффективно создавать сохраненные запросы в многопользовательской среде, избегая конфликтов.

При открытии базы создается запись о сессии с уникальным кодом.
функция query_gen_fun создает запросы с уникальным именем и кодом сессии.
При выходе закрывается сессия и грохаются все запросы в ней сделаные.

Настройки сервера задаются прямо в коде функции.

Пример приложен
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / проблема с delete / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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