Знатокам программного создания БД вопрос :-)

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
VIVa
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 07.07.2004 (Ср) 23:36

Знатокам программного создания БД вопрос :-)

Сообщение VIVa » 07.07.2004 (Ср) 23:46

Народ, подскажите, плз...
Программно, через ADOX 2.7, создается база Access 2000. С таблицами все хорошо. Но не все ладно с Query. Создаю Query, присоединяю его к базе, открываю базу - нет Query. При попытке создать еще один с аналогичным именем говорит, что такой объект уже есть и предлагает переименовать.
Как этот Query вытащить наружу? Может кто сталкивался с таким...

PS: Включить показ системных объектов не предлагать - нет его среди системных объектов.

Заранее спасибо.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 08.07.2004 (Чт) 17:59

Мож ты,просто, базу в Аксесе не отрефрешил?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

VIVa
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 07.07.2004 (Ср) 23:36

Сообщение VIVa » 08.07.2004 (Чт) 18:07

Отрефрешил.... Не помогает....

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 09.07.2004 (Пт) 20:15

Покажи текст твоего query
Если это просто Select, то посмотри - возможно, он появился у тебя в таблицах, поскольку просто Select-запрос считается за View.
Кверей считается запрос с параметрами или с union. Попробуй в текст своего запроса добавить фиктивный параметр.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

VIVa
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 07.07.2004 (Ср) 23:36

Сообщение VIVa » 10.07.2004 (Сб) 8:02

Текст там простой - Select с парой Inner Join. (фактически сведение в одну таблицу данных из нескольких).

В таблицах его нет и быть не может. Если смотреть MSysObjects, то в поле Type стаит 5 - т.е. это Query с точки зрения Access. Разница между query, созданным из IDE Access и программным в 4 полях, но что они значат я так и не смог найти. Это поля "Flags" и "Lv" - для программного в нем есть значение, а для созданного руками - нет. И поля LvExtra и LvProp - для программного в нем значений нет, а для ручного есть. Но и то и другое по типу - query.

Добавление фиктивного параметра не помогает. Query как не появлялся, так и не появляется...

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 10.07.2004 (Сб) 12:26

Хмм... Пошла проверять. У меня нормального VB тут не стоит - я процедурку написала в Access. Коннектилась к другой базе.
Запрос с inner join нормально создался. Посмотри, ты также делаешь?

Код: Выделить всё
Sub CreateQuery()
Dim ADOCommand As New ADODB.Command
Dim ADOXCatalog As New ADOX.Catalog
Dim ADOConnection As New ADODB.Connection

    With ADOConnection
       .Provider = "Microsoft.Jet.OLEDB.4.0"
       .Open "Data Source=f:\newdb.mdb"
    End With
     
    With ADOCommand
        .CommandText = "Select * from Table1 inner join Table2 on Table1.FK = Table2.ID"
    End With
   
    Set ADOXCatalog.ActiveConnection = ADOConnection
    ADOXCatalog.Procedures.Append "testProc2", ADOCommand
   
    ADOConnection.Close
    Set ADOCommand = Nothing

End Sub
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 10.07.2004 (Сб) 12:46

Порылась в Гугле. Там написано, что значение поля Flag = 268435456 - означает, что запрос является View. Причем, Access2000 View прячет, а Access2002 (который у меня) их показывает. Осталось выяснить, как сказать, что создается-таки запрос, а не view. Короче, в MSysObjects значение поля Flag должно быть равно 0.

<и она почитала еще немного>
похоже, это фича такая :(

А если перебирать View в Catalog, то мой запрос, созданный руками там тоже есть :roll:
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

VIVa
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 07.07.2004 (Ср) 23:36

Сообщение VIVa » 10.07.2004 (Сб) 13:14

Делаю именно так. Там иначе просто и не сделать...

Да, ну тогда понятно откуда у этого исчезновения ноги растут. У меня Access 2000, вот он его и спрятал, гадик... Ладно, значит сейчас голову ломать не будем, а будем просто юзать этот View.

Спасибо , что помогли разобраться :-)

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 11.07.2004 (Вс) 18:34

Ну и слава богу, что все так разреишилось. А фича, конечно, гаденькая, бесспорно. С другой стороны - пора переходить на ХП - 2003 Офис, уж осень хорошая вещь получилась у Майкрософта.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

VIVa
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 07.07.2004 (Ср) 23:36

Сообщение VIVa » 11.07.2004 (Вс) 20:10

Спору нет, но есть ТЗ, от которого не отказаться. Минимальные требования - офис 2000. И тут просто ничего не поделать.

Спасибо большое всем :-)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 13.07.2004 (Вт) 7:56

Делаю именно так. Там иначе просто и не сделать...


Да ведь вроде можно еще и через CREATE VIEW запросы создавать... :lol:

А глюк с непоказыванием созданных запросов в базе A2000 точно есть - сам кога-то натыкался...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

VIVa
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 07.07.2004 (Ср) 23:36

Сообщение VIVa » 13.07.2004 (Вт) 9:57

Можно, но уж или один механизм или другой :-) Как-то вот метаться... не хочется :-)

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 13.07.2004 (Вт) 10:33

Еще есть вариант - пойти к проджект манагеру, популярно ему объяснить такую неприятную разницу в версиях и внести конструктивное предложение - переделать минимальные требования на хотя бы ХР. Я, по крайней мере, так бы и сделал. Попытка - не пытка, все-таки...

VIVa
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 07.07.2004 (Ср) 23:36

Сообщение VIVa » 13.07.2004 (Вт) 10:36

Тут ситуация, что я сам себе PM и мне придется самому объяснять себе.
Это требование заказчика. Тут просто не объехать.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 13.07.2004 (Вт) 11:20

В таком случае имеет смысл при общении с заказчиком... как это... во, "настоятельно рекомендовать" :) . Иногда помогает.

VIVa
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 07.07.2004 (Ср) 23:36

Сообщение VIVa » 13.07.2004 (Вт) 11:42

Вариант... кто бы спорил :-)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 14.07.2004 (Ср) 8:52

> Это требование заказчика. Тут просто не объехать.

Три простых способа объезда (выбор зависит от конкретной ситуации, и от того для чего нужна (как будет использоваться) полученная база с таблицами и запросами, и где она будет формироваться).

1. Формировать базу в AccessXP/2003 с последующем конвертированием в формат Access2000. Но это требует наличия на компьютере где формируется база AccessXP/2003.
2. Если запросы статичны то можно просто хранить базу-шаблон с их заготовками, потом останется только заполнять нужными значениями таблицы
3. Если текст запросов меняется (но их состав постоянен) то опять-же можно использовать базу-шаблон - просто менять в ней текс запросов.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 14.07.2004 (Ср) 9:03

Ну и в конце-концов - можно создавать Access-овские объекты (те-же запросы) не через ADO, а используя объектную модель Access-a - тогда они должны быть видны так как их создаст сам Access.

Так что способы объезда найдутся всегда...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

VIVa
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 07.07.2004 (Ср) 23:36

Сообщение VIVa » 14.07.2004 (Ср) 9:14

Если я праильн понял, то предлагается запустить Access как OLE сервер?
Ну вариант, на самом деле... вполне вариант


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 3

    TopList