Как из VB6 заполнить свойство "Подпись" в таблице БД Access

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

Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение miroslaw » 21.09.2009 (Пн) 17:04

Как из VB6 заполнить свойство "Подпись" для поля в таблице БД Access?
Я видел такой фрагмент кода, в котором используются некоторые свойства полей таблицы, но я не могу найти там нужного сойства.

Код: Выделить всё
Public Sub ADOXCreateTable()
'создание новой таблицы tblOrders с тремя полями:
'idOrder - последовательный счетчик, ключевое поле таблицы
'NumOrder - текстовое, 12 символов, с условием на значение и сообщением об ошибке
'dtOrder - дата, значение по умолчанию равно Date()
'проверка на существование таблицы и обработчик ошибок умышленно не включены для упрощения кода
Dim adoxCat As ADOX.Catalog
Dim adoxTbl As New ADOX.Table
Dim adoxCol As ADOX.Column
Set adoxCat = New ADOX.Catalog
'получаем ссылку на текущую БД
   adoxCat.ActiveConnection = CurrentProject.Connection

With adoxTbl
    .Name = "tblOrders" 'имя таблицы
    ' создаем новый объект Column (он же поле таблицы)
    Set adoxCol = New ADOX.Column
    With adoxCol
     .ParentCatalog = adoxCat 'ссылка на каталог
     .Name = "id" 'имя поля
     .Type = adInteger 'тип поля
     .Properties("AutoIncrement").Value = True ' будет счетчик
    End With
    .Columns.Append adoxCol, adInteger ' добавляем поле в коллекцию
    'добавляем новый индекс
    .Keys.Append "PrimaryKey", adKeyPrimary, "id"

    'аналогично для всех полей таблицы
    ' поле № заказа
    Set adoxCol = New ADOX.Column
    With adoxCol
     .ParentCatalog = adoxCat
     .Name = "NumOrder"
     .Type = adVarWChar  'тип поля
     .DefinedSize = 12
     .Properties("Description").Value = "№ заказа"
     'условие на значение
     .Properties("Jet OLEDB:Column Validation Rule").Value = "<>'' and not is null"
     'сообщение о нарушении условия на значение
     .Properties("Jet OLEDB:Column Validation Text").Value = "Укажите номер заказа"
    End With
    .Columns.Append adoxCol, adVarWChar

    ' поле дата заказа
    Set adoxCol = New ADOX.Column
    With adoxCol
     .ParentCatalog = adoxCat
     .Name = "dtOrder"
     .Type = adDate 'тип поля
     .Properties("Description").Value = "Дата заказа"
     .Properties("Default").Value = "date()" ' значение по умолчанию
    End With
    .Columns.Append adoxCol, adDate

  'добавляем таблицу в БД
   adoxCat.Tables.Append adoxTbl

End With
   Set adoxCat = Nothing
   Set adoxTbl = Nothing
   Set adoxCol = Nothing

End Sub

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение iGrok » 21.09.2009 (Пн) 17:52

Я, конечно, могу ошибаться. Но некоторое время назад этот вопрос поднимался. Ответ был простым - никак. Это поле доступно только из Access.

UPD: Я таки ошибаюсь. Тогда решили, что с ним нельзя работать через ADO. Но можно через DAO.
По крайней мере, его точно можно прочитать:
http://hiprog.com/forum/read.php?id_for ... theme=4824

Ну а дальше проверяй сам. )
label:
cli
jmp label

miroslaw
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 09.05.2002 (Чт) 18:54

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение miroslaw » 21.09.2009 (Пн) 21:45

iGrok
Спасибо, я конечно обязательно проверю.

А в MySQL или MS SQL свойство "Подпись" доступно?
Может быть ну его этот Access и лучше перейти на MySQL или MS SQL?

Дело конечно не только в этом ограничении ...

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение iGrok » 22.09.2009 (Вт) 1:02

miroslaw писал(а):А в MySQL или MS SQL свойство "Подпись" доступно?
Может быть ну его этот Access и лучше перейти на MySQL или MS SQL?

Дело конечно не только в этом ограничении ...

В MySQL его в принципе нет. Но есть поле Comment. До него можно достучаться соответствующими запросами.
В MS SQL - не помню.

А зачем тебе свойство "подпись" в MySQL или MS SQL? С Access я ещё могу понять, если ты программно создаёшь базу/табличку, которой потом будут пользоваться напрямую через Access. Или ты просто хочешь, чтобы у тебя была возможность задавать имена полей для программы?

Опять же не совсем понятно, каким образом ты так просто решаешь перейти с Access(файловой БД) на MySQL или MS SQL - сетевую..
label:
cli
jmp label

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение alibek » 22.09.2009 (Вт) 8:34

