|
|
|
| Подскажите, пожалуйста, как можно программно изменить структуру таблицы (например, добавить или переименовать поле), которая прилинкована к проекту Access, а физически расположения на MS SQL сервере. Access 2003, MS SQL Server 2005. | |
|
| |
|
|
|
| с переименованием просто
создаете запрос в котором прописываете алиасы
Например так
Select t.Data as [Дата], t.Time1 as [Время регистрации]
from имя присоединенной таблицы as t
и потом в своей базе используете уже ссылки не на присоединенную таблицу а на запрос
а вот необходимость программно добавлять поля в таблицу это признак неправильной схемы базы данных (ИМХО) | |
|
| |
|
|
|
| а щяс правильная сехма - єто та, которая работает ;))) | |
|
| |
|
|
|
| Согласна с Вами, что если приходится корректировать структуру данных, значит она была неправильна. Теперь я хочу с Вашей помощью ее улучшить. | |
|
| |
|
|
|
| открываете её через TableDef и меняете
точно уже не помню, но возможно ещё можно запросом ALTER TABLE
єто я про таблицы access
а на сервере - только если у вас права есть :) то запросами к серверу | |
|
| |
|
|
|
|
Public Function f_NewField()
Dim fld As Field
Dim Tbl As TableDef
Dim dbs As Database
Dim rez As Recordset
Set dbs = CurrentDb
Set rez = dbs.OpenRecordset("SELECT * FROM TblJobAddField WHERE IsDone = False;")
Do While Not rez.EOF
Set Tbl = dbs.TableDefs([rez]![TabName])
Set fld = Tbl.CreateField([rez]![FieldName])
'Определение свойств поля
fld.Type = ([rez]![FieldType])
If [rez]![FieldSize] & "" <> "" Then fld.Size = ([rez]![FieldSize])
fld.DefaultValue = Nz([rez]![FieldDefaultValue], "")
'Добавление
Tbl.Fields.Append fld
'Заполнение комментария
SetAccessProperty Tbl.Fields([rez]![FieldName]), "Description", dbMemo, [rez]![FieldMemo]
DoCmd.SetWarnings False
DoCmd.RunSQL ("UPDATE TblJobAddField SET IsDone = True, DateAddDone = Now() WHERE IdJobAddField = " & [rez]![IdJobAddField] & ";")
DoCmd.SetWarnings True
rez.MoveNext
Loop
End Function
|
Структура таблицы TblJobAddField понятна из текста функции.
Необходимость возникает при работающей базе, когда открыть серверную часть для изменения в рабочее время затруднительно, т.к. таблица занята.
Помещаем функцию в ночной запуск и ок! | |
|
| |
|
|
|
| Спасибо за помощь! Буду разбираться! | |
|
| |