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

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

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

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

ЗЫ: И если уж Exists, то зачем Count(*)?
...
Рейтинг: 0 / 0
29.06.2004, 15:02:23
    #32581398
Avtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
msysobjects
а как тогда проверить существует ли таблица?
...
Рейтинг: 0 / 0
29.06.2004, 15:05:46
    #32581409
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
msysobjects
Avtorа как тогда проверить существует ли таблица?
А обязательно в запросе?
В VBA нельзя?
...
Рейтинг: 0 / 0
29.06.2004, 15:06:09
    #32581410
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
msysobjects
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
29.06.2004, 15:06:51
    #32581411
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
msysobjects
И зачем удалять таблицу, разве нельзя сделать "временную-постоянную" и просто очищать ее перед использованием?
...
Рейтинг: 0 / 0
29.06.2004, 15:06:57
    #32581412
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
msysobjects
Код: 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
29.06.2004, 15:08:09
    #32581416
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
msysobjects
Dmitry
автор
Работаю с файлом mdb через ADO
...
Рейтинг: 0 / 0
29.06.2004, 15:28:58
    #32581474
Avtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
msysobjects
2paparome
Да я хочу запросом проверку сделать.
Про постоянно-временные таблицы не понял
Если обычные таблицы, то не совсем подходит.
Вроде получилось выполнить в аксесе запрос
SELECT COUNT(*) FROM msysobjects WHERE type = 1 AND name = 'TMP_C097_vvb_IND'

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

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

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

PS: Где кусок кода програмы, который у вас на права ругается?
- Что-то странное вы написали - запрос работает, а из программы не работает - так не бывает (ИМХО)
...
Рейтинг: 0 / 0
29.06.2004, 15:54:23
    #32581567
Avtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
msysobjects
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
29.06.2004, 15:57:46
    #32581576
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
msysobjects
AvtorПотому что в дальнейшем возможно еще создание временных таблиц в коорых будет другая структура полей.

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

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

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


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


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