Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
ЛП
Guest
Никита А. Зимин
ЛП
Каким образом вы работаете со св-вами таблиц/полей/индексов, которые недоступны через SQL?

Скрипт структуры и скрипт сравнения структуры - строятся с использованием соединения через ADOX.

Однако некоторые доступны только через DAO. А некоторые - недоступны ни через ADOX, ни через DAO.
26 апр 05, 13:14    [1498070]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Никита А. Зимин
Member

Откуда: Ижевск
Сообщений: 129
ЛП
Однако некоторые доступны только через DAO. А некоторые - недоступны ни через ADOX, ни через DAO.

Естественно, меня интересовали только те свойства, которые можно установить через Jet SQL. Через ADOX для объекта Column доступны следующие свойства:

"Autoincrement"
"Default"
"Description"
"Nullable"
"Fixed Length"
"Seed"
"Increment"
"Jet OLEDB:Column Validation Text"
"Jet OLEDB:Column Validation Rule"
"Jet OLEDB:IISAM Not Last Column"
"Jet OLEDB:AutoGenerate"
"Jet OLEDB:One BLOB per Page"
"Jet OLEDB:Compressed UNICODE Strings"
"Jet OLEDB:Allow Zero Length"
"Jet OLEDB:Hyperlink"

Как видите, этого вполне достаточно...
26 апр 05, 13:26    [1498121]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
ЛП
Guest
попробуйте для индекса найти св-во Required
26 апр 05, 13:29    [1498138]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
ЛП
Guest
а так же Check Constraint'ы попробуйте заскриптовать через ADOX или DAO
26 апр 05, 13:30    [1498143]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
ЛП
Guest
ЛП
попробуйте для индекса найти св-во Required

Пардон, невнимательно искал. Для индекса есть нужное св-во
Но вот check constraint'ы так и не понял как можно перекинуть через ADOX/DAO
26 апр 05, 13:40    [1498189]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
AlexeiK
Member

Откуда:
Сообщений: 2830
Никита А. Зимин
Естественно, меня интересовали только те свойства

то есть утила писалась сначала для своих целей?
реально в access не хватает com надстроек, типа vbe tools.....и так далее.
и вопрос, я просто не сталкивался, а для чего генерить скрипт структуры-это как то помогает воспритяю базы?
26 апр 05, 13:59    [1498277]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Мшсещырф
Guest
ЛП
ЛП
попробуйте для индекса найти св-во Required

Пардон, невнимательно искал. Для индекса есть нужное св-во
Но вот check constraint'ы так и не понял как можно перекинуть через ADOX/DAO


наверно как-то через
connection.OpenSchema (QueryType, Criteria, SchemaID)


возможно, для check
QueryType=adSchemaCheckConstraints

а может и какие полезные вьюхи из INFORMATION_SCHEMA найдутся
(хотя это менее вероятно)...
26 апр 05, 14:21    [1498411]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Никита А. Зимин
Member

Откуда: Ижевск
Сообщений: 129
AlexeiK
то есть утила писалась сначала для своих целей?

Конечно. А как вы думаете, мне делать больше нечего, только бесплатные программы писать?
AlexeiK
реально в access не хватает com надстроек, типа vbe tools.....и так далее.

это я вообще не понял к чему сказано
AlexeiK
и вопрос, я просто не сталкивался, а для чего генерить скрипт структуры-это как то помогает воспритяю базы?

Если вы собираетесь перейти от хранения MDB к сборке базы по текстовому описанию, то вам сначала придется написать SQL-скрипт создания структуры - содержащий CREATE TABLE итп. Вот в этом и помогает такая функция программы. Можно найти и другие применения...
26 апр 05, 14:29    [1498448]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
ЛП
Guest
Так все таки SQL скрипт?
Тогда повторяю вопрос - что делаете с недоступными (через SQL) св-вами? Кладете на них?
26 апр 05, 14:32    [1498467]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Никита А. Зимин
Member

Откуда: Ижевск
Сообщений: 129
ЛП
Так все таки SQL скрипт?
Тогда повторяю вопрос - что делаете с недоступными (через SQL) св-вами? Кладете на них?

:) А у меня есть выбор?
На самом деле конечно программа интуитивно догадывается и подставляет нужные значения...
26 апр 05, 14:35    [1498489]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
ЛП
Guest
А у меня есть выбор?

