powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / msysobjects
19 сообщений из 19, страница 1 из 1
msysobjects
    #32581095
Avtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что в запросе не так?
IF EXISTS(SELECT COUNT(*) FROM msysobjects WHERE type = 1 AND name = 'TMP_C097_vvb_IND') DROP TABLE 'TMP_C097_vvb_IND'

Надо проверить есть ли таблица в БД если есть удалить
(я так понял что в аксесе нет временных таблиц?)
...
Рейтинг: 0 / 0
msysobjects
    #32581117
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я ничего не понял :(

Это запрос?
В Аксе, а не в MSSQL?
...
Рейтинг: 0 / 0
msysobjects
    #32581368
Avtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да запрос.
Работаю с файлом mdb через ADO
Хочу проверить на существование таблицы и если она существует удалить ее
...
Рейтинг: 0 / 0
msysobjects
    #32581380
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО

В запросах Аксе нет ни If, ни Exists

ЗЫ: И если уж Exists, то зачем Count(*)?
...
Рейтинг: 0 / 0
msysobjects
    #32581398
Avtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как тогда проверить существует ли таблица?
...
Рейтинг: 0 / 0
msysobjects
    #32581409
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Avtorа как тогда проверить существует ли таблица?
А обязательно в запросе?
В VBA нельзя?
...
Рейтинг: 0 / 0
msysobjects
    #32581410
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AvtorДа запрос.
Работаю с файлом mdb через ADO
Хочу проверить на существование таблицы и если она существует удалить ее
подключи ADOX --->
если сидишь в том-же файле:
Код: plaintext
1.
2.
3.
4.
5.
Dim MyCat As ADOX.Catalog
Set MyCat = New ADOX.Catalog
MyCat.ActiveConnection = CurrentProject.Connection
On Error Resume Next
MyCat.Tables.Delete "TMP_C097_vvb_IND"
если файл вовне
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim MyCat As ADOX.Catalog
Dim PrStr As String
Dim MyConn As ADODB.Connection
PrStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=твой_путь;User ID=Admin;"
Set MyConn = New ADODB.Connection
MyConn.Open (PrStr)
Set MyCat = New ADOX.Catalog
MyCat.ActiveConnection = MyConn
On Error Resume Next
MyCat.Tables.Delete "TMP_C097_vvb_IND"
...
Рейтинг: 0 / 0
msysobjects
    #32581411
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И зачем удалять таблицу, разве нельзя сделать "временную-постоянную" и просто очищать ее перед использованием?
...
Рейтинг: 0 / 0
msysobjects
    #32581412
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Function ExistsTable(nmDb As String, nmt As String) As Integer
On Error GoTo err_ExistsTable
    Dim db As DAO.Database
    Dim td As DAO.TableDef

    If nmDb = "" Then
        Set db = CurrentDb
    Else
        Set db = OpenDatabase(nmDb)
    End If

    Set td = db.TableDefs(nmt)
    
    ExistsTable = True

exit_ExistsTable:
    Exit Function

err_ExistsTable:
    Resume exit_ExistsTable

End Function
...
Рейтинг: 0 / 0
msysobjects
    #32581416
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry
автор
Работаю с файлом mdb через ADO
...
Рейтинг: 0 / 0
msysobjects
    #32581474
Avtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2paparome
Да я хочу запросом проверку сделать.
Про постоянно-временные таблицы не понял
Если обычные таблицы, то не совсем подходит.
Вроде получилось выполнить в аксесе запрос
SELECT COUNT(*) FROM msysobjects WHERE type = 1 AND name = 'TMP_C097_vvb_IND'

Тоже самое из программы делаю говорит нет прав на чтение из этой таблицы.
А где их можно выдать?
...
Рейтинг: 0 / 0
msysobjects
    #32581483
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли обычные таблицы, то не совсем подходит.
Почему?
авторВроде получилось выполнить в аксесе запрос
SELECT COUNT(*) FROM msysobjects WHERE type = 1 AND name = 'TMP_C097_vvb_IND'
Хорошо, но он не удаляет таблицу, а только возвращает число!
А удалять все равно придется из VBA
А из VBA можно и не запрос, а DCount использовать
...
Рейтинг: 0 / 0
msysobjects
    #32581501
Avtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что в дальнейшем возможно еще создание временных таблиц в коорых будет другая структура полей.

Почему из VBA? Я же могу послать запрос DROP TABLE?
Только я так и не нашел где выдаются правда на системные таблицы:(
...
Рейтинг: 0 / 0
msysobjects
    #32581520
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Е-мое

Может вы запрос послать, но вот объединить 2 запроса в один, да еще и с проверкой - нет
Это вам не T-SQL, нет тут ХП
Значит условие вам придется проверять в коде и запросы запускать из кода (не важно сохраните вы их или динамически составите)

PS: Где кусок кода програмы, который у вас на права ругается?
- Что-то странное вы написали - запрос работает, а из программы не работает - так не бывает (ИМХО)
...
Рейтинг: 0 / 0
msysobjects
    #32581567
Avtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sSql = "SELECT COUNT(*) FROM MSysObjects WHERE type = 1 AND name = '" + sTableName + "'";
rs = cnDat->Execute(sSql, NULL, NULL);

Выдает:
Error:
Code = 80040e09

Message = IDispatch error #3081
Source = Microsoft JET Database Engine
Description = Record(s) cannot be read; no read permission on 'MSysObjects'.


Не в коде дело, я так понимаю что дело в том под кем я создаю коннект к файлу, у него не прав на чтени из этой таблицы.
...
Рейтинг: 0 / 0
msysobjects
    #32581576
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AvtorПотому что в дальнейшем возможно еще создание временных таблиц в коорых будет другая структура полей.

Почему из VBA? Я же могу послать запрос DROP TABLE?
Только я так и не нашел где выдаются правда на системные таблицы:(

видимо у тебя среда не Access - тогда что ?
послать запрос DROP TABLE - как ты запускаешь запросы ?
пусть нет VBA но есть ADO - сам признался
почему не устраивает ADOX ?
...
Рейтинг: 0 / 0
msysobjects
    #32581580
Avtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Shuhard
Скорее всего так сейчас и сделаю.
...
Рейтинг: 0 / 0
msysobjects
    #32581588
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Avtor2Shuhard
Скорее всего так сейчас и сделаю.

автор
sSql = "SELECT COUNT(*) FROM MSysObjects WHERE type = 1 AND name = '" + sTableName + "'";
rs = cnDat->Execute(sSql, NULL, NULL);


не VBA точно - так что это(в тамошней конфе уже искал ?)
...
Рейтинг: 0 / 0
msysobjects
    #32595835
oleg_cha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
помогите пожалуйста
есть отчет на основе запроса. в отчете есть вычисляемое поле с именем [поле51] в котором в зависисмости от значения другого поля выводятся цифры 1 2 3 4 5 и т.д.
как мне в отчете подсчитать колличество цифр 2 3 4 (не сумму)
пытался dcount постоянно выводит ошибка. может я ее не правильно задаю.
заранее благодарен за помощь
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / msysobjects
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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