powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / проблема с delete
18 сообщений из 18, страница 1 из 1
проблема с delete
    #32612721
Nikolay Gerasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите в чем может быть проблема?
есть следующая команда в модуле 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
проблема с delete
    #32612725
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переход на ADP спасёт, я вот тоже подумываю, либо хранимки надо делать.
...
Рейтинг: 0 / 0
проблема с delete
    #32612780
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблемы тут нет никакой, просто твой Jet-ODBC
запрос преобразуется в 16000 запросов к серверу, а 16 тыс запросов выполняются медленнее, чем один.
...
Рейтинг: 0 / 0
проблема с delete
    #32612791
Tsaryov S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю вот что:
1. есть ли индекс по ДатВыл ?
2. Можно создать "Запрос к серверу" в Access. Он будет транслироваться на сервер так как написан и не преобразовываться.
...
Рейтинг: 0 / 0
проблема с delete
    #32612796
Nikolay Gerasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно решить это каким либо другим образом?
...
Рейтинг: 0 / 0
проблема с delete
    #32612802
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Каким-либо другим
Дык АДО-коннекшн создать, и в нем почикать свои записи.
...
Рейтинг: 0 / 0
проблема с delete
    #32612925
Nikolay Gerasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Например?
Я не очень силен в ADO....
...
Рейтинг: 0 / 0
проблема с delete
    #32612931
Nikolay Gerasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tsaryov SДобавлю вот что:
1. есть ли индекс по ДатВыл ?
2. Можно создать "Запрос к серверу" в Access. Он будет транслироваться на сервер так как написан и не преобразовываться.

а как можно из модуля запустить выполнение созданного запроса?
...
Рейтинг: 0 / 0
проблема с delete
    #32612964
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в лоб DoCmd.OpenQuery
+ отключить варнинги
...
Рейтинг: 0 / 0
проблема с delete
    #32612977
Фотография 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
проблема с delete
    #32613008
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-бы не менять настройки 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
проблема с delete
    #32613114
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

пишет что "невозможно запустить запрос на выборку"
...
Рейтинг: 0 / 0
проблема с delete
    #32613155
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Например?
Я не очень силен в 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
проблема с delete
    #32613339
Фотография 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 девать добытое немеренным трудом!
...
Рейтинг: 0 / 0
проблема с delete
    #32613386
Nikolay Gerasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
проблема с delete
    #32613917
Nikolay Gerasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
проблема с delete
    #32615300
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
проблема с delete
    #32615743
alex_pf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу легкого генерирования запросов к серверу.
Работаю в 97 аксе. Использую одновременно локальные таблицы и серверные.
Сервер и база на нем всегда одна и та же.

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

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

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

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


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