Выбор есть всегда. Например генерить скрипт не на SQL, а на VBA с использованием ADOX/DAO. Так по крайней мере все имеющиеся св-ва заскриптуются.
26 апр 05, 14:41    [1498521]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Мшсещырф
Guest
про чек
общее
http://search.microsoft.com/search/results.aspx?st=b&na=88&View=en-US&qu=Create+check+constraint+in+Jet+database

на скл
http://support.microsoft.com/default.aspx?scid=kb;en-us;201888
26 апр 05, 14:48    [1498563]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Никита А. Зимин
Member

Откуда: Ижевск
Сообщений: 129
ЛП
Например генерить скрипт не на SQL, а на VBA с использованием ADOX/DAO. Так по крайней мере все имеющиеся св-ва заскриптуются.

Ну во-первых, скрипт на VBA уже делается в каком-то виде в ErWin.
А во-вторых - делайте конечно, флаг вам в руки! А мне были нужны SQL-скрипты, что я и сделал.
26 апр 05, 14:48    [1498564]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9900
Мшсещырф
про чек
общее
http://search.microsoft.com/search/results.aspx?st=b&na=88&View=en-US&qu=Create+check+constraint+in+Jet+database

на скл
http://support.microsoft.com/default.aspx?scid=kb;en-us;201888

Сенькс. Как создать Check было понятно, непонятно было как потом до него добраться. Но через OpenSchema вроде что-то получается.
26 апр 05, 14:52    [1498583]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Мшсещырф
Guest
Лох Позорный
Мшсещырф
про чек
общее
http://search.microsoft.com/search/results.aspx?st=b&na=88&View=en-US&qu=Create+check+constraint+in+Jet+database

на скл
http://support.microsoft.com/default.aspx?scid=kb;en-us;201888

Сенькс. Как создать Check было понятно, непонятно было как потом до него добраться. Но через OpenSchema вроде что-то получается.


вот все говорят, что мол нету у акцессу триггеров.

интересно, а близки по мощности табличный чек у кого-нибудь есть?
26 апр 05, 15:00    [1498624]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Мшсещырф
Guest
вот надыбалась заметка

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k/html/acintsql.asp

позволю себе цитату про чек оттуда

A check constraint is a powerful new SQL feature that allows you to add data validation to a table by creating an expression that can refer to a single field, or multiple fields across one or more tables. Suppose that you want to make sure that the amounts entered in an invoice record are always greater than $0.00. To do so, use a check constraint by declaring the CHECK keyword and your validation expression in the ADD CONSTRAINT clause of an ALTER TABLE statement.
ALTER TABLE tblInvoices
   ADD CONSTRAINT CheckAmount
   CHECK (Amount > 0)
Note The check constraint statement can only be executed through the Jet OLE DB provider and ADO; it will return an error message if used though the Access SQL View user interface. Also note that to drop a check constraint, you must issue the DROP CONSTRAINT statement through the Jet OLE DB provider and ADO. Also, if you do define a check constraint: (1) it won't show as a validation rule in the Access user interface (UI), (2) you can't define the ValidationText property so that a generic error message will display in the Access UI, and (3) you won't be able to delete the table through the Access UI or from code until you drop the constraint by using a DROP CONSTRAINT statement from ADO.The expression used to define a check constraint can also refer to more than one field in the same table, or to fields in other tables, and can use any operations that are valid in Microsoft Jet SQL, such as SELECT statements, mathematical operators, and aggregate functions. The expression that defines the check constraint can be no more than 64 characters long.
Let's suppose that you want to check each customer's credit limit before he or she is added to the Customers table. Using an ALTER TABLE statement with the ADD COLUMN and CONSTRAINT clauses, let's create a constraint that will look up the value in the CreditLimit table to verify the customer's credit limit. Use the following SQL statements to create the tblCreditLimit table, add the CustomerLimit field to the tblCustomers table, add the check constraint to the tblCustomers table, and test the check constraint.

CREATE TABLE tblCreditLimit (
   Limit DOUBLE)

INSERT INTO tblCreditLimit
   VALUES (100)

ALTER TABLE tblCustomers
   ADD COLUMN CustomerLimit DOUBLE

ALTER TABLE tblCustomers
   ADD CONSTRAINT LimitRule
   CHECK (CustomerLimit <= (SELECT Limit
      FROM tblCreditLimit))

UPDATE TABLE tblCustomers
   SET CustomerLimit = 200
   WHERE CustomerID = 1