С Access на MSSQL перейти обычно несложно, если не используются перекрестные запросы, VBA-функции или альясы с предложения SELECT.
Lasciate ogni speranza, voi ch'entrate.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение iGrok » 22.09.2009 (Вт) 13:06

alibek писал(а):С Access на MSSQL перейти обычно несложно, если не используются перекрестные запросы, VBA-функции или альясы с предложения SELECT.

Если ничего специфического не используется, то и на MySQL перейти не сложно. Я скорее про различия именно файловой и сетевой БД. Что MySQL, что MS SQL нужен сервер. Пусть даже Express, ставящийся не тот же комп, что и программа. Это всё равно лишний гемор по сравнению с тасканием за собой файлика.

Другой вопрос, если пишется корпоративный софт. Тогда и сервер поставить не проблема.
label:
cli
jmp label

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение Antonariy » 22.09.2009 (Вт) 14:43

iGrok писал(а):В MS SQL - не помню.

sp_addextendedproperty
fn_listextendedproperty
Лучший способ понять что-то самому — объяснить это другому.

Evans
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 22.08.2008 (Пт) 11:27

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение Evans » 25.09.2009 (Пт) 12:34

Код: Выделить всё
Sub AddFieldCaption()
Dim dbX As DAO.Database
Dim tblX As DAO.TableDef
Dim fldX As DAO.Field
Dim prpX As DAO.Property

Set dbX = OpenDatabase("d:\exp_db.mdb")
Set tblX = dbX.TableDefs("tblBdOptions")
Set fldX = tblX.Fields("PathDoc")

Set prpX = fldX.CreateProperty("Caption", dbText, "Новая подпись")

fldX.Properties.Append prpX
fldX.Properties.Refresh
End Sub


Но если подпись уже есть, возникнет ошибка. Поэтому нужно сначала проверить существование Property с именем Caption в нужном поле.
А вообще, если не секрет, нафига такое извращение с подписью?

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение Денис » 25.09.2009 (Пт) 12:50

Код: Выделить всё
fldX.Properties.Append prpX


Evans писал(а):Но если подпись уже есть, возникнет ошибка.


Предполагаю, что если подпись уже есть, можно будет задействовать метод X.Properties.Edit
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Evans
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 22.08.2008 (Пт) 11:27

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение Evans » 25.09.2009 (Пт) 23:19

Денис писал(а):[code]
Предполагаю, что если подпись уже есть, можно будет задействовать метод X.Properties.Edit


Неверное предположение. Нужно просто присвоить новое значение:
fldX.Properties("Caption") = "Подпись ещё новее"

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение iGrok » 26.09.2009 (Сб) 0:14

Evans писал(а):А вообще, если не секрет, нафига такое извращение с подписью?

Не отвечает он давно, так что, видимо, секрет. ))
label:
cli
jmp label

miroslaw
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 09.05.2002 (Чт) 18:54

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение miroslaw » 26.09.2009 (Сб) 21:14

iGrok писал(а):
Evans писал(а):А вообще, если не секрет, нафига такое извращение с подписью?

Не отвечает он давно, так что, видимо, секрет. ))


Большое Вам спасибо за добрые и полезные советы!
Секрета особого нет в моем вопросе. Хотя, конечно, постановка такого вопроса противоречит логике реляционных баз. В процессе создания окончательного образа базы данных имеется несколько промежуточных этапов слияния и разъединения нескольких десятков таблиц. На каждом таком этапе начальство должно внести некоторые коррективы в заполнение строк и столбцов. Эти действия они выполняют вручную в самих таблицах и без всякого нормального интерфейса. Но при создании из запросов новых таблиц, названия солбцов не наследуются и выглядят как FP1,FP2... Руководство в гробу видело такие названия и требует, чтобы столбцы назывались по человечески.
Я, конечно предвижу совершенно справедливые возражения с Вашей стороны, что все это можно сделать совсем по другому и овцы будут целы, и начальство будет довольно. Но это одноразовая вспомогательная работа и создавать нормальный программный продукт, на мой непросвященный взгляд, не стоит.
Прошу меня извинить за такое убогое применение средств VB6 и Access.
Но иногда приходится сознательно делать и такую работу...

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как из VB6 заполнить свойство "Подпись" в таблице БД Access

Сообщение iGrok » 27.09.2009 (Вс) 0:36

miroslaw писал(а):Но иногда приходится сознательно делать и такую работу...

Бывает.
Ну в таком случае вариант с использованием DAO - более чем подходит. )
label:
cli
jmp label


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 217

    TopList  
cron