Note that when you execute the UPDATE TABLE statement, you receive a message indicating that the update did not succeed because it violated the check constraint. If you update the CustomerLimit field to a value that is equal to or less than 100, the update will succeed.
26 апр 05, 16:41    [1499184]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
ЛП
Guest
2 Мшсещырф
Пардон, но в рамках этого топика обсуждение констрейнтов является полным оффтопом
Если есть желание - заведи новый топик.

З.Ы. Констрейнты не тянут на полноценную замену триггеров. Потому как:
а) sql у джета слабенький
б) VBA-шные и самописные функции могли бы помочь, но набор допустимых в констрейнте функций сильно ограничен (как и в DefaultValue или ValidationRule у отдельного поля).
26 апр 05, 16:47    [1499222]     Ответить | Цитировать Сообщить модератору
 BatchAccessGUI: GUI-версия BatchAccess  [new]
Никита А. Зимин
Member

Откуда: Ижевск
Сообщений: 129
Для любителей графического интерфейса - начал писать GUI-версию BatchAccess.
Скачать: http://www.russianit.ru/download/batchaccessgui.zip (36Кб) версия 0.3
Требования: .NET Framework 1.1, MDAC, Jet 4.0 (устанавливать MS Access НЕ требуется!)
Лицензия: AS IS, бесплатно, для некоммерческого использования.
11 июн 05, 17:46    [1615735]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
маленькое замечание по предыдущей версии (внимательно все не разглядывал)

Генерируемые скрипты на создание таблиц меняют исходный порядок
следования полей в таблицах. (Смотрел давно - не помню точно - по алфавиту
на память - поля в create table попадают.)

Может и несущественно, но все-же...
12 июн 05, 00:09    [1615946]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Никита А. Зимин
Member

Откуда: Ижевск
Сообщений: 129
Victosha
Генерируемые скрипты на создание таблиц меняют исходный порядок следования полей в таблицах. (Смотрел давно - не помню точно - по алфавиту на память - поля в create table попадают.)

Совершенно верно. ADOX возвращает список полей, отсортированный по алфавиту.
13 июн 05, 13:38    [1616914]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Yuraz.com
Member

Откуда:
Сообщений: 803
ПРограмма супер, то что надо, вам в feedback скинул благодарность :)
7 ноя 05, 16:28    [2043327]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
andron123
Member

Откуда: Москва
Сообщений: 108
Всех скептиков призываю успокоиться. Программа полезная.
У меня была задачка вылить из акцесса в файл таблицу, программа со своим досовским интерфейсом прекрасно справилась, а главное - не надо ничего мудрить. Для моей задачи экспорта прекрасно справилась программулина, автору спасибо.
11 янв 06, 15:04    [2243924]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Никита А. Зимин
Member

Откуда: Ижевск
Сообщений: 129
andron123
автору спасибо.

Всегда пожалуйста.

Не так давно выложил последнюю версию вместе с исходным кодом.
http://rsdn.ru/article/files/progs/BatchAccess.xml
11 янв 06, 15:11    [2243957]     Ответить | Цитировать Сообщить модератору
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16823
А я все думал, в каких выражениях исходный код попросить ! :-)
11 янв 06, 15:15    [2243985]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: BatchAccess: консольная утилита для управления базами MS Access  [new]
Бенедикт
Member

Откуда:
Сообщений: 2099
ЛП
З.Ы. Констрейнты не тянут на полноценную замену триггеров. Потому как:
а) sql у джета слабенький
б) VBA-шные и самописные функции могли бы помочь, но набор допустимых в констрейнте функций сильно ограничен (как и в DefaultValue или ValidationRule у отдельного поля).
Дело было "вечером", делать нечего, набрёл на старый топик, и старую тему отсутствия(?) триггеров.

Не соглашусь с пунктом б). Обратите внимание на вложенный SELECT, возвращающий значение. В нём можно использовать свои функции. Т.е.:
ALTER TABLE A ADD CONSTRAINT Trigger
   CHECK ((SELECT TriggerA(A.Id, A.F1, A.F2, A.F3) FROM DummySingleRowTable));
Public Function TriggerA(ByVal Id As Long, Optional F1, Optional F2, Optional F3) As Boolean
 'код
 TriggerA = True
End Function
Это уже ближе к триггеру.
28 сен 07, 03:49    [4727898]